第二章 进程管理

news2025/1/11 8:18:59

2.1  进程的引入

2.1.1程序的顺序执行

1.程序的顺序执行

程序是人们要计算机完成特定功能的一些指令序列,是一个按严格次序、顺序执行的操作序列,是一个静态的概念。

如:有一个程序,要求先输入数据,再做相应的计算,最后输出结果并用打印机打印。分别用I、C、P代表以上3个程序段,这样,上述3个程序段的执行顺序为:
                                                    I→C→P。

2.程序顺序执行时的特征
(1)顺序性。
       处理机的操作严格按照程序所规定的顺序执行,即只有前一个程序段完成才执行下一个程序段,上一条指令完成再去执行下一条指令。
(2)封闭性。
       程序是在封闭环境下运行的。
       程序运行时独占全机资源,资源的状态除初始状态外,只有该程序本身才能改变它。
       程序执行的最终结果由给定的初始条件决定,不受外界因素的影响。
(3)可再现性。
       顺序执行的最终结果可再现。
       也就是说它与执行速度执行的时刻无关,只要输入的初始条件相同,无论何时重复执行该程序,结果都是相同的。

2.1.2  程序的并发执行及其特征

1.并发执行的概念
        所谓程序的并发性,是指多道程序在同一时间间隔内同时发生。
        程序的并发执行可总结为:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的一种执行方式。

2.程序并发执行时的特征

(1)间断性
        程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使这些并发执行的程序之间,形成了相互制约的关系。相互制约将导致并发程序具有“执行——暂停——执行”这种间断性的活动规律。

(2)失去封闭性
        程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个运行的程序来改变,致使程序的运行失去了封闭性。例如,当处理机被某个程序占有时,另一程序必须等待。
(3)不可再现性
        在并发环境下,同一个程序执行多次,执行的结果可能不同。
例如,有两个循环程序A和B,它们共享一个变量N,初值为0。
程序A():                                      程序B():
{do                                                      {do
     N=N+1;                                                 print(N);
     While(1)                                                While(1)
}                                                           }
   程序A和程序B以不同的速度运行,出现的结果可能不同。例如,当程序A和程序B运行的速度相近时,打印的结果为1、2、3、…;而当程序A的执行速度是程序B的2倍时,打印的结果可能是2、4、6…。

小结:引入进程的意义

        从上例来看,程序在并发执行时,由于失去了封闭性,其计算结果与并发程序的执行速度有关,从而使程序失去了可再现性,程序经过多次执行后,虽然执行时的环境和初始条件相同,但得到的结果却各不相同。
        所以,从上面的讨论看,由于程序的顺序性、间断性和不可再现性,用程序作为描述其执行过程以及共享资源的基本单位是不合适的。
        这就需要一个既能描述程序的执行过程,又能用来共享资源的基本单位,这个基本单位被称为进程。

2.1.3  进程的定义与特征

1.进程的定义
     进程是操作系统中最基本、最重要的概念之一。人们对进程下过许多定义。现列举其中的几种:
 (1)进程是程序的一次执行。
 (2)进程是可以和别的进程并发执行的计算。
 (3)进程就是一个程序在给定活动空间和初始条件下,在一个处理机上的执行过程。
 (4)进程是程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单位。
 (5)进程是动态的,有生命周期的活动。内核可以创建一个进程,最终将由内核终止该进程使其消亡。
      综上观点定义为:“并发执行的程序在一个数据集合上的执行过程”       【运行着的程序】

补充:进程和程序之间的关系

       进程和程序是两个完全不同的概念,但又有密切的联系。程序是规定的工作流程,进程则是实际的工作过程
       它们之间的主要区别是:
    (1)程序是静态的概念,而进程则是程序的一次执行过程。它是动态的概念
    (2)进程是一个能独立运行的单位,能与其它进程并发执行;而程序是不能作为一个独立运行的单位而并发执行的。
    (3)程序和进程无一一对应的关系
    (4)各个进程在并发执行过程中会产生相互制约关系,而程序本身是静态的,不存在这种异步特征

2.进程的特征

从进程与程序的区别可以看出,进程具有如下特征:
(1)动态性
        动态性是进程最基本的特性。进程由创建而产生,由调度而执行,因得不到资源而暂停执行,以及因撤消而消亡
(2)并发性
       这是指多个进程实体,同存于内存中,能在一段时间段内同时执行。并发性是进程的重要特征,同时也是操作系统的重要特征。提高并发性,可以提高系统的效率。
(3)独立性
       进程是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
(4)异步性
        这是指进程按各自独立的、不可预知的速度向前推进;或者说,进程按异步方式运行
(5)结构特征
        从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成,也称这三部分为进程映像。

