进程状态转换图进程管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程状态转换图进程管理2011-06-28
进程状态转换图进程管理进程状态转换图进程管理
进程管理
要点
?基础:进程描述及控制
?策略:进程调度
?实现:互斥与同步
?避免:死锁与饥饿
?解决:几个经典问题
?关于:进程通信
进程的概念
?现代操作系统的重要特点:程序的并发执行及系统所拥有的资源被共享和系统的用户随机地使用。

?操作系统的重要任务之一:使用户充分、有效地利用系统资源。

程序顺序执行
?程序:源代码、目标程序和可执行程序
?程序执行:编辑、编译、链接、执行
?程序的结构:顺序结构、分支结构和循环结构。

进程的引入(一)
?前趋图:是一个有向无环图。

图中的每个结点用于表示一条语句、一个程序段或进程;结点间的有向边表示在两个结点之间存在的偏序或前趋关系。

进程的引入(二)
?程序顺序执行:是指若干个程序或程序段之间必须按照某种先后次序逐个执行,仅当前一项操作执行完成后,才能执行后继操作。

?程序顺序执行时具有以下特征:
(1)顺序性
(2)封闭性
(3)确定性
(4)可再现性
进程的引入(三)
?多道程序系统中程序执行环境的变化
在许多情况下,需要计算机能够同时处理多个具有独立功能的程序。

批处
理系统、分时系统、实时系统以及网络与分布式系统等都是这样的系统。

?执行环境具有三个特点:
?独立性:每道程序都是逻辑上独立的,它们之间不存在逻辑上的制约关系。

?随机性:在多道程序环境下,特别是在多用户环境下,程序和数据的输入与执行开始时间都是随机的。

?资源共享:资源共享将导致对进程执行速度的制约。

进程的引入(四)
?程序并发执行:是指两个或两个以上的程序或程序段可在同一时间间隔内同时执行。

?程序的并发执行卓有成效地提高了系统的吞吐量。

?程序并发执行的新特征:间断性;失去封闭性;不可再现性;资源共享;程序与计算不再一一对应。

进程的引入(五)
?程序的并发执行可进一步分为两种:第一种是多道程序系统的程序执行环境变化所引起的多道程序的并发执行。

第二种并发执行是在某道程序的几个程
序段中(例如几个程序),包含着一部分可以同时执行或顺序颠倒执行的代码。

进程的引入(六)
?程序的并发执行可总结为:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一
个程序段的执行已经开始的这种执行方式。

进程的引入(七)
?程序的并发执行不同于程序的并行执行。

程序的并行执行是指一组程序按独立的、异步的速度执行。

并行执行不等于时间上的重叠。

进程的引入(八)
?程序的并发执行所带来的影响:程序的并发执行充分地利用了系统资源,从而提高了系统的处理能力,这是并发执行好的一方面。

但是,正如前面所提
到的那样,由于系统资源有限,程序的并发执行必然导致资源共享和资源竞争,从而改变程序的执行速度。

进程并发执行引发的问题
?协调各程序的执行顺序。

例:当输入的数据还未全部输入内存时,计算进程必须等待。

?多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果。

?选择哪些、多少个程序进入内存执行?
?内存中的执行程序谁先执行,谁后执行?
?内存如何有效分配?
进程的引入(九)
?由于程序的顺序性、静态性以及孤立性,用程序段作为描述其执行过程和共享资源的基本单位既增加操作系统设计和实现的复杂性,也无法反映操作系统所应该具有的程序段执行的并发性、用户随机性,以及资源共享等特征。

也就是说,用程序作为描述其执行过程以及共享资源的基本单位是不合适的。

需要有一个能描述程序的执行过程且能用来共享资源的基本单位。

这个基本单位被称为进程(或任务)。

进程的定义(一)
?60年代初期以来进程的各种定义如下:
(1)进程是可以并行执行的计算部分。

(2)进程是一个独立的可以调度的活动。

