首页 > 试题广场 >

1978 年,Dijkstra 提出了一个推论:使用有...

[问答题]
1978 年,Dijkstra 提出了一个推论:使用有限数量的弱信号量,无法开发出一种适用于有限个进程并避免饥饿的互斥解决方案。1979 年,J.M.Morris 提出了使用三个弱信号量的算法,反驳了这个推论。算法描述如下:若一个或多个进程正在 semWait (s)操作上等待,另一个进程正在执行 semSignal (s),则不修改信号量 s 的值,并解除一个等待进程的阻塞。除三个信号量外,算法还使用两个非负整数变量作为在算法特定区域的进程数的计数器。因此,信号量 A 和 B 初始化为 1,而信号量 M 和计数器 NA、NM 初始化为 0。互斥信号量B控制访问计数器 NA 。试图进入临界区的进程须通过两个分别由信号量A 和 M 设置的屏障,计数器NA和NM分别表示准备通过屏障 A 及已通过屏障A但还未通过屏障 M的进程数。在协议的第二部分,在 M 上阻塞的 NM 个进程将使用类似于第一部分的级联技术,依次进入它们的临界区。定义一个算法实现上面的描述。

这道题你会答吗?花几分钟告诉大家答案吧!