第3章进程3.ppt

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

操作系统与实验教程 第3章第4讲 3.5进程互斥 “多道、并发”需解决的问题 进程能在有限时间内获得它们所需要的资源 对于互相协作的进程还要保证其能够按照正常的时序执行 竞争与协作 1. 竞争关系(互斥关系) 互斥:多进程不能同时访问共享的临界资源的现象 判断依据(同时满足以下两个条件): 诸进程共享同一个临界资源,对临界资源的访问具有唯一性和排它性。 共享的方式是先来者先使用的异步方式。 异步:进程执行顺序无先后限制 2. 协作关系(同步关系) 是指诸进程的执行有先后顺序的限制。 临界区 临界资源 指的是一次只允许一个进程使用的独占资源。 硬件:打印机、磁带机 软件:消息缓冲队列、变量、数组、缓冲区等。 临界区 指包含了访问临界资源的那段程序。 利用临界区实现互斥 忙等待的互斥 (基于临界区的互斥实现方案) 1.关中断* 2.锁变量 (3.5.2互斥的加锁实现) 3.严格轮转法 4.Peterson算法 5.TSL指令* 6. 对换指令* 2.锁变量 原理: 为每个临界资源设置一个锁位,锁位为0或1分别表示临界区可用或已被占用 临界区前上锁(设置锁位为1) 临界区后开锁 上锁原语算法lock 输入:锁变量w 输出:无 { while(w==1); w=1; //进入临界区前先上锁 } 说明: while(w==1):w为1说明资源已被占用,继续循环(等待) 当w=0时结束循环,执行w=1,该进程使用资源且先上锁。 开锁原语算法 unlock 输入:锁变量w 输出:无 { w=0; //开锁 } 锁变量的缺点 锁变量本身也是共享的 可能出现两进程同时进入临界区的情况发生 进程1判断允许进入临界区,在上锁之前进程2被调度,此时锁变量值还未修改为上锁状态,进程2被允许进入临界区。 降低Cpu利用率(锁位检测/每个进程) 3.严格轮转法 严格轮转法缺点 降低Cpu利用率(turn变量的检测) 必须严格让使用临界资源的进程轮流运行 可能出现的问题:当某进程运行速度较快,另一个运行较慢时,因为要让两个进程轮流交替使用,运行较快的进程必须等待轮流交替的顺序到来。 例如:进程0速度快于进程1(其非临界区执行时间长),情况如下: 4.Peterson算法 interested[]作用:实现临界资源互斥访问 设置标志数组interested[]为true用来表示使用该标志的进程希望进入临界区; 进入临界区之前判断对方进程的interested[]数组值,如果对方interested[]为true,表示对方想使用,该进程等待,否则使用临界资源; 若可以使用临界区,使用完临界资源后,设置标志数组interested[]为false用来表示使用该标志的进程希望退出临界区。 turn作用:解决饥饿问题 interested使用过程中,若两个进程同时将自己的interested[]设置为true会导致--两个进程都处于等待状态(饥饿状态)--why? 解决办法: 通过不同进程对turn赋值先后顺序,使先执行赋值语句的进程进入临界区,解决饥饿问题。 例:假设p0调用enter_region(0), p1调用enter_region(1),p0、p1已设置自己的interested[]为true,且P0先设置turn为0,p1再设置turn为1: 则turn值保留最后一次设置的值,为1; P0中代码“While(interested[1]turn= =0);”表示interested[1]为真且turn为0 时不能让p0进入临界区,现turn为1,条件不满足,循环结束,p0可以继续执行,即可以进入临界区; P1中代码“While(interested[0]turn= =1);”表示interested[0]为真且turn为1 时不能让p1进入临界区,条件满足,循环继续,p1不能继续执行,即不能进入临界区。 Peterson算法总结 进入临界区前先表示想进入--设置interested[]为true; 为防止饥饿发生,设置表示申请顺序的变量turn; 若进程需使用临界资源,对方进程也需要使用临界资源的情况下,只要该进程申请顺序(执行turn赋值语句的顺序)优先于对方进程就可先使用临界资源。 上述实现互斥的方案共同缺点: 忙等待:当进程因申请临界资源得不到满足的情况下,需要等待,同时要不断测试允许进入的标志变量。 改进: 当进程因申请临界资源而得不到满足时,该进程阻塞,当可以使用临界资源时,将该进程唤醒。 引入:信号量 3.5.3 信号量及P、V原语 1.信号量机制:一种进程通信方式,通过该信号量以阻塞及唤醒的方式实现进程之间的同步和互斥。 同步互斥、PV操作创立者 Edsger W. Dijkstra:艾兹格·W·迪科斯彻 荷兰科学家,

文档评论(0)

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

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

1亿VIP精品文档

相关文档