2.1.4  进程的基本状态及转换

    进程的动态性由它的状态及状态转换来体现的。
1.进程的三个基本状态
     进程通常至少有三种基本状态:
 (1)就绪状态(ready)
       进程运行所需的外部条件满足,但因为其它进程已占用CPU,所以暂时不能运行。
 (2)执行状态(running)
       外部条件满足,进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态。
  (3)阻塞状态(blocked)
       进程因资源无法满足而等待资源,暂时不能运行的状态,称为阻塞状态,也称为等待状态
       系统中处于阻塞状态的进程可能有多个,通常将它们排成一个队列,也有的系统则根据阻塞原因的不同将这些进程排成多个队列

2.进程状态的转换

(1)就绪 ----> 执行
      对于处于就绪状态的进程,在调度程序为之分配了处理机之后,该进程便可执行。相应地,它由就绪状态转变为执行状态。
(2)执行 ----> 就绪
       正在执行的进程(执行状态)也称为当前进程,如果因分配给它的时间片已用完而被暂停执行时,该进程便由执行状态又回到就绪状态
(3)执行 ----> 阻塞
       一个处在执行状态的进程,如果因等待资源而使进程的执行受阻,使之无法继续执行,该进程将由执行状态转变为阻塞状态
(4)阻塞 ----> 就绪
       一个处于阻塞状态的进程,当它所需的外部事件满足,它应由阻塞状态变为就绪状态

补充:引入挂起状态时的进程状态------挂起 、激活

       除了上述3种基本状态以外,很多系统中又引入了挂起状态。        
       所谓挂起状态,实际上就是一种静止的状态。一个进程被挂起后,不管它是否在就绪状态,系统都不分配给它处理机。
       处于挂起状态的进程要想重新进入到活动状态,必须被激活(即转换为活动状态),然后才有可能执行。
      因此在引入挂起状态后,进程之间的状态转换除了四种基本状态转换以外,又增加了以下几种:
 (1)活动就绪—挂起—静止就绪。
 (2)活动阻塞—挂起—静止阻塞。
 (3)静止就绪—激活—活动就绪。
 (4)静止阻塞—激活—活动阻塞。

 

 

 

        

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

platform_get_resource=NULL内核源码分析

platform_get_resourceNULL内核源码分析 文章目录 platform_get_resourceNULL内核源码分析1.第一步,我们看一下什么情况下platform_get_resource函才会返回NULL,也就是没有获取到资源。2.第二步,因为myled这个设节点会转成了platform_device,…

suricata中DPDK收发包线程模型和配置说明

《基于DPDK收包的suricata的安装和运行》中已经讲过基于DPDK收发包的suricata的安装过程,今天我们来看一下,suricata中DPDK的收发包线程模型以及相关的配置。 1、收发包线程模型: 通过分析代码,suricata中DPDK收发包线程模型如下…

C高级 day03

1.编写一个名为myfirstshell.sh的脚本,它包括以下内容。 1、包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HOM…

采药 DP 裸01背包 java

&#x1f351; 采药 import java.util.*;class Main{static int N 1010;static int[] f new int[N];public static void main(String[] aaa){Scanner sc new Scanner(System.in);int m sc.nextInt();int n sc.nextInt();for(int i 0; i < n; i){int v sc.nextInt()…

s2021ss62找规律

代码&#xff1a; #include<bits/stdc.h> using namespace std; int n,m,ans; int main() {cin>>n>>m;for(int i1;i<n-1;i)ansi;cout<<ansm;return 0; }

一文了解支付卡行业数据安全标准(PCI DSS 4.0)新要求

在接下来不到一年的时间里&#xff0c;将有越来越多的企业要遵守支付卡行业数据安全标准 (PCI DSS) 4.0 版的多项新要求。 关于 PCI DSS PCI DSS 包含 12 项保护支付卡数据的要求&#xff0c;在过去十年中都没有更新。但经过三年的商讨&#xff0c;现在已经进行了重大改革。 …

JavaScript基础语法篇超详解

目录 一. 什么是JavaScript? 概念 JavaScript可以做的事情 JavaScript和HTML, CSS之间的关系 JavaScript运行过程 二. 基础语法篇 第一个JavaScript程序 JS的书写形式 JS的代码注释 输入输出 变量的使用 变量命名 数据类型 变量的声明和使用 理解动态类型 JS变量类型 JS数组…

一百一十一、Hive——从HDFS到Hive的数据导入(静态分区、动态分区)

一、分区的定义 分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹&#xff0c; Hive 中的分区就是分目录 &#xff0c;把一个大的数据集根据业务需要分割成小的数据集。 在查询时通过 where 子句中的表达式选择查询所需要的指定的分区&#xff0c;这样的查询效率 会…

