操作系统教材答案陈向群杨芙清 下载本文

向 Buffer[i]写入信息 从 Buffer[k]中读信息 V(mutex) V(mutex) V(full) V(empty)

j:=(j+1)mod n k:=(k+1)mod n

4)empty 表示还有多少缓冲区单元为空,如果 empty=0,表示缓冲区满,系统调用写进程时 ,写进程处于等待态

full 表示缓冲区都多少有信心的单元,如果 full=0, 表示缓冲区空,系统调用写进程时 ,读进程处于等待态

mutex 表示对于缓冲区单元的互斥信号量,当 mutex=1 时,开锁,mutex=0 时,闭锁 二.当缓冲区大小为无穷大时 1)同上

2) 1.空的信号量 empty 不用设, 满的信号量为 full 初值为 0, 对缓冲区单元的互斥信号量 为 mutex,j,k 为缓冲区单位地址,初值为 0 写进程 读进程 P(full)

P(mutex) P(mutex)

向 Buffer[i]写入信息 从 Buffer[k]中读信息 V(mutex) V(mutex) V(full)

j:=(j+1)mod n k:=(k+1)mod n

4)full 表示缓冲区都多少有信心的单元,如果 full=0, 表示缓冲区空,系统调用写进程 时,读进程处于等待态

mutex 表示对于缓冲区单元的互斥信号量,当 mutex=1 时,开锁,mutex=0 时,闭锁

13.假定一个阅览室最多可以容纳 100 人,读者进入和离开阅览室都必须在阅览室门口的一 个登记表上标志(进入时登记,离开时去掉登记项)而且每次只允许一人登记或者去掉登记,问:

1) 应编写几个进程完成这项工作,程序的主要动作是些什么?应该设置几个进程?进程 和程序间的关系如何?

2) 用 P,V 操作写出这些进程的同步通信关系

答:编写两个进程,一个处理读者进入,一个处理读者离开,进程是程序的动态执行 设置信号量 full 为初值为 0, 空的信号量 empty 初值为 100, 互斥信号量 mutex 初值 为 1

进入 离开

P(empty) P(full) P(mutex) P(mutex) 登记 取消登记 V(mutex) V(mutex) V(full) V(empty) 进入 离开

14.在生产者和消费者问题中,如果对调生产者(或消费者)进程中的两个 P 操作和两个 V 操作的次序,会发生什么情况?请说明!

答:对调 P 操作, 会发生死锁 因为 P(empty)在 p(mutex)和 v(mutex)内部,也就是临界 区中,当 empty≤0,时,P(empty)在临界区中进入到了休眠状态。那么就别的进程都进入 不到临界区中,进入死锁状态。

而两个 V 操作无关紧要

15.为什么引入高级通信机构?他有什么优点?说明消息缓冲通信机构的基本工作过程? 答:

1)为了解决大量的消息交换,

2)优点:不仅能够保证相互制约的进程之间的相互关系,还同时实现了进程之间的信息 交换

3)消息缓冲通信技术的工作过程:

其基本思想是:根据“生产者-消费者”原理,利用内存中公用消息缓冲区实现进程之间 的信息交换。

内存中开辟了若干消息缓存区,用以存放消息,每当一个进程(发送进程)向另一个进程 (接收进程)发送消息时,便申请一个消息缓冲区,并把已准备好的消息发送到缓冲区中 ,然后把该消息缓冲区插入到接受进程的消息队列中,最后通知接受进程,接收进程收到 发送进程发送到的通知后,从本进程的消息队列中摘下一消息缓冲区,取出所需的消息, 然后把消息缓冲区还给系统。

16.进程间为什么要进行通信?在编写自己的程序时,是否考虑到要和别的用户程序进行 通信?各个用户进程间是否存在制约关系?

答;1)各个进程在运行的时候,共享内存,或者共同完成一个特定的功能,都需要进行通 信,

2)需要,

3)促在同步和互斥的关系,比如聊天程序

17.假定一个系统的磁盘块大小为 2KB,一个块的平均访问时间是 20 毫秒。一个有 40KB 进程

由于资源请求从运行态变为阻塞态,它必须保持阻塞多长时间? 答: 40/2 * 20=400 毫秒 保持阻塞态 400 毫秒

18.假设 A,B 两个火车站之间是单轨线,许多列车同时到达 A 站,然后经过 A 站到达 B 站;又 列车从 A 到 B 的行驶时间是 t,列车在 B 战后的停留时间是 t/2,试问在该问题模型中,什么是 临界资源,什么是临界区?

答:临界资源: A 到 B 之间的单轨线,以及 B 站是临界资源 临界区: 在 A 到 B 之间行驶,以及在 B 上停留是临界区 19.同步机制应该遵循哪些原则?为什么?

