使用信号量的Hoare Monitor实现?

时间:2016-04-25 15:25:49

标签: concurrency operating-system semaphore concurrent-programming binary-semaphore

这是我4天的考试,我刚刚和我的讲师谈过,他对讲课的这一部分一直非常不清楚,我真的很想和很多学生一起学习如何理解这一点。

基本上,如果您想使用信号量实现Hoare监视器,涉及的步骤顺序是什么?

下面是伪代码 enter image description here

one[![][1]] 3

更新

我现在开始接受它

所以第一张幻灯片用于访问监视器的过程

如果你是唯一一个,那么你叫wait(互斥)

进入显示器做你的东西然后离开

如果有东西等待进入监视器,那么你上升下一个信号量,这是等待进入信号量的过程。否则,如果你是显示器中唯一的那个,那么你退出并启动互斥锁,这样其他人就可以进入互斥锁了

用于具有等待(条件)和信号(条件)的第二张幻灯片

当你等待(c): c_count ++ //等待此条件的进程数,递增1 if(next_count> 0)up(next)//如果想要进入监视器的等待进程数大于零,则向上(下一步),取消阻止其中一个等待进程

else up(mutex)//如果你是唯一一个然后上传互斥锁,那么其他人进入 down(c_sem)//阻止自己入睡 c_count-- //你醒来等待这个条件减少的进程数

表示信号(c)部分:

if(c_count> 0)//如果等待此条件的进程数大于0

next_counter ++ //希望进入监视器的进程数增加1 向上(c_sem); //解锁其中一个等待此情况的进程 down(next)//如果有一个点可用,则返回此get块并加入等待进程列表 next_count--; //你醒来并试图进入监视器

2 个答案:

答案 0 :(得分:3)

伙计,我明白你为什么感到困惑。这里的问题是这个例子合并了两个概念。

信号量是互斥体的一种形式。在摘要中,互斥锁只是一个可以原子递增或递减的变量。你的向上功能递增。如果多个进程同时启动或关闭,则向下功能会减少事件。如果你只是等于count = count + 1,那么如果多个进程试图同时递增,你会得到随机结果。

在现实世界(学术界之外),信号量的作用不仅仅是增量。你也可以等一下信号量。

所以,如果我这样做

 real_world_down (semaphore)

我的进程减少了信号量。如果没有进程(或线程)锁定了信号量(通常= 0,以1为起点),我的进程将继续。如果另一个进程已经锁定了信号量(down< 0之后的值),我的进程会等待。

当锁定信号量的进程完成并执行

 real_world_up (semaphore)

操作系统选择一个等待进程自动运行。

因此你的Hoare显示器看起来像

  var 
     semaphore ; 
  Procedure Monitor

       real_world_down (semaphore) ;

       /* do whatever you want */

       real_world_up (semaphore) ;

 End ;

或者我们可以把它写成:

  var 
     semaphore ; 
  Procedure Monitor

       lock (semaphore) ;

       /* do whatever you want */

       unlock (semaphore) ;

 End ;

这是监视器部分。关于你的例子令人困惑的部分是,它是一个写得不好的锁定/解锁,使用学术信号量,只是原子地递增和递减,并且不知道谁在等待它们。

等待等同于我的锁定。 它等同于我的解锁完全是FUed。

此时我将作为练习留下来创建一个锁定函数,该函数只允许一个进程/线程使用一对信号量获取锁定但允许多个进程等待,并且在解锁时允许一个等待进程/线程继续。

它需要一个解锁函数来解锁互斥锁对,以允许一个进程/线程继续。

答案 1 :(得分:0)

首先 - 2小时并不是真的让你冷静下来的时间,我想 - 所以我甚至都没试过。

另一方面:这是考试,而不是黑客马拉松。说完这个,...为什么不坚持教授幻灯片的学术水平。

如果你想要一个不同版本的解释天才C.A.R的基本工作。看看这个PowerPoint,你可以阅读它,但最重要的页面应该是第15页:MonitorPPT

并且:如果你想在考试后阅读原始论文 - 准备争取你没有得到或只是为了好玩的积分 - 这里是:C.A.R. Hoare - Monitors: An Operating System Structuring Concept

考试一切顺利,汤姆!