第二章 作业讲解

发布时间:2011-03-05 20:16:52   来源:文档文库   
字号:

第二章 进程管理作业讲解

一、 部分附加题

2. 在进程同步模型中,为什么S1,S2交叉在两个进程中成对出现?

答:因为两个进程要协作完成一个任务,为了进程间的相互唤醒(即同步执行),对私用信号量的PV操作应成对出现在两个进程中。

5. 每个进程中的P操作(wait操作)的顺序可以颠倒吗?为什么? V操作呢?

答:不能,应该先对私用信号量执行P操作,再对公用信号量执行P操作,否则可能会引起死锁。V操作的顺序没关系。

如:若先对mutex执行P操作,再对empty执行P操作,当执行到empty0时,再对mutex执行P操作,可以进入缓冲池,但由于这时empty已经为0,没有空的缓冲区可用,出现死锁,出不去又进不来。

6. 对于一个公用缓冲池, 生成者进程可以一直循环执行直到整个池满; 消费者进程可以一直循环执行直到整个池空。问:两个进程可以穿插执行吗?解释。

答: 可以。因为两个进程是并发进程,不满就可以送,不空就可以取。但不论谁执行,都要先对缓冲池执行互斥操作。

7. 两个进程是通过哪几个信号量实现同步的?说明。

答:通过私用信号量 empty,full

已知初值empty=n, full=0 在生产者进程中对empty执行P操作,对full执行V操作,当empty=0full=n时,说明缓冲池满,不能再送;当消费者进程中的full0,而empty=n时,说明缓冲池空,不能再取。

二、书P82-83

23答:

若缺少了signal(full),由于full初值为0,消费者无法取产品;

当缓冲池全送满时,empty降为0,若缺少了signal(empty),当缓冲池全取空时,由于empty仍然为0,生产者无法再送产品。

24答:

如果wait(full)wait(mutex)互换位置,会造成当full=0时,若有消费者进程还对full执行wait操作,导致死锁。

28答:

初值 empty=1, full=0

Precess1: begin

Repeat

Wait(empty)

Critical section

送数据

Signal(full)

Until false

End

Precess2: begin

Repeat

Wait(full)

Critical section

取数据

Signal(empty)

Until false

End

本文来源:https://www.2haoxitong.net/k/doc/359d7b06e87101f69e3195df.html

《第二章 作业讲解.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式