(3)进程是一抽象实体,当它执行某个任务时,将要分配和释放各种资源。

(4)行为的规则叫程序,程序在处理机上执行时的活动称为进程
(E.W.Dijkstra)。

(5)一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程(Brinch Hansen),等等。

进程的概念
?定义:可并发执行的程序,在一个数据集合上的运行过程。

?进程是系统进行资源分配的基本单位,又是可独立运行的基本单位。

?申请/拥有资源
?程序:静态概念,是指令和数据的集合,可长期存储。

?进程与程序的对应关系:一个程序可以对应一个进程或多个进程。

一个进程可以对应一个程序,或者一段程序。

进程的定义(二)
?进程是具有独立功能的可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的独立单位。

或者说,"进程"是进程实体的运行过程。

进程的特征
?动态性:进程是程序的一次执行过程,因此,动态性是进程最基本的特性。

动态性还表现为:"它由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡"。

?并发性:这是指多个进程实体同存于内存中,能在一段时间内同时运行。

并发性是进程的重要特征。

?独立性:这是进程实体是能独立运行的基本单位,同是也是系统中独立获得资源和独立调度的基本单位。

?异步性:这是指进程按各自独立的、不可预知的速度向前推进。

?结构特征:从结构上,进程实体是由程序段、数据段及进程控制块三部分组成,有人把这三部分统称为"进程映像"
引入进程带来的问题
?增加了空间开销:为进程建立数据结构。

?额外的时间开销:管理和协调、跟踪、填写和更新有关数据结构、切换进程、保护现场。

?更难控制:协调多个进程竞争和共享资源如何预防;解决多个进程因为竞争资源而出现故障。

?处理机的竞争尤为突出。

进程与程序
?进程和程序是两个既有联系又有区别的概念,它们的区别和关系可简述如下:
?进程是一个动态概念,而程序则是一个静态概念。

程序是指令的有序集合,没有任何执行的含义。

而进程则强调执行过程,它动态地被创建,并被调度执
行后消亡。

?进程具有并行特征,而程序没有。

由进程的定义可知,进程具有并行特征的两个方面,即独立性和异步性。

也就是说,在不考虑资源共享的情况下,各
进程的执行是独立的,执行速度是异步的。

显然,由于程序不反映执行过程,
所以不具有并行特征。

?进程是竞争计算机系统资源的基本单位,从而其并行性受到系统自己的制约。

这里,制约就是对进程独立性和异步性的限制。

?不同的进程可以包含同一程序,只要该程序所对应的数据集不同。

程序并发执行的Bernstein条件
?若两个进程P1和进程P2能满足下述条件,它们便能正确地并发执行,否则不能:
R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)={}
其中:R(P1)={a1,a2.,am}进程P1执行期间所需要参考的所有变量的集合--读集
W(P1)={b1,b2.,bm}进程P1执行期间所要的所有变量的集合--写集
即P1的读集与P2写集的交集、P2的读集与P1的写集的交集、P1的写集与P2的写集的交集,三者同时为空集。

则P1与P2可以并发执行。

?例如,有语句如下:
S1:a=x+y;
S2:b=z+1;
S3:c=a-b;
S4:w=c+1;
?它们的读集和写集分别如下:
R(S1)={x,y},W(S1)={a}
R(S2)={z},W(S2)={b}
R(S3)={a,b},W(S3)={c}
R(S4)={c},W(S4)={w}
?可见S1和S2两条语句满足Bernstein条件,它们可以并发执行。

而S1和S3则不满足条件,因为R(S3)∩W(S1)={a},所以不能并发执行。

S2和S3也不能并发执行,因为W(S2)∩R(S3)={b};同理,S3和S4也不能并发执行,因为R(S4)∩W(S3)={c}。

这4条语句的前趋图
?这4条语句的前趋图如下所示:
例题
?试画出下面5条语句的前驱图:
S1:a=5-x;S2:b=a*x S3:c=4*x S4:d=b+c;S5:e=d+3
题解
?前趋图如下所示:
例题
?试利用Bernstein条件证明上题中的S2和S3语句是可以并发执行的,而S3与S4语句是不可以并发执行的。

