操作系统答案4.docVIP

  • 3
  • 0
  • 约4.51千字
  • 约 5页
  • 2019-09-27 发布于广东
  • 举报
6.16 管程的signal操作和信号量的signal操作有什么不同? 管程的signal操作在以下情况下是不能继续进行的:当执行signal操作并且无等待线程时,那么系统会忽略signal操作,认为signal操作没有发生过。如果随后执行wait操作,那么相关的线程就会被阻塞。然后在信号量中,即使没有等待线程,每个signal操作都会是相应的信号量值增加。接下来的等待操作因为之前的信号量值的增加而马上成功进行。 6.17 假设signal语句只能作为一个管程中的最后一条语句出现,可以怎样简化6.7节所描述的实现? 如果signal语句作为最后一条语句出现,那么锁会使发出信号的进程转化成接受信号的进程。否则,发出信号的进程将解锁,并且接受信号的进程则需要和其他进程共同操作获得锁从而使操作继续下去。 6.21 假设将管程中的wait和signal操作替换成一个单一的构件await(B),这里B是一个普通的布尔表达式,进程执行直到B变成真 用这种方法写一个管程实现读者—作者问题。 解释为什么一般来说这种结构实现的效率不高。 要使这种实现达到高效率需要对await语句加上哪些限制?(提示,限制B的一般性,参见Kessels[1977].) 读者—作者问题可以进行以下修改,修改中产生了await声明:读者可以执行“await(active writers == 0 waiting wr

文档评论(0)

1亿VIP精品文档

相关文档