进程是什么概念(什么是进程,进程有哪些状态)

http://www.itjxue.com  2023-02-22 22:45  来源:未知  点击次数: 

进程的基本概念

一、进程的引入

多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以便是和反映系统中的情况:

1. 程序是一个静态的概念

程序是完成某个功能的指令集和。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。

2. 程序概念不能反映系统中的并行特性

例如:两个C语言源程序由一个编译程序完成编译,若用程序概念理解,内存中只有一个编译程序运行(两个源程序看作编译程序的输入数据),但是这样无法说明白内存中运行着两个任务。程序的概念不能表示这种并行情况,反映不了他们活动的规律和状态变化。就像不能用菜谱(程序)代替炒菜(程序执行的过程)一样(这句话我稍微修改了一下,感觉应该是这样表诉才对)。

二、进程的定义

进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位。

三、进程与程序的差别

1. 进程是一个动态的概念

进程是程序的一次执行过程,是动态概念。

程序是一组有序的指令集和,是静态概念。

2. 不同的进程可以执行同一个程序

区分进程的条件:所执行的程序和数据集合。

两个进程即使执行在相同的程序上,只要他们运行在不同的数据集合上,他们也是两个进程。例如:多个用户同时调用同一个编译程序编译他们编写的C语言源程序,由于编译程序运行在不同的数据集合(不同的C语言源程序)上,于是产生了一个个不同的进程。

3. 每个进程都有自己的生命周期

当操作系统要完成某个任务时,它会创建一个进程。当进程完成任务之后,系统就会撤销这个进程,收回它所占用的资源。从创建到撤销的时间段就是进程的生命期。

4. 进程之间存在并发性

在一个系统中,同时会存在多个进程。他们轮流占用CPU和各种资源。

5. 进程间会相互制约

进程是系统中资源分配和运行调度的单位,在对资源的共享和竞争中,必然相互制约,影响各自向前推进的速度。

6. 进程可以创建子进程,程序不能创建子程序

7. 从结构上讲,每个进程都由程序、数据和一个进程控制块(Process Control Block, PCB)组成

四、进程的重要特征

1. 动态特征:进程对应于程序的运行,动态产生、消亡,在其生命周期中进程也是动态的。

2. 并发特征:任何进程都可以同其他进程一起向前推进。

3. 独立特征:进程是相对完整的调度单位,可以获得CPU,参与并发执行。

4. 交往特征:一个进程在执行过程中可与其他进程产生直接或间接关系。

5. 异步特征:每个进程都以相对独立、不可预知的速度向前推进。

6. 结构特征:每个进程都有一个PCB作为他的数据结构。

进程最基本的特征是并发和共享特征。

五、进程的状态与转换

1. 进程的三种基本状态

a. 运行状态:获得CPU的进程处于此状态,对应的程序在CPU上运行着。

b. 阻塞状态:为了等待某个外部事件的发生(如等待I/O操作的完成,等待另一个进程发来消息),暂时无法运行。也成为等待状态。

c. 就绪状态:具备了一切运行需要的条件,由于其他进程占用CPU而暂时无法运行。

2. 进程状态转换

a. 运行状态 === 阻塞状态:例如正在运行的进程提出I/O请求,由运行状态转化为阻塞状态。

b. 阻塞状态 === 就绪状态:例如I/O操作完成之后,由阻塞状态转化为就绪状态。

c. 就绪状态 === 运行状态:例如就绪状态的进程被进程调度程序选中,分配到CPU中运行,由就绪状态转化为运行状态。

d. 运行状态 === 就绪状态:处于运行状态的进程的时间片用完,不得不让出uCPU,由运行状态转化为就绪状态。

3. 进程的类型

a. 系统进程:操作系统用来管理资源的进程,当系统进程处于运行态时,CPU处于管态,系统之间的关系由操作系统负责。

b. 用户进程:操作系统可以独立执行的的用户程序段,当用户进程处于运行态时,CPU处于目态,用户进程之间的关系由用户负责。

六、进程控制块

1. 进程的三个组成部分

a. 程序

b. 数据

c. 进程控制块(PCB):为了管理和控制进程,系统在创建每个进程时,都为其开辟一个专用的存储区,用以记录它在系统中的动态特性。系统根据存储区的信息对进程实施控制管理。进程任务完成后,系统收回该存储区,进程随之消亡,这一存储区就是进程控制块。

PCB随着进程的创建而建立,撤销而消亡。系统根据PCB感知一个进程的存在,PCB是进程存在的唯一物理标识(这一点可以类比作业控制块JCB)。

2. 进程控制块的内容

PCB在不同的语言中,可能用不同的数据结构表示。为了系统管理和控制进程方便,系统常常将所有进程的PCB存放在内存中系统表格区(这是什么区?不懂,待我仔细查查),并按照进程内部标号由小到大顺序存放。

整个系统中各进程的的PCB集合可用数组表示。这时进程内部标号可以与数组元素下标联系。

各系统预留的PCB空间往往是固定的,如UNIX系统中规定进程数量不超过50个(这一点我有点怀疑)。

操作系统不同,PCB的格式、大小及内容也不尽相同。一般的,应该包含如下四个信息。

a. 标识信息:进程名。

b. 说明信息:进程状态、程序存放位置。

c. 现场信息:通用寄存器内存、控制寄存器内存、断点地址。

d. 管理信息:进程优先数、队列指针。