题解
?由前题知:
?R(S2)={a,x},W(S2)={b},R(S3)={x},
W(S3)={c}
?由于R(S2)∩W(S3)∪R(S3)∩W(S2)∪W(S2)∩W(S3)={}
?因此,S2和S3语句是可以并发执行的。

题解
?由于R(S3)∩W(S4)∪R(S4)∩W(S3)∪W(S3)∩W(S4)={c}
?因此S3和S4语句是不可以并发执行的。

例题
?(中科院计算机网络信息中心)程序段S1,S2,S3,S4之间存在下面的前驱关系:
?S1 S2,S2 S3,S1 S4,可以并发执行的程序段为()
题解
?从图中可以看出,S2和S4可以并行处理,S3与S4可以并行处理。

因此答案应为S2和S4、S3和S4。

作业与进程的关系(一)
?作业是用户需要计算机完成某项任务时要求计算机所作工作的集合。

一个作业的完成要经过作业提交、作业收容、作业执行和作业完成四个阶段。

?进程是已提交完毕程序的执行过程的描述,是资源分配的基本单位。

作业与进程的关系(二)
?作业与进程的区别与联系:
?作业是用户向计算机提交任务的任务实体。

而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。

?一个作业可由多个进程组成。

且必须至少由一个进程组成,但反过来不成立。

?作业的概念主要用于在批处理系统中。

而进程的概念则用在几乎所有的多道系统中。

进程的结构
?组成(进程映像):程序、数据集合、进程控制块PCB(Process Control Block)
?PCB是进程存在的唯一标志。

创建进程时,创建PCB;进程结束时,系统
将撤消PCB。

进程控制块PCB(一)
?进程控制块是进程实体的一部分,是操作系统中最重要的数据结构。

PCB
中记录了操作系统所需的、用于描述进程情况及控制进程运行所需的全部信息。

操作系统是根据进程控制块PCB来对并发执行的进程进行控制和管理的。

所以说,PCB是进程存在的唯一标志。

因为PCB经常被系统访问,尤其是被运行频
率很高的进程调度及分派程序访问,故PCB常驻内存。

进程控制块PCB(二)
?在进程控制块中,用于描述和控制进程运行的信息主要包括下述四个方面:
(1)进程标识符信息。

进程标识符用于唯一地标识一个进程。

一个进程通常有外部标识符、内部标识符两种标识符。

(2)处理机状态信息。

用于进程切换时保存和恢复CPU现场,主要是由处理机各种寄存器中的内容所组成.
(3)进程调度信息。

存入与进程调度和进程对换有关的信息,主要包括进程状态、优先级、等待CPU的时间总和、进程已执行的时间总和和进程阻塞原因
等信息。

(4)进程控制信息。

进程控制信息包括程序和数据的地址、进程同步和通信机制以及资源清单和链接指针等。

进程控制块PCB(三)
?在一个系统中,通常可拥有数十个、数百个乃至数千个PCB。

为能对它们
进行有效的管理,应该用适当的方式将它们组织起来。

目前常用的组织方式有
链接方式和索引方式两种。

PCB的组织方式之一
--单一队列
?所有进程的PCB通过链表组织成为一个单一队列。

适用于进程数目不多的系统。

如:Windows操作系统。

PCB的组织方式之二
--表格结构
?PCB按进程状态不同,组织成不同的表格:就绪进程表、执行进程表(多
机系统中)及阻塞进程表。

?系统分别记载各PCB表的起始地址。

PCB的组织方式之三
--多级队列
?PCB按进程状态不同用链接指针组成不同队列:就绪进程队列、阻塞进程队列(可按阻塞原因不同,分别组织)
?系统分别记载各PCB链表的起始地址。

进程执行轨迹
?进程的轨迹:进程执行的指令序列,用以观察处理机的执行过程。

