Chinaunix首页 | 论坛 | 博客
  • 博客访问: 520190
  • 博文数量: 257
  • 博客积分: 1666
  • 博客等级: 上尉
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-02 23:02
文章分类

全部博文(257)

文章存档

2013年(2)

2012年(255)

分类:

2012-09-13 12:53:06

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

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


记录性信号量机制:

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

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


AND型信号的机制:

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

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


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


管程机制

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

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


管程由四部分组成:

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



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


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


阅读(385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~