进程(Process)
绪论: OS的基本特性是并发与共享,即在系统中同时存在几个相互独立的程序, 他们交叉地运行,并共享资源。 存在资源的竞争,程序之间的合作和协同 ,程序之间的通信这几个问题。
为了解决以上问题, 用程序的概念已经不能描述程序在内存中运 用程序的概念已经不能描述程序在内存中运 行的状态行的状态 ,必须引入新的概念--进程
进程的概念
1.进程的定义
进程是一个可并发执行的、具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和调度的基本单位。(由1978年,我国操作系统的研究人员在全国操作系统学术会议上给出的定义)
程序的定义
程序是一个在时间上严格按先后次序操作实现算法功能的指令序列,且程序本身是静态的。
2.进程的结构
我们把操作系统中更具体、更形象的进程称为进程实体。进程实体和进程一般不严格区分(就好像进程是一个抽象的统一概念,而进程实体是一个实例)
通常的程序是不能并发执行的。为了使进程及它所要处理的数据能独立运行,应为之配置一个数据结构,用来存储程序向前推进的执行过程中所要记录的有关运行信息,即该进程动态执行的相关资料。这个数据结构称为进程控制块,即PCB(Process Control Block)。由此得到:
进程实体 = 程序段 + 相关数据段 + PCB
程序段:用户所要执行的语句序列(不可缺少的)
相关数据段:用户所要处理的数据,数据量可大可小。需要注意的是,有些进程的数据是包含在程序中的,这时就没有相关数据段。
PCB:包含进程执行的相关资料,只有PCB才能了解进程的执行情况。
进程实体结构示意图
3.进程的特征
(1)动态性。进程的实质是程序的一次执行。也表明进程是有生命期的,具有“创建--运行--消亡”的过程。
(2)并发性。多个进程实体可以在一段时间内能够并发执行(这就是引入进程的目的,以提高系统资源的利用率)
(3)独立性。每个进程都是一个独立运行的基本单位。
(4)异步性。各进程按各自独立的、不可预知的速度向前推进。
(5)结构性。结构上看,每个进程都由程序段、数据段以及PCB这三个部分组成。
下面说下程序的概念
- 程序的顺序执行(单道程序环境)
(1)顺序性。CPU按程序的顺序严格执行程序的操作,每个操作都必须在前一个操作结束后才能开始。
(2)封闭性。程序运行时独占全机资源。
(3)可再现性。程序运行的结果仅与初始条件有关,而与运行的时间和速度无关。
2. 程序的并发执行(多道程序环境)
在同一时刻,有的程序占用CPU运行、有的程序通过外部设备传递数据。从宏观上看是多个程序同时执行,从微观上看它们是在交替执行(对单个CPU而言)。
在多道程序设计环境下,多个程序可以在单CPU上交替执行,也可以在多个CPU上并发执行。程序的并发执行通常是指多个程序在单个CPU上的交替执行。
特性
(1)间断性。多个程序在并发执行时共享系统资源,导致并发执行的程序之间产生了相互制约的关系。比如某个程序2完成输入后,如果程序1尚未完成,则程序2也无法继续执行下去,必须暂停程序2执行。所以存在“执行--暂停--执行”这种间断性规律。
(2)失去了封闭性。多个程序共享系统中所有资源。
(3)不可再现性。指并发执行的运行结果是不确定的,还指程序的执行速度和运行轨迹是不确定的。
4.进程与程序的区别
程序就像是一个乐谱,任何时候你都可以翻阅它,但乐谱本身是静态的。进程则可以看作依照乐谱的一次演奏,这个演奏有开始有结束(具有生命期),并随着时间的流逝,演奏的音乐不复存在;也就是说,这个演奏过程本身是动态的,即使是重新演奏这个乐谱,也绝对不是刚刚逝去的那段音乐(不是刚刚执行过的进程,而是一个新的进程)。
(1)进程是动态的,程序是静态的。程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序 通常对应着文件、静态和可以复制。
(2)进程是暂时的,程序是永久的。进程是一个状态变化的过程,程序可长久保存。
(3)进程与程序的组成不同。进程的组成包括程序、数据和进程控制块(即进程状态信息)。
(4)进程与程序的对应关系 。通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
5.进程控制块
1.产生的原因
操作系统是如何获取各个进程的状态信息,以便CPU在多个进程之间交替执行,因此,操作系统需要为进程定义一种能够描述和控制进程运行的数据结构,就是进程控制块,即PCB。
它是进程存在的唯一标志。PCB种存放着操作系统所需要的用于描述进程当前情况的全部描述信息,以及控制进程运行的全部控制信息和相关的资源信息。
2.进程控制块中的信息
不同的操作系统对进程管理的机制不同,但是大致可以包含以下信息。
(1)进程标识符。每个进程都必须有唯一的进程标识符,也称进程的内部名。
(2)进程的当前状态。表明当前进程当前所处的状态。
(3)进程中的程序段与数据段地址。用于将PCB和与之对应的进程在内或外存的程序段及数据段联系起来。
(4)进程资源清单。用于指出资源的需求、分配和控制信息。
(5)进程优先级。一般用一个整数表示进程优先程度。
(6)CPU现场保护区。当进程因某种原因放弃使用CPU时,将当时的CPU各种状态信息保存起来(暂存于内存中操作系统的内核区),以便之后再次调度时恢复。
(7)进程同步与通信机制。用于实现进程之间的互斥、同步和通信所需的信号量。
(8)PCB队列指针或链接字。
(9)与进程相关的其他信息。
3.进程控制块的组织方式
(1)线性表方式。无论进程的状态如何,将所有的PCB连续地存放在内存的系统区(内核区),多用于进程数目不多的情况,如下图。
(2)链接表方式。系统按照进程的状态将进程的PCB链成队列。这种方式只是方便对同类PCB进行管理,对查找某一个进程的PCB比较麻烦,只适用与小系统中进程数比较少的情况。
(3)索引表方式。系统按照进程的状态分别建立就绪索引表、阻塞索引表等,通过索引表来管理系统中的进程。如下图。