操作系统PV习题课_第1页
操作系统PV习题课_第2页
操作系统PV习题课_第3页
操作系统PV习题课_第4页
操作系统PV习题课_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Silberschatz, Galvin and Gagne 20022.1Operating System Concepts操作系统习题讲解n一、一、进程概念进程概念n二、二、进程同步和互斥进程同步和互斥Silberschatz, Galvin and Gagne 20022.2Operating System Concepts进 程 概 念(一)问题:如果系统中有问题:如果系统中有N个进程,个进程,4运行进程最多几个,最少几个?运行进程最多几个,最少几个?4就绪进程最多几个,最少几个?就绪进程最多几个,最少几个?4等待进程最多几个,最少几个?等待进程最多几个,最少几个?Silberscha

2、tz, Galvin and Gagne 20022.3Operating System Concepts解答解答:运行进程最多:运行进程最多1 1个,最少个,最少0 0个;个; 就绪进程最多就绪进程最多N-1-1个,最少个,最少0 0个;个; 等待进程最多等待进程最多N个,最少个,最少0 0个;个;Silberschatz, Galvin and Gagne 20022.4Operating System Concepts进程同步和互斥(一)问题一问题一:用用P.VP.V操作解决下图之同步问题操作解决下图之同步问题getcopyputfstgSilberschatz, Galvin and

3、Gagne 20022.5Operating System Concepts一个数据上的操作顺序:一个数据上的操作顺序:get - copy - putcpcgpcgpgGet不能向不能向“满满”的的S中放;中放;Copy不能从不能从“空空”的的S中取;不能向中取;不能向“满满”的的T中放;中放;Put不能不能“空空”的的T中取中取Silberschatz, Galvin and Gagne 20022.6Operating System Concepts(同步)信号量:(同步)信号量:实际上也起到互斥作用实际上也起到互斥作用S_Empty, T_Empty, 初值为初值为1S_Full, T

4、_Full; 初值为初值为0Get:Begin Repeat P(S_Empty) T_get_S(); V(S_Full); Until false;EndCopy:Begin Repeat P(S_Full); P(T_Empty); S_copy_T(); V(T_Full); V(S_Empty); Until false;EndPut:Begin Repeat P(T_Full); T_put_G(); V(T_Empty); Until false;EndSilberschatz, Galvin and Gagne 20022.7Operating System Concepts进

5、程同步和互斥(二)问题:用问题:用P.V操作解决下面问题操作解决下面问题司机进程:司机进程:REPEAT启动车辆启动车辆正常驾驶正常驾驶到站停车到站停车UNTIL 售票员进程:售票员进程:REPEAT关门关门售票售票开门开门UNTIL Silberschatz, Galvin and Gagne 20022.8Operating System Concepts信号量:信号量:S_Door, 初值为初值为0S_Stop; 初值为初值为0司机进程司机进程:Begin Repeat P(S_Door); 启动;启动; 驾驶;驾驶; 停车;停车; V(S_Stop); Until false;End乘

6、务员进程乘务员进程:Begin Repeat 关门;关门; V(S_Door); 售票;售票; P(S_Stop); 开门;开门; Until false;End同步要求:先关门,后开车;同步要求:先关门,后开车; 先停车,后开门先停车,后开门Silberschatz, Galvin and Gagne 20022.9Operating System Concepts第二类读者写者问题(写者优先)第二类读者写者问题(写者优先)1)共享读)共享读2)互斥写、读写互斥)互斥写、读写互斥3)写者优先于读者(一旦有写者,则后续读者必)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)

7、须等待,唤醒时优先考虑写者)进程同步和互斥(三)Silberschatz, Galvin and Gagne 20022.10Operating System ConceptsVar mutex: semaphore; 互斥信号量,初值为互斥信号量,初值为1 R : semaphore; 对应读者等待队列,初值为对应读者等待队列,初值为0 W: semaphore; 对应写者等待队列,初值为对应写者等待队列,初值为0一般变量:一般变量: Writing: Boolean; 初值初值false, 有写者正在写有写者正在写 rc : integer; 初值初值0, 共享读的读者数共享读的读者数 r

8、q : integer; 初值初值0,等待队列中读者数等待队列中读者数 wq: integer; 初值初值0,等待队列中写者数等待队列中写者数Silberschatz, Galvin and Gagne 20022.11Operating System Concepts读者进程Begin RepeatP(mutex);If (Writing OR wq0) Then Beginrq:=rq+1; V(mutex);P(R);P(mutex); resume End;rc:=rc+1;V(mutex);Read();Silberschatz, Galvin and Gagne 20022.12O