答:1.它的描述能力应该足够强,既能解决各种进程间的同步互斥问题; 2.其次,应该容易实现并效率高 3.第三,使用方便

20.我们为某临界资源设置一把锁 W。当 W=1 时,表示关锁,W=0 时,表示开锁,试写出开锁

和关锁原语,并利用它去实现互斥。 答: while(1==w); enter 临界区

21.进程 A1,A2,?,An 通过 m 个缓冲区向进程 B1,B2,?,Bn 不断发送消息,发送和接收工作遵

循如下规则:

1)每个发送进程每次发送一个消息,写入一个缓冲区,缓冲区大小与消息长度一样 2)对每一个消息,B1,B2,..Bn 都需要各接收一次,读到各自的数据区中;

3)m 个缓冲区都满时,发送进程等待,没有可读消息时,接受进程等待 试用 P,V 操作组织正确的发送和接收操作。 答: VAR

mutex: Semaphore:{初值为 1,实现对缓冲区的互斥} empty: Semaphore:{初值为 n,有多少缓冲}

Full: Array[1..n] OF Semaphore:{初值为 0,每个接收进程当前可接收的缓冲区 }

Count:Array[1..n] OF INTEGER;{初值为 0,n 个缓冲区被访问的次数}

ReceivePointer:Array[1?n] OF INTEGER{初值为 0,该接收进程要取哪个 } SendPointer:INTEGER;{初值为 0,发送进程下次要放到哪个缓冲区} 发送进程 (num:INTEGER) {num 为进程号} Repeat P(empty) P(mutex)

向 buff[sendPointer]放消息

sendPointer:=(sendPointer+1)mod k count[sendPointer]:=0 V(mutex)

For i:=1 To n Do V(Full[i]) Until FALSE

接收进程 (num:INTEGER):{num 为接收进程号} Repeat

P(Full[num]) P(mutex)

从 buff[ReceivePoiner[num]]中取消息 V(mutex)

Count[ReceivePoiner[num]]:= Count[ReceivePoiner[num]]+1 IF(Count[ReceivePoiner[num]]==n) THEN V(empty)

Count[ReceivePoiner[num]]==0

ReceivePoiner[num]]:=(ReceivePoiner[num])+1)mod n Until FALSE

22.有 K 个进程共享一个临界区,对于下述情况,请说明信号量值的初值,含义,并用 P, V

操作写出相关的互斥算法。

1) 一次只允许一个进程进入临界区 2) 一次只允许 m 个进程进入临界区 答:1)设置互斥信号量 mutex,初值为 1 P(mutex) Enter_region V(mutex)

2)设置同步信号量 mutex,初值为 m;

P(mutex) Enter_region V(mutex)

23.爱睡觉的理发师问题,一个理发店有两间相连的屋子,一间是私室,里面有一把理发 椅,另一个是等候室,有一个滑动门和 N 把椅子。理发师忙的时候,通向私室的门被关闭 ,新来的顾客找一把空椅子坐下,如果椅子都被占用了,则顾客只好离去,如果没有顾客 ,则理发师在理发椅上睡觉。并打开通向私室的门。理发师睡觉时,顾客可以叫醒他理发 ,请编写

理发师和顾客的程序,正确实现同步和互斥问题! 答:

解:VAR:

S1,S2 :Semaphore;{初值为 0,实现理发师与顾客的同步} Mutex:Semaphore:{初值为 1,实现对 waiting 的互斥} waiting:INTEGER:{初值为 0,等待的顾客数} 理发师进程 REPEAT

P(S1) {若无顾客,则睡觉 } P(mutex)

Waiting:=waiting-1

V(S2); (唤醒一个等待的客户) V(mutex) 理发

Until FALSE 顾客进程 P(mutex)

IF(waiting

Waiting:=-waiting+1 ;(等待顾客数加 1) V(mutex);

V(S1) {通知理发师}

P(S2) {若无理发师,挂起} 坐下理发 END

ELSE V(mutex)

24.进程之间的通信方式有几种?在单机环境下,常用的哪几种通信方式? 答:三种:共享内存,消息机制,以及管道通信 在单机环境下:常采用 共享内存以及管道通信。

25. 一个快餐店有四类雇员:1)领班,他们接受顾客点的菜单;2)厨师,准备饭菜;3) 打包工,将饭菜装在袋子里;4)收银元,将食品袋交给顾客并收钱,每个雇员都可以看 作一个进行通信的顺序进程,他们采用的进程间通信方式是什么? 答:通信方式为消息传递。

26.抢占式进程调度是指系统能够强制性的使执行进程放弃处理机,试问分时系统采用的 是抢占式还是非抢占式进程调度?实时系统? 答:分时系统采用的是非抢占式进程调度