?例:假设内存中有3个进程A、B、C,他们的程序代码已全部装入内存,若A、B两进程需要执行12条指令,C进程需要执行4条指令,且C进程执行到第4条指令处必须等待I/O.
?假设分派程序分派处理机需要依次执行指令序列:s+0,s+1,….,s+5
?进程A的执行轨迹为a+0,a+1,a+2,a+3,….
?进程B的执行轨迹为b+0,b+1,b+2,b+3,….
?进程C的执行轨迹为c+0,c+1,c+2,c+3,当它执行到C+3指令时遇到了I/O 指令,需要释放处理机,进行输入/输出操作。

两状态进程模型
?两状态:执行、未执行
?进程获得处理机,进入执行状态;当时间片结束或其它某种原因,进程释放处理机,暂停执行,处于未执行状态。

?问题:把等待处理机和等待其他事件都作为未执行状态合理吗?
?等待状态的进程不止一个,他以什么形式存在?
两状态进程模型:队列形式
?并非所有进程只要"未执行"就处于就绪(ready),有的需要阻塞(blocked)等待I/O完成。

?"未执行"又可分为就绪和阻塞。

进程的五状态
?执行状态(Running)
?就绪状态(Ready)
?阻塞状态(Blocked)
?新状态(New)
?终止状态(Terminated)
1.新状态:进程已经创建,但未被OS接纳为可执行进程。

2.就绪状态:准备执行
3.执行状态:占用处理机(单处理机环境中,某一时刻仅一个进程占用处理机)
4.阻塞状态:等待某事件发生才能执行,如等待I/O完成等。

5.终止状态:因停止或取消,被OS从执行状态释放。

进程的三种基本状态
?就绪状态:当进程已分配到除CPU以外所有必要的资源后,只要能再获得处理机便可立即执行,这时的状态称为就绪状态。

?执行状态:进程已获得处理机,程序正在执行。

?阻塞状态:进程因发生某种等待事件(如I/O请求、申请缓冲空间等)而暂停执行时的状态,即进程的执行受到阻塞,故称这种状态为阻塞状态,有时也
称为"等待"状态或"睡眠"状态。

进程状态的转换
?进程在运行期间不断地从一个状态转换到另一个状态,进程的各种调度状态依据一定的条件而发生变化,它可以多次处于就绪状态和执行状态,也可多
次处于阻塞状态,但可能排在不同的阻塞队列中。

进程状态
?空初始状态:新创建的进程首先处于初始状态。

?初始状态就绪状态。

当系统允许增加就绪进程时,操作系统接纳新建状态进程,将它变为就绪状态,插入就绪队列中。

?就绪状态执行状态:当处理机空闲时,将从就绪队列中选择一个进程执行,该选择过程称为进程调度,或将处理机分派给一个进程,该进程状态从就绪转
变为执行。

?执行状态终止状态。

执行状态的进程执行完毕,或出现诸如访问地址越界、非法指令等错误,而被异常结束,则进程从执行状态转换为终止状态。

进程状态
?执行状态就绪状态。

分时系统中,时间片用完,或优先级高的进程到来。

将中断较低优先级进程的执行。

进程从执行状态转变为就绪状态。

等待下一次
调度。

?执行状态等待状态。

执行进程需要等待某事件发生。

通常,会因为进程需要的系统调用不能立即完成。

如读文件、共享虚拟内存、等待I/O操作、等待
另一进程与之通信等事件而阻塞。

?等待状态就绪状态。

当阻塞进程等待的事件发生,就转换为就绪状态。

进入就绪队列排队,等待被调度执行。

?某些进程允许其父进程在任何情况下终止其子进程。

?如果一个父进程被终止,其子孙进程都必须终止。

例题
?进程由就绪态转换为运行态是由()引起的。

A.中断事件
B.进程状态转换
C.进程调度
D.为程序创建进程
题解
?当CPU空闲时,调度程序就会选择一个进程投入运行,即把进程由就绪态转换为运行态。

