操作系统 课后答案(3)
发布时间:2021-06-06
发布时间:2021-06-06
第3章 习题答案
3-7. 系统中有n+1个进程。其中A1、A2、…、An分别通过缓冲区向进程B发送消息。相互之间的制约关系为:发送进程A1、A2、…、An要互斥地向BUF中送消息,当接收进程B还未将消息接收完之前,任何一个发送不能再送。同样,B不能重复接收同一个消息。 为此,应设置两个信号量s1和s2。设系统只有容纳一个消息的缓冲区,用信号量s1表示,其初值为1,它用来制约发送进程。信号量s2用来制约接收进程,其初值为0。
现可用PV操作描述如下:
进程A1、…、An执行的过程为: 进程B执行的过程为: begin begin 准备消息 P(S2)
P(s1) 从缓冲区BUF取消息 将消息送入BUF V(s1) V(s2) 消耗消息 end end
若缓冲区容量为m个,这个问题就变为生产者和消费者问题。
3-8. 首先这里的IN和OUT分别表示读写指针,而不是信号量。在系统初启时,环行缓冲区为空,此时IN和OUT都初始化为0。当并发进程通过环行缓冲区通信时,写进程不断地写,读进程不断地读,使得读写指针不断变化。写进程的速度太快,缓冲区会满;读进程的速度太快,缓冲区会空。
已知循环缓冲区的容量为100。则
当(IN+1)%100 = OUT时,说明缓冲区已满。 当IN = OUT时,说明缓冲区已空。
初始化时,IN=OUT=0。一段时间以后:
3-9. 为描述阅览室,用一个登记表来记录使用情况。表中共有100项。每当有读者进入阅览室时,为了正确地登记,各读者应互斥使用。为此设两个信号量。mutex:互斥信号量,用来制约各读者互斥地进行登记,其初值为1;empty同步信号量,用来制约各读者能同时进入阅览室的数量,初值为100。下面用两个过程描述对表格应执行的动作: 登记过程: 擦除过程: begin begin
p(empty) p(mutex)
p(mutex) 找到自己的登记项擦除 找到一个登记项登记 v(mutex) v(mutex) v(empty) end end
为了正确地描述读者的动作,我们可以将读者看成进程。若干读者希望进入阅览室时,调用登记过程,退出阅览室时,调用擦除过程。可见一个程序可对应多个读者。可设的进程数由读者数决定。其动作如下:
begin
调用登记过程 进入阅览室阅读 准备退出 调用擦除过程 end
3-12.有4个同类资源,3个进程,每个进程的最大申请为2,系统不会发生死锁。最不利原则:3个进程都各自获得了一个资源,都还需申请第二个资源。此时,因系统还有一个剩余资源,所以能满足任一个进程的剩余需求。
3-13.有6个磁带机和n个进程。每个进程的最大申请为2,问n取什么值时,系统不会死锁?
答:为了使系统不发生死锁,应该满足: n=6-1=5
下一篇:浅谈班主任工作的几点体会