浅谈两种方法实现进程互斥的原理

浅谈两种方法实现进程互斥的原理
浅谈两种方法实现进程互斥的原理

对临界资源的使用通过量种方法实现:

管程机制和信号量机制(记录性信号量和AND信号量);


记录性信号量机制:

在记录性信号机制里面有S.value : 记录的是资源的信号的量,通过去验证每次这个值是否大于,来判断是否让进程来使用此资源,但是,一旦这个值s.value=1就允许一个进程访问该资源。从而实现了进程的互斥。

这种机制用于各个进程对一个资源的共享。


AND型信号的机制:

这是好几个进程对好几个共享资源的一个实现的方法。

他的核心机制:就是将一个进程中运行过程中的所有需要的资源,都一次性全部分配给进程。待进程使用完成后,在一并的去释放。


但是信号量机制:每个要访问临界资源的进程,都要自备wait () signal(),这样就使得所有的操作都分散在各个进程里面,会给系统的管理,带来很到的麻烦。一旦一个操作的使用不当,就会导致系统的死锁。所以就使用了一种新的方法就是管程;


管程机制

利用共享数据结构抽想的表示系统的共享资源。把对该共享数据的操作定义为一组过程。进程对共享资源的操作,就是这组过程对共享数据的一个操作。

而这组过程组成了一个资源程序和共享的数据结构,构成了一个操作系统的资源管理模块。——管程


管程由四部分组成:

管程名,局部于管程内部的共享数据结构的说明,对该数据结构的一组操作,对局部于管程内部的共享数据设置初始化的语句。



局部于管程内部的数据结构,只允许管程内部的过程进行访问,其实说实话管程就向围墙,把共享的数据和对他的操作包围起来,当进程访问临界资源的时候,就会经过管程,一次只允许一个进程进入管程,从而实现了进程的互斥。


当进程在访问临界的资源的时候,先是调用管程,一旦管程正在被其他的进程所调用,管程调用wait () 将自己插入到队列中,一旦当前的管程被是释放。其他进程就可以使用这个管程了,所以说这个过程进程的等待,其实就是管程的等待。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值