?选:C
例题
?系统中有n个用户进程,在具有2个CPU的计算机系统中,可能处于执行状态的进程最多有()个,可能处于就绪状态的进程最多有()个,可能处于等待状态的进程最多有()个,某一时刻,处于执行状态的进程为0个,且当前处理器空闲,处于就绪状态的进程有()个。

题解
?运行态:在该时刻进程实际占有处理器。

?就绪态:在该时刻,进程已经满足所有运行条件了,只是处理器被别的进程占有。

?阻塞态:此时进程因等待输入而阻塞,当输入可用时进程转换到就绪态。

答案
?2、n-2、n、0
解决内存紧张问题
?多道程序系统,内存资源相当紧张
?交换技术
?虚拟存储技术
交换技术(Swapping)
?将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,换入内存。

进程的挂起状态
?进程被交换到外存,状态变为挂起状态。

?进程挂起的原因:
(1)进程全部阻塞,处理机空闲。

(2)系统负荷过重,内存空间紧张。

(3)操作系统的需要。

操作系统可能需要挂起后台进程或一些服务进程,或者某些可能导致系统故障的进程。

(4)终端用户的请求。

(5)父进程的需求。

被挂起进程的特征
?不能立即执行
?可能是等待某事件发生,若是,则阻塞条件独立于挂起条件,即使阻塞事件发生,该进程也不能执行。

?使之挂起的进程为:自身、其父进程、OS。

?只有挂起它的进程才能使之由挂起状态转换为其他状态。

挂起与阻塞
问题:
?是否只能挂起阻塞进程?
?如何激活一个挂起进程?
挂起与阻塞
区分两个概念
?进程是否等待事件,阻塞与否
?进程是否被换出内存,挂起与否
4种状态组合
?就绪:进程在内存,准备执行
?阻塞:进程在内存,等待事件
?就绪/挂起:进程在外存,只要调入内存即可。

?阻塞/挂起:进程在外存,等待事件。

处理机可调度执行的进程有两种:
?新创建的进程
?或换入一个以前挂起的进程
通常为避免增加系统负载,系统会换入一个以前挂起的进程执行。

具有挂起状态的进程状态转换
?阻塞阻塞/挂起:OS通常将阻塞进程换出,以腾出内存空间。

?阻塞/挂起就绪/挂起:当阻塞/挂起进程等待的事件发生时,可以将其转换为就绪/挂起。

?就绪就绪/挂起:一般,OS挂起阻塞进程,但有时也会挂起就绪进程,释放足够的内存空间。

?新就绪/挂起(新就绪):新进程创建后,可以插入到就绪队列或就绪挂起队列。

若无足够的内存分配给新进程,则需要新就绪/挂起。

具有挂起状态的进程状态转换
?阻塞/挂起阻塞:当阻塞/挂起队列中有一个进程的阻塞事件可能会很快发生,则可将一个阻塞/挂起进程换入内存,变为阻塞。

?执行就绪/挂起:当执行进程的时间片用完时,会转换为就绪。

或,一个高优先级的阻塞/挂起进程正好变为非阻塞状态,OS可以将执行进程转换为就绪/挂起状态。

?所有状态终止:通常,执行终止,但某些OS中,父进程可以终止其子进程,使任何状态的进程都可转换为退出状态。

进程控制
两种执行模式
?系统模式(又称为系统态)、控制模式或内核模式:
?具有较高的特权
?运行系统特定的指令,包括读/写控制寄存器的指令、基本I/O指令以及与存储器管理有关的指令,及一些特定的内存区。

?内核模式下的处理机及其指令、寄存器和内存都受到完全控制和保护。

?用户模式(或用户态)
?具有较低的特权
?用户程序一般运行在用户模式。

模式切换
?用户模式系统模式:用户程序执行到一条系统调用,进入操作系统内核执行。

?系统模式用户模式:执行完系统调用的功能,返回到用户程序。