七、进程控制块的组织

系统中,有着许多不同状态的进程,处于阻塞状态的进程阻塞原因各不相同,为了便于调度和管理,常将进程控制块PCB用适当的方法组织起来。

1. 线性结构

把所有不同状态的进程的PCB组织在一个表格中。

最简单,适用于进程数目不多的操作系统,如UNIX系统,缺点是调用时,往往需要查询整个PCB表,时间复杂度略高。

2. 索引结构

分别把具有不同状态的进程PCB组织在同一个表中,于是有就绪进程表、运行进程表(多机系统中,还有现在的多核系统应该也有吧)以及各种等待事件的阻塞进程表。

系统中的一些固定单元分别指出各表的起始地址。

3. 链式结构

采用队列形式时,每个进程的PCB中要增加一个链指针表项,指向队列的下一个PCB起始地址。

进程是什么意思

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

什么是进程 为什么

进程是操作系统中最基本、重要的概念,是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。狭义上讲,进程是正在运行的程序的实例;广义上讲,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统进行资源分配和调度、动态执行的基本单元,是操作系统结构的基础,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。其概念主要有两点:(1)进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域、数据区域和堆栈。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。(2)进程是一个“执行中的程序”。只有在操作系统、处理器执行程序时,它才能成为一个活动的实体,我们称其为进程。从理论角度看,进程是对正在运行的程序过程的抽象;从实现角度看,它是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。

一、进程具有以下特点:

(1)动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生、动态消亡的。

(2)并发性:任何进程都可以与其他进程一起并发执行。

(3)独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。

(4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

(5)结构特征:进程由程序、数据和进程控制块三部分组成。

二、进程、线程和程序的联系:

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。此外多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程。

三、进程和程序的区别:

(1)程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念,而进程是程序在处理机上的一次执行过程,它是一个动态的概念。

(2)程序可以作为一种软件资料长期存在,而进程是有一定生命期的。

(3)程序是永久的,进程是暂时的。

(4)进程更能真实地描述并发,而程序不能。

(5)进程是由进程控制块、程序段、数据段三部分组成。

(6)进程具有创建其他进程的功能而程序没有。

(7)在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。

四、进程具有的三种基本状态

由于进程在执行过程中具有动态性和异步性,因此也就决定了进程可能具有多种状态。

(1)就绪状态(Ready):进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。

(2)运行状态(Running):进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。

(3)阻塞状态(Blocked):由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。

五、创建进程的事件

在多道程序环境中,只有作为进程时才能在系统中运行。因此,为了让程序能运行,就必须为它创建进程。一个进程去创建另一个进程的典型事件,可以有以下四类:

(1) 用户登录:在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中。

(2)作业调度:在批处理系统中,当作业调度程序按照一定的算法调度到某作业时,便将该作业装入到内存,为它分配必要的资源,并立即为它创建进程,再插入到就绪队列中。

(3) 提供服务:当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务,例如,用户程序要求进行文件打印,操作系统将为它创建一个打印进程,这样,不仅可以使打印进程与该用户进程并发执行,而且还便于计算出为完成打印任务所花费的时间。

(4) 应用请求:在上述三种情况中,都是由系统内核为它创建一个新进程,而这一类事件则是基于应用进程的需求,由它创建一个新的进程,以便使新进程以并发的运行方式完成特定任务。

六、进程的创建过程

一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语create()按下述步骤创建一个新进程。

(1) 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。

(2) 为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。显然,此时操作系统必须知道新进程所需要的内存大小。

(3) 初始化进程控制块。PCB的初始化主要包括:初始化标识信息,将系统分配的标识符和父进程标识符,填入新的PCB中;初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶;初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求。

(4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中。

七、引起进程终止的事件

(1)正常结束:在任何计算机系统中,都应该有一个表示进程已经运行完成的指示。例如,在批处理系统中,通常在程序的最后安排一条Hold指令或终止的系统调用。当程序运行到Hold指令时,将产生一个中断,去通知OS本进程已经完成。

(2)异常结束:在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有:越界错误,保护错,非法指令,特权指令错,运行超时,等待超时,算术运算错,I/O故障。

(3)外界干预:外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。这些干预有:操作员或操作系统干预、父进程请求、父进程终止。

八、进程的终止过程

如果系统发生了上述要求终止进程的某事件后,OS便调用进程终止原语,按如下过程去终止指定的进程。

(1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。

(2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真。用于指示该进程被终止后应重新进行调度。

(3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。

(4)将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。

(5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。

九、阻塞唤醒

1、引起进程阻塞和唤醒的事件

(1)请求系统服务:当正在执行的进程请求操作系统提供服务时,由于某种原因,操作系统并不立即满足该进程的要求时,该进程只能转变为阻塞状态来等待,一旦要求得到满足后,进程被唤醒。

(2)启动某种操作:当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成,该操作完成后,将该进程唤醒。

(3)新数据尚未到达:对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据才能运行以对数据进行处理,则是要其所需数据尚未到达,该进程只有(等待)阻塞,等到数据到达后,该进程被唤醒。

(4)无新工作可做:系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来,新任务到达后,该进程被唤醒。

2.进程阻塞过程

正在执行的进程,当发现上述某事件后,由于无法继续执行,于是进程便通过调用阻塞原语block()把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞(等待)队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU环境。

3. 进程唤醒过程

当被阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。

(责任编辑:IT教学网)

更多

推荐网站经济文章