操作系统 ch2-5 临界区.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统 ch2-5 临界区

一个进程阻塞且等待信号量S,可以在其他进程执行signal操作之后被重新执行。该进程的重新执行是通过wakeup操作来进行的,该操作将进程从等待状态切换到就绪状态。接着,该进程被放入到就绪队列中。 举两个例子,一个例子是两个进程s.value=1初始化。 另一个例子是系统有5个打印机,可供5个进程共同使用,现在n个进程并发使用,则s.value初始化为5,以第六个进程为例说明。 具有等待队列的信号量的实现可能导致这样的情况:两个或多个进程无限地等待一个事件,而该事件只能由这些等待进程之一来产生。这里的事件是操作signal的执行。当出现这样的状态时,这些进程就称为死锁。 说一组进程处于死锁状态是指:组内的每个进程都等待一个事件,而该事件只可能由组内的另一个进程产生。 与死锁相关的另一个问题是无限期阻塞或饥饿,即进程在信号量内无穷等待的情况。如果对信号量相关的链表按LIFO顺序来添加和删除进程,那么可能会发生无穷阻塞。 计数信号量:整数值,可跨越于一个不受限制的域内 二进制信号量:值只能是0和1,比计数信号量更容易实现。 记数信号量也可以作为互斥锁来用 这里给出了有限缓冲的通用结构,而不是只局限于某个特定实现。 假设缓冲池中有n个缓冲项,,每个缓冲项能存一个数据项。信号量mutex提供了对缓冲池访问的互斥要求,并初始化为1。信号量empty和full分别用来表示空缓冲项和满缓冲项的数量。信号量empty初始化为n;而信号量full初始化为0。 empty-=0 满 Empty=n 空 * Full=0 空 Full = n 满 * 第一读者-写者问题(读者优先):1、若没有写者已经获得允许使用共享数据库,则读者不需要等待;2、若已有一个写者进程获得使用共享数据库,则读者需要保持等待;3、若一个读者获得允许使用共享数据库,且有一个写者进程在等待,则其他读者进程不需要等待。 第二读者-写者问题(写者优先):一旦写者就绪,写者会尽可能快获得共享数据库。 一个数据对象(如文件或记录)可以为多个并发进程所共享。其中有的进程只需要读共享对象的内容,而其他进程可能要更新(即读和写)共享对象。为了区分这两种类型的进程,将只对读感兴趣的进程称为读者;而其他得则称为写者。 显然,如果两个读者同时访问共享数据对象,那么不会产生什么不利的结果。然而,如果一个作者和其他一些进程(读者或作者)同时访问共享对象,很可能产生混乱。 为了确保不会产生混乱,要求作者对共享对象有完全的访问。 信号量wrt为读者和写者进程所共用,供写者作为互斥信号量使用。 信号量mutex用于确保在更新变量readcount时的互斥。 变量readcount用来跟踪有多少进程正在读对象。 1 若写者进程获得允许进入共享数据库,则wrt==0;对于等待的读者进程,第一个等待读者进程,得到mutex信号量后,mutex==0,更新readcount后,陷入wait(wrt)语句中;此时若有其他等待的读者进程,则他们将陷入到wait(mutex)语句当中,原因是第一个等待读者进程获得了mutex信号量;即一个等待的读者进程在wrt信号量上等待,n-1个等待的读者进程在mutex上等待。 2 若写着进程完成,则wrt==1,则第一个等待的读者进程获得wrt信号量,然后继续执行,其他所有在mutex等待的n-1个等待的读者进程均可以在更新readcount互斥的条件下获得读取共享数据库的权利。 3 若n个读进程在共享数据库执行或者等待的时候,若有一个写进程进入等待,则在信号量wrt上等待,wrt信号量已经被第一个进入数据库的读进程设置为0,其获得了wrt信号量。当最后一个读者进程离开共享数据库的时候,其将wrt信号量设置为1,即将该信号量还给第一个等待的写者进程,此时,写者进程获得信号量。若此时有读者进程进入等待状态,则进入第一行“1”所描述的情况当中。 另外,如果一个写者进程获得允许进入共享数据库,此时一个读进程和一个写者进程进行等待,则等待的两个进程都会陷入wrt信号量中进行等待。当第一个写者进程释放信号量wrt后,这两个进程都有可能获得允许进入共享数据库。 例子中 mutex信号量提供了对多个读者进程共享的数据readcount的互斥访问,wrt信号量提供了多个写进程,以及一个写进程和多个读者进程的互斥访问。 * 假设有5个哲学家,他们花费一生中的时光思考和吃饭。这些哲学家共用一个圆桌,每个哲学家都有一把椅子。在桌子中间是一碗面,在桌子上放着5只筷子。当一个哲学家思考时,他与其他同事不交互。时而,哲学家会感到饥饿,并试图拿起与他相近的两只筷子(他与邻近左、右两人之间的筷子)。一个哲学家一次只能拿起一支筷子。显然,他不能从其他哲学家手里拿走筷子。当一个饥饿的哲学家同时有量只筷子时

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档