第三章 进程管理(二)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2010年考研题
27、进行P0和P1的共享变量定义及其初值为( ) boolean flag[2];int turn=0;flag[0]=faulse;flag[1]=faulse; 若进行P0和P1访问临界资源的类C代码实现如下: Void p0()// 进程p0 Void p1()// 进程p1 {while(TURE){ {while(TURE){ Flag[0]=TURE;turn=1 ; Flag[1]=TURE; turn=0; While (flag[1]&&(turn==1)) ; While (flag[0]&&(turn==0)); 临界区; 临界区; Flag[0]=FALSE; Flag[1]=FALSE; } } } } 则并发执行进程P0和P1时产生的情况是: A:不能保证进程互斥进入临界区,会出现“饥饿”现象 B:不能保证进程互斥进入临界区,不会出现“饥饿”现象 C:能保证进程互斥进入临界区,会出现“饥饿”现象 D:能保证进程互斥进入临界区,不会出现“饥饿”现象
进程完成其任务,希望终止时,调用撤消进 程的系统调用(进程撤消原语)撤消进程。相 当于一个人死亡后,家人要去派出所消户口。
在一般操作系统中进程撤消的系统调用是: kill
引起进程撤消的事件:
①正常结束:该进程已完成所要求 的功能而正常终止。 ②异常结束:由于某种错误导致非 正常终止,如越界错误、保护错、非 法指令、运行超时等。 ③外界干预:进程应外界要求而终 止,如祖先进程要求撤销某个子进程。
互斥的定义:在操作系统中,当某一进程正在访问某
临界区时,就不允许其它进程进入,否则就会发生(后果)无 法估计的错误。我们把进程之间的这种相互制约的关系称为 互斥。 例如:飞机定票系统中的机票库
例
题
选择题(清华)在多进程的系统中,为了保证公共变量的 完整性,各进程应互斥地进入临界区,所谓临界区是指( ) A.一个缓冲区 C .同步机制 B. 一段数据区 D.一段程序
进入临界区的准则: (1)忙则等待:每次至多有一个进程处于临界 区;(互斥进入) (2) 有限等待:进程在临界区内仅逗留有限 的时间,以便其他进程能及时进入自己的临界 区。(饥饿现象) (3) 让权等待:若进程不能进入自己的临界 区时,则应让出 CPU ,避免进程出现“忙等” 现象。 (4) 空闲让进:当无进程处于临界区时,必 须让一个要求进程临界区的进程立即进入,以 有效地利用临界资源。
等待状态
进程唤醒
就绪状态
运行状态 进程调度
1.进程创建
在 LINUX 系统中用户键入一个命令(如 date, ps,ls),shell就创建一个进程。 进程创建类似于人出生后要到派出所报户口。
引起创建进程的事件:
①用户登录:分时系统中,为合法的登录用户终 端创建一个进程,并插入就绪队列; ②作业调度:批处理系统中,由操作系统的作业 调度程序为用户作业分配必要的资源,并创建相应的 进程,再插入就绪队列。 ③提供服务:当运行中的用户程序提出某种请求 后,系统将专门创建一个进程来提供用户所需的服务。 如打印服务。 ④应用请求:前 3 类是系统内核创建新进程,第 4 类是基于应用请求的需要,由自己创建一个新进程。 如:输入、输出进程。
进程撤消原语的实现过程
进 程 撤 消 原 语
入口 查进程链表或进程家族
的功能:回收资 源 撤消当前运 行的进程,将该 进 程 的 PCB 结 构 归 还 给 PCB 资 源 池,所占用的资 源归还给父进程, 从总链队列中摘 除它,然后转进 程调度程序。
有此PCB吗? 有 有 该PCB有子进程吗? 无 释放该进程所占有的资源
进程唤醒原语的实现过程
入口
进程唤醒原语的功能: 从等待队列中摘下被唤醒进程
将被唤醒进程置为就绪态
将被唤醒进程送入就绪队列 转进程调度或返回
当进程等待的事件发 生时,唤醒等待该事件的 所有进程或等待该事件的 首进程。
3.5 进程的相互作用
在多道程序的环境中,系统中的多个进程可以并发执行,同时它们 又要共享系统中的资源,这些资源有些是可共享使用的,如磁盘,有些 是以独占方式使用的,如打印机。由此将会引起一系列的矛盾,产生错 综复杂的相互制约的关系。 进程间的制约关系有两个: 间接制约:资源共享——独占分配到的部分或全部共享资源,“互斥” 问题 直接制约:进程合作——等待来自其他进程的信息,“同步”问题
运行状态(Running) 当进程由调度程序选中后,得到CPU控制权,它的 程序正在运行,该进程所处的状态为运行状态。(在 系统中,总有一个进程处于此状态)
就绪状态(Ready) 指进程已经准备就绪,一旦得到CPU,就立即可以 运行,这些进程所处的状态为就绪状态。(有多个进 程处于此状态)
等待状态(Wait,阻塞状态:Blocked) 若一个进程正在等待某个事件的发生(如等待I/O 的完成),而暂停执行,这时,即使给它CPU时间,它 也无法执行,则称该进程处于等待状态。(有多个进 程处于此状态)
进程的状态不是固定不变的,而是在不断变换。
进程状态转换图
例题
1. 操作系统中,当( ),进程从执 行状态转变为就绪状态。 A. 进程被进程调度程序选中 B. 时间片完 C. 等待某一事件 D. 等待的事件发生
例题
2. 一个进程被唤醒,意味着 ( ) 。 A.该进程重新占有了CPU B.进程状态变为就绪 C.它的优先权变为最大 D.其PCB移至就绪队列的队首
运行
就绪
阻塞
进程的状态及其转换
3.4 进程控制
进程是有生命周期的,产生、运行、暂停、终止。 对进程的这些操作叫进程控制。 进程控制,就是使用一些具有特定功能的程序段来 创建、撤消进程以及完成进程各状态间的转换,主要内 容有:
1. 进程创建 2. 进程撤消 3. 进程阻塞 4. 进程唤醒
进程控制的手段:由操作系统中的原语来实现。
用上锁原语和开锁原语实现互斥
RETURN
例
题
简答题(武汉理工06)试用下例说明临界资源和临界区 的概念? 例:设一共享变量为X,有两个进程如下: 进程A 进程B … … X=X+1 X=X+2 … …
答:临界资源:指一次只允许一个进程所使用的资源; 临界区:指访问临界资源的那段程序。 例如:设一共享变量为X,有两个进程如下: 进程A 进程B … … X=X+1 X=X+2 … … 其他代码与变量X无关,则进程A的临界区是:X=X+1; 进程B的临 界区是:X=X+2;而共享变量X就是临界资源。
一个正在运行的进程会因等待某事件(例如,等待打印机)的 发生,由运行状态转换成阻塞状态,当它等待的事件发生后, 这个进程将由阻塞状态转换成就绪状态。这种转换由进程唤醒 操作完成。 调用进程唤醒操作一般在中断处理、进程通信等过程中。例如, 在完成了打印完成的操作后,就去检查等待打印机的队列,若 不为空,则调用进程唤醒操作,唤醒一个等待打印机的进程。
原语
完成系统特定功能的程序段。
原语(Primitive):是在系统态下执行的
特点:原语是一个不可分割的基本单位,原 语操作具有原子性,既在执行过程中不允 许被中断,且不能并发执行。
原语是一种特殊的系统调用,其作用是 为了实现进程的控制和通信。
原语与系统调用比较
• • • •
调用形式(相同点):均使用访管指令实现 中断性:系统调用在运行中可被中断 并发性:原语不允许并发执行 实现方式:
2010年考研题
24、下列选项中,导致创进新进程的操作是()
I 用户成功登陆 II设备分配 III启动程序执行 A:仅I和II C:仅I和III
B:仅II和III D:I,II,III
进程创建原语的实现过程
进程创建原语的功能:
创建一个具有指定标识 符的进程,建立进程的 PCB结构。
2.进程撤消
互斥的加Fra Baidu bibliotek实现
解决进程互斥的最简单的办法是加锁。在系统中为每个临 界资源设置一个锁位: 0 /ture: 表示资源可用(锁打开) 1 /false: 表示资源不可用(锁关闭) 这样当一个进程使用某个临界资源必须完成下列操作: (1) 考察锁位的值: 若原来的值是为“ 0” ,将锁位置为“ 1” (占用该资
源); 若原来值是为“1”,(该资源已被别人占用),则转到1。
(2)执行临界区; (3)开锁:当进程使用完资源后,将锁位置为“0“,称为开锁操 作,退出临界区。
关锁、开锁操作算法
上锁、开锁操作改进的算法
用上锁原语和开锁原语实现互斥
假设有两个进程共享打印 机,两个进程中使用打印机 的程序段为临界区。 为保证打印的正确,设置 打印机的锁位print,其初值为 “0”,表示打印机可用。 原语描述如下:
1.进程互斥
2.进程同步 3.信号量及PV操作原语
1. 进程互斥
引例: 宿舍电话的使用 打印机的使用 临界资源(Critical Resource): 一次仅允许一个进程使用的资源 称为临界资源。
引例中的电话和打印机都属于临界 资源。除此之外,还有内存变量、指针、 数组等等也是临界资源。
临界区( Critical Section): 每个进程中访问临界资源的那段 程序段称为临界区(临界段), 简称CS区。
引起进程阻塞的事件:
①请求系统服务 ②启动某种操作 ③新数据未到达 ④无新工作可做
进程阻塞原语的实现过程
入口
进程阻塞原语的功能: 中止调用进程的执行, 并加入到相应的等待队列 中;最后使控制转向进程 调度。
保存当前进程的CPU现场 置该进程的状态 被阻塞进程入等待队列 转进程调度
4. 进程唤醒
在一个具体的系统中,为了调度的方便、合理, 往往设立了更多个进程状态,但是上述三种状态 是最基本的,如果不设立:
就不知道哪个进程正在占有处理机 运行状态:
就绪状态: 就无法有效地挑选出合适运行的进程,或者
挑选出的进程根本就不能运行
阻塞状态:就无法区分各个进程除了缺少CPU资源外
是否还缺少其他资源
原语:内核 系统调用:系统进程或系统服务程序
•
调用关系: 原语→系统进程或系统服务程序→系统调用
常用原语
进程控制:
• • • •
进程创建原语 进程撤消原语 进程阻塞原语 进程唤醒原语 P原语 V原语
进程同步互斥:
•
•
新建进程置为就绪状态
进程创建
进程终止(消亡)
进程撤消
运行状态
等待状态 进程阻塞 就绪状态
第三章 进程管理
3.1 进程的概念 3.2 进程的组成 3.3 进程状态及其转换 3.4 进程控制 3.5 进程的相互作用 3.6 信号量的应用 3.7 经典进程的同步问题 3.8 管程 3.9 进程通信 3.10 线程 3.11 死锁问题
3.3 进程的状态及其转换
1. 进程的基本状态
进程在系统中的活动规律是: 执行 暂停 执行 进程的三种基本状态: 运行状态 就绪状态 等待状态(又称阻塞、挂起、睡眠)
这样,准备运行的进程和不具备运行条件的进程就不会 混杂在一起。
例 题
1.一个单CPU的操作系统共有n个进程, 不考虑进程状态过渡的情况: 给出运行进程的个数: 给出就绪进程的个数: 给出等待进程的个数: 2. 如果单CPU的系统共有n个进程,则等 待队列中进程的个数最多为:
2.进程状态转换
无
出错处理
释放该PCB结构本身 返回
3.进程阻塞(挂起、等待)
当一个处在运行状态的进 程,因等待某个事件的发生 (如等待打印机)而不能继 续运行时,将调用进程挂起 系统调用,把进程的状态置 为阻塞状态,并调用进程调 度程序(让出处理机)。
进程从运行状态转换成阻塞状态是由进程挂起原语实现的,因此,调 用进程挂起操作是在进程处于运行状态下执行的。它的执行将引起等待 某事件的队列的改变。 例如,进程是因等待打印机而进入阻塞状态,则该进程将加入到等待 打印机的队列。
2010年考研题
26、下列选项中,降低进程优先权级 的合理时机是( ) A:进程的时间片用完 B:进程刚完成I/O,进入就绪队列 C:进程长期处于就绪队列中 D:从就绪状态转为运行态
2. 用进程状态转换图能说明有关处理机管理的大量内 容。 试回答: (1)什么事件引起每次显著的状态变迁? (2)下列状态变迁因 果能否发生,为什 么? A )2 1 B)3 2 C) 4 1