?特殊情况:程序执行到结束语句时,切换到系统模式,不再返回到用户程序。

操作系统内核
?操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统最基本的功能,是操作系统工作的基础。

?现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的
模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对它们进行特殊保护。

通常把这一部分称为操作系统的内核。

操作系统内核
?用户通过系统调用访问操作系统的功能,这些功能最终都通过操作系统内核实现。

?不同的操作系统对内核的定义和功能范围的设定是不同的。

?一般地,操作系统内核的功能可以概括地划分为资源管理功能和支撑功能。

资源管理:进程管理、存储管理和I/O设备管理。

支撑功能:中断处理、统计、监测、时钟管理、原语操作等。

资源管理功能
?进程管理:进程创建和终止、调度、状态转换、同步和通信、管理PCB ?存储管理:为进程分配地址空间、对换、段/页管理
?I/O设备管理:缓存管理,为进程分配I/O通道和设备。

支撑功能
?中断处理
?时钟管理
?原语(Primitive):原子操作。

?监测
进程控制原语
?进程切换
?创建与终止
?阻塞与唤醒
?挂起与激活
进程创建:原因
?提交新的批处理作业
?交互式用户注册
?操作系统提供服务
?父进程创建子进程
进程创建:步骤
?为进程分配一个唯一标识号ID,主进程表中增加一个新的表项。

?为进程分配空间:用户地址空间、用户栈空间、PCB空间。

若共享已有空间,则应建立相应的链接。

?初始化PCB:进程标识、处理机状态信息、进程状态。

?建立链接:若调度队列是链表,则将新进程插入到就绪或就绪/挂起链表。

?建立或扩展其他数据结构。

进程终止:原因
?批处理作业执行到"结束"语句
?交互式用户"注销"
?停止进程(应用程序)的执行
?遇到错误或故障
进程终止:具体原因(1)
?正常结束
?超时终止,执行时间超过预计时间
?内存不足,无法为进程分配所需的内存空间
?越界访问
?企图使用未允许用的数据,或操作方式错
?计算错,如除零,或企图存储硬件允许的最大数
?超时等待某事件发生
进程终止:具体原因(2)
?I/O失败,如找不到文件或多次重试仍无法读写文件,或无效操作。

?无效指令,企图执行不存在的指令。

?特权指令,企图执行特权指令。

?数据类型不符,或未初始化。

?操作员或OS干预,如发生死锁的时候。

?父进程终止。

?父进程请求。

进程终止:步骤
?根据被终止进程的标识符ID,找到其PCB,读出该进程的状态。

?若该进程为执行状态,则终止其执行,调度新进程执行。

?若该进程有子孙进程,则立即终止其所有子孙进程。

?将该进程的全部资源,或归还给其父进程,或归还给系统。

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

进程的阻塞与唤醒
?阻塞原因:请求系统服务;启动某种操作,如I/O;新数据尚未到达;暂时无新工作可做等。

?当出现阻塞事件,进程调用阻塞原语将自己阻塞。

并将其状态变为"阻塞状态",并进入相应事件的阻塞队列。

?当阻塞进程期待的事件发生,有关进程调用唤醒原语,将等待该事件的进程唤醒,并将其状态变为"就绪状态",插入就绪队列。

?一般,进程可以自己阻塞自己;而唤醒操作则由操作系统,或其它相关进程来完成,进程无法自己唤醒自己。

进程的挂起与激活
?当出现挂起事件,系统利用挂起原语将指定进程或一个阻塞进程挂起,进程从内存换出到外存,其状态转换:
就绪就绪/挂起
或阻塞阻塞/挂起
?当激活事件发生,系统利用激活原语将指定进程激活,将相应进程从外存换入到内存,可能的状态转换:
就绪/挂起就绪,或
阻塞/挂起阻塞
进程切换
?时钟中断
?进程执行完一个时间片
?I/O中断
?内存访问出错
?虚拟存储中,需要的指令或数据不在内存。

相关文档
最新文档