现在的位置: 首页 > 综合 > 正文

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

2019年03月30日 ⁄ 综合 ⁄ 共 807字 ⁄ 字号 评论关闭
浅谈两种方法实现进程互斥的原理
浅谈两种方法实现进程互斥的原理

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

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

记录性信号量机制:

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

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

AND型信号的机制:

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

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

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

管程机制

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

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

管程由四部分组成:

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

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

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

抱歉!评论已关闭.