9、perating System ConceptsP(mutex);rc:=rc-1;If (rc=0 AND wq0) Then Begin wq:=wq-1;Writing:=true;V(mutex);V(W); End;Else V(mutex); Until falseEndSilberschatz, Galvin and Gagne 20022.13Operating System Concepts写者进程Begin RepeatP(mutex);If (Writing OR rc0)Then Begin wq:=wq+1; V(mutex); P(W); End;Else Begi

10、nWriting:=true; V(mutex);Write();Silberschatz, Galvin and Gagne 20022.14Operating System Concepts P(mutex);If (wq0)Then Beginwq:=wq-1;V(mutex);V(W); EndElseSilberschatz, Galvin and Gagne 20022.15Operating System Concepts If (rq0)Then BeginWriting:=false;While (rq0) Beginrq:=rq-1;V(R) ; End EndElse B

11、eginWriting:=false;V(mutex); EndEnd Until falseSilberschatz, Galvin and Gagne 20022.16Operating System Concepts理发师问题理发师问题: 理发店里有一位理发师理发店里有一位理发师,一把理发椅和一把理发椅和N把供把供等候理发的顾客坐的椅子等候理发的顾客坐的椅子.如果没有顾客如果没有顾客,则理发师则理发师便在理发椅上睡觉便在理发椅上睡觉.当一个顾客到来时当一个顾客到来时,他必须先唤他必须先唤醒理发师醒理发师.如果顾客到来时理发师正在理发,则如如果顾客到来时理发师正在理发,则如果有空椅子,可坐

12、下来等;否则离开。果有空椅子,可坐下来等;否则离开。进程同步和互斥(四)Silberschatz, Galvin and Gagne 20022.17Operating System Concepts Var Sn: semaphore; 位子数目,初值为位子数目,初值为n S: semaphore; 理发师睡觉,初值为理发师睡觉,初值为0 mutex: semaphore; 初值为初值为1顾客进程顾客进程 i:P(Sn);门外观望门外观望P(mutex);进门;进门;V(mutex);V(S);等候;等候;理发;理发;V(Sn)P(mutex);出门;出门;V(mutex);Silbersc

13、hatz, Galvin and Gagne 20022.18Operating System Concepts理发师进程理发师进程 :Repeat P(S); P(mutex); 叫人理发;叫人理发; V(mutex); 理发;理发;Until false;Silberschatz, Galvin and Gagne 20022.19Operating System Concepts问题:问题:推广读写者问题中的消息缓冲处理。消息缓推广读写者问题中的消息缓冲处理。消息缓冲区为冲区为k个,有个,有m个发送进程,个发送进程,n个接收进程,每个接收进程,每个接收进程对发送来的消息都必须取一次个接收

14、进程对发送来的消息都必须取一次 进程同步和互斥(五)Silberschatz, Galvin and Gagne 20022.20Operating System Concepts解题思路:解题思路: 发送者发送消息后唤醒所有的接收者;发送者发送消息后唤醒所有的接收者; 所有的接收者都接收后空出缓冲区;所有的接收者都接收后空出缓冲区; 接收者接收时要修改接收次数;接收者接收时要修改接收次数; 接收计数和缓冲区的指针为临界资源,访问接收计数和缓冲区的指针为临界资源,访问时要互斥时要互斥 。Silberschatz, Galvin and Gagne 20022.21Operating Syste

15、m Concepts Type BufferType = Recordmsg:MessageType;count:integer;mutex:semaphore; 初值为初值为1empty: semaphore; 初值为初值为1full: array 1.n of semaphore; 初值全为初值全为0EndVar mutex: semaphore; 初值为初值为1s: integer; 初值为初值为0buff: array 0.k-1 of BufferType; k是缓冲区大小;是缓冲区大小; n是接收进程个数是接收进程个数 m是发送进程个数,通过是发送进程个数,通过 s 进行进行“写互

16、斥写互斥” Silberschatz, Galvin and Gagne 20022.22Operating System Concepts Procedure Sender_i(i:integer); i 为发送进程的标号为发送进程的标号Vars0, j: integer;Begin Repeat P(mutex); s0:=s; s:=(s+1) mod k; V(mutex); P(buffs0.empty); 在在buffs0.msg中写信息;中写信息; P(buffs0.mutex); buffs0.count:=n; V(buffs0.mutex); For (j:=1 to n do) V(buffs0.fullj); Until false;EndSilberschatz, Galvin and Gagne 20022.23Operating System ConceptsProcedure Recvr(i:integer); i 为接收进程的标号为接收进程的标号Varj:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论