操作系统原理-第二章-进程管理.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文档。上传文档
查看更多
进程唤醒过程 PCB从阻塞队列中移出 先把被阻塞进程从等待该事件的阻塞队列中移出 修改状态为就绪 将其PCB中的现行状态由阻塞改为就绪,并插入到就绪队列中 注意:阻塞与唤醒要成对,被阻塞进程一定要有被唤醒的机会! 2.3 进 程 同 步 进程同步的主要任务 对多个相关进程在执行次序上协调,使并发的各进程间能有效共享资源或相互配合,从而使程序的执行具有可再现性。 进程同步的两种形式 间接相互制约:源于进程对硬件资源的互斥共享(一个水龙头,打水) 直接相互制约:源于进程间的合作(接力跑) 进程互斥与同步 进程互斥 一个进程正在访问临界资源,另一个要访问该资源的进程必须等待。 进程同步 合作完成同一个任务的多个进程,在执行速度或某些时序点上必须相互协调的合作关系。 互斥是一种特殊的同步关系 可视为由临界资源的特性而形成的进程之间的共享等待同步 示例:生产者-消费者问题 问题要求 多个生产者进程在生产产品 多个消费者进程消费生产的产品 两者之间设置了一个有n个缓冲区的缓冲池 数据结构 用一个含有n个元素的数组表示上述缓冲池 用输入指针in来指示下一个可投放产品的缓冲区 用输出指针out来指示下一个可获取产品的缓冲区 缓冲池组织成循环缓冲队列 生产者—消费者问题 一组生产者生产产品 一组消费者取走产品 1 n 3 n-1 2 …… …… 公用缓冲池,共有n个缓冲区 in out Var n,integer;type item=…; var buffer: array[0,1,…,n-1] of item; in,out: 0,1,…,n-1;counter: 0,1,…,n; producer: repeat       produce an item in nextp;       while counter=n do no-op; buffer[in]:=nextp; in:=(in+1) mod n; counter:=counter+1; until false; … … consumer: repeat      while counter=0 do no-op;      nextc:=buffer[out];      out:=(out+1) mod n;      counter:=counter-1;      consumer the item in nextc;      until false; 并发执行带来的问题 生产者进程和消费者进程并发执行时会出现差错: 问题就在于这两个进程共享变量counter。 这两个操作在用机器语言实现时, 常可用下面的形式描述: register1:=counter;  register2:=counter; register1:=register1+1; register2:=register2-1; counter:=register1;  counter:=register2; 一种可能的并发执行顺序 register1:=counter; (register1=5) register1:=register1+1; (register1=6) register2:=counter; (register2=5) register2:=register2-1; (register2=4) counter:=register1; (counter=6) counter:=register2; (counter=4) 结论: 并发执行已经失去了再现性。 解决此问题的关键是应把变量counter作为临界资源,即令生产者进程和消费者进程互斥地访问变量counter。 临界资源和临界区 临界资源 进程只能互斥访问的资源(打印机、共享变量等),属于不可剥夺资源(OS也不能中途从使用者手中剥夺) 计算机系统中可剥夺性使用的资源主要有CPU、内存等 临界区 进程中访问临界资源的程序代码段 互斥结论 为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区。 访问临界资源的循环进程描述如下: repeat entry section //类似于加锁 critical section;//临界区 exit section //类似于解锁 remainder section;//剩余代码部分 until false; 同步应遵循的规则 空闲让进、忙则等待、有限等待、让权等待 2.3.2 信号量机制 1965年,荷兰

文档评论(0)

kbook + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档