【教程】手把手教你用Clion进行STM32开发【如何优雅の进行嵌入式开发】

通过Clion进行嵌入式开发 一、工具安装 1、安装Clion 因为众所周知的原因&#xff0c;Clion的安装就不解释了&#xff0c;有需要的同学自行检索 2、安装STM32CubeMX 正常去官网下载最新版的安装就行了&#xff1a;STM32CubeMX - STM32Cube initialization code generator …

2673. 使二叉树所有路径值相等的最小代价(dfs+bfs)

题目描述 评论 (23) 题解 (54) 提交记录 2673. 使二叉树所有路径值相等的最小代价 难度 中等 14 给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编号从 1 到 n 。根节点编号为 1 &#xff0c;树中每个非叶子节点 i 都有两个孩子&#xff0c;分别是左孩子 2 …

image adaptive 3dlut based on deep learning

文章目录 image adaptive 3dlut based on deep learning1. Learning Image-adaptive 3D Lookup Tables for High Performance Photo Enhancement in Real-time2. CLUT-Net: Learning Adaptively Compressed Representations of 3DLUTs for Lightweight Image Enhancement2.1 3d…

平安大视野解读主动健康:以运动改变生命轨迹,以名医权益为健康保驾护航

“每个人都会老&#xff0c;这不可避免&#xff0c;但是能不能老的迟一点&#xff1f;让我们能够活到一百岁还能够运动&#xff0c;不需要别人照顾&#xff0c;这是最大的成功&#xff1b;而科学运动是最关键的方式。”5月6日&#xff0c;在平安私人银行联合平安健康举办的“平…

Echarts使用本地JSON文件加载不出图表的解决方法以及Jquery访问本地JSON文件跨域的解决方法

前言 最近需要做一个大屏展示&#xff0c;需要用原生html5cssjs来写&#xff0c;所以去学了一下echarts的使用。在使用的过程中难免碰到许多BUG&#xff0c;百度那是必不可少的&#xff0c;可是这些人写的牛头不对马嘴&#xff0c;简直是标题党一大堆&#xff0c;令我作呕&…

使用pytest和allure框架实现自动化测试报告优化

目录 -x出现一条测试用例失败就退出测试 生成测试报告json pytest&#xff1a; 需要安装pytest和pytest-html(生成html测试报告&#xff09; pip install pytest 和 pip install pytest-html 命名规则 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头…

DeepLab v1

SEMANTIC IMAGE SEGMENTATION WITH DEEP CONVOLUTIONAL NETS AND FULLY CONNECTED CRFS 基于深度卷积网络和全连通CRFS的语义图像分割 ABSTRACT 深度卷积神经网络&#xff08;DCNNs&#xff09;最近在高级视觉任务中表现出了最新的性能&#xff0c;如图像分类和物体检测。这…

Docker | docker安装MySQL

知识目录 一、前言二、安装Docker镜像2.1 什么是docker2.2 为什么安装docker2.3 安装docker 三、Docker安装MySQL3.1 常用docker命令3.2 docker安装MySQL 四、结语 一、前言 大家好&#xff01;这篇文章主要讲解 如何在Centos7中安装Docker以及Docker安装MySQL:5.7.42 。 ✨本…

深度学习模型复杂度评估(时间复杂度、空间复杂度)

目录 1、两个指标 2、复杂度对模型的影响 1、两个指标 时间复杂度和空间复杂度是衡量一个算法的两个重要指标,用于表示算法的最差状态所需的时间增长量和所需辅助空间. 在深度学习神经网络模型中我们也通过&#xff1a; 计算量/FLOPS&#xff08;时间复杂度&#xff09;即…

VS Code 常用插件推荐

VS Code 常用插件推荐 1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 适用于 VS Code 的中文&#xff08;简体&#xff09;语言包 2. Auto Rename Tag 自动关闭标签&#xff0c;写 html 标签的时候可以重命名标签名。 现在 vscode 已经内置了&…

大项目内训 2023.5.11

目录 分别介绍一下消息处理相关的MQ、WebSocket、分布式事务 介绍一下异步消息传输 如何配置websocket ​编辑 oatpp是什么&#xff1f; cinatra是什么&#xff1f; 我们教育最大的缺失, 是缺乏阅读、写作和逻辑训练 佳作推荐 分别介绍一下消息处理相关的MQ、WebSocket、…

CTF-PWN学习-为缺少指导的同学而生

很抱歉&#xff0c;博主也是个PWN的入门者。PWN的入门不可能是无痛的。能做到的只是减少一点初学者的痛苦。这篇博客会长期维护&#xff0c;也会越来越好。后期还可能会在B站出视频&#xff08;博主社恐&#xff0c;要迈出这一步可能需要好长时间&#xff09;。 PWN是个啥&…