(1.30)--记录型信号量操作系统原理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 记录型信号量 信号量概念: 1965年Dijkstra提出了一个信号量和P、V操作的同步机构。 基本原则是多个相互合作的进程间使用简单的信号来协调控制。一个进程检测到某个信号后,就被迫停止在一个特定的地方,直到它收到一个专门的信号才能继续往下执行。这个信号就称为信号量(Semaphore)。 信号灯! * 记录型信号量 设信号量s为一个记录型数据结构,一个整形变量value代表资源数目,另一个进程队列指针L用于链接所有等待该资源的进程。 信号量是一个结构变量,不是简单变量。 * 包含两个数据项,可描述为: 记录型信号量 typedef struct   { int value;//表示该类资源可用的数目    PCB *L;//等待使用该类资源的进程排成队列的队头指针    }semaphore ; S Value L * 一点说明 (1)整型变量value:代表该类资源的目前可用数目。如果value0,表示有value个资源可用,如果等于0,表示无资源可用,如果小于0,表示有| value |个进程在等待使用该资源。value的初值应该是非负的。 (2)结构指针L:当value大于等于0时,该指针没有意义,当value小于0时,该指针指向等待该资源的队列的首个进程的PCB的地址。 * 几个并发进程共享一个程序段,而每次只允许两个进程进入该程序段,信号量初值? 几个并发进程共享一个程序段,而每次只允许一个进程进入该程序段,信号量初值? 系统中有三台打印机,为打印机设置信号量,则初值为? 一个电影大厅最多能容纳100人,少于100人时可随时进入,否则,需要等待,为电影大厅设置一个信号量,初值应为? 信号量初值设定 * 记录型信号量 信号量的值可以修改,但是只能由P和V操作原语来访问: P操作P(s):申请资源 也用wait(s)或down(s)。将信号量s.value减去l,若结果小于0,则将调用P(s)的进程插入等待该资源的阻塞队列。 V(s):释放资源 也用signal(s)或up(s)。将信号量s.value加1,若结果不大于0,则从该资源的阻塞队列首部唤醒一个进程插入就绪队列中。 * P(s) Y S .value 0 ? S .value= S .value- 1 N 阻塞自身 (1)将S .value值减1。 (2)若S .value 0,阻塞当前的进程,并将它插入到该信号量的等待队列中。 调度另一就绪进程运行。 (3)若S .value ≥0,则当前进程继续运行(得到资源)。 * V(s) Y N S .value≤ 0 ? S.value = S .value+ 1 唤 醒 一 个 (1)将S .value值增1。 (2)若S .value ≤0,从信号量的等待队列中移出一进程使其由阻塞态转变为就绪态 (即唤醒某一进程)。 当前进程继续运行或者运行进程调度程序。 (3)若S .value 0,当前进程继续运行(没有因等待该资源而阻塞的进程)。 * 信号量机制 记录型信号量 P操作 wait(S): S.value= S.value-1 if S.value0 then block(S.L) V操作 signal(S): S.value= S.value+1 if S.value≤0 then wakeup(S.L) 除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程队列指针L,用于链接上述的所有等待进程。 一个进程由执行状态转入阻塞状态,是这个进程自己调用阻塞原语完成的。 进程由阻塞状态转入就绪状态,是另一个发现者进程用唤醒原语完成的。 * 例子 信号量的结构及PCB等待队列 PCB 1 PCB 2 0 PCB 3 指针L 数值(-3) 信号量 假设信号量代表的是打印机,初值为2,表示系统中有两台打印机可以用,当value值为-3的时候,表示有3个进程在等待使用打印机,那具体是哪3个进程呢? 当信号量的value值为负数的时候,L就表示了该资源的阻塞队列。 * 信号量机制 记录型信号量 说明: 1、s.value初值表示系统中某类资源的数目。 2、wait操作申请资源。 3、s.value0时,资源分配完毕,申请使用该资源的进程阻塞,放弃处理机。| s.value |值表示因申请资源不能满足而阻塞的进程数目。 4、signal操作释放资源。 5、若s.value初值为1,此时信号量为互斥信号量,用于实现进程的互斥。 以一个停车场的运作为例。简单起见,假设停车场

文档评论(0)

奉献教育1688 + 关注
实名认证
文档贡献者

心有凌云志,无高不可攀!

1亿VIP精品文档

相关文档