第二章进程管理b.pptVIP

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章进程管理b

2.6 进程互斥与同步 ? 采用多道程序设计技术的操作系统,允许多个进程同时驻留内存并发执行。 ?如何协调多个进程对系统资源,如内存空间、外部设备等的竞争和共享? ?如何解决多个进程因为竞争资源而出现执行结果异常,甚至导致系统不稳定、失效等问题? ?例如,多个进程同时申请文件打印,如何有效分配打印机? 例如 银行的联网储蓄业务允许储户同时用储蓄卡和存折对同一帐户进行存取款操作,如果某储户同时(在ATM机和营业柜台)办理两笔存款业务(假设分别为1000和2000元) 从系统的角度看,有两个进程将同时对储户余额等数据进行修改。如果两个进程同时读出原余额(假设为5000元),两个进程分别将最新余额修改为6000(5000+1000)和7000(5000+2000)。 分析及措施 最后,储户余额可能是6000,或者7000,显然都不正确。 原因:两个进程同时修改同一数据,而没有进行有效控制。 正确的方法:如果有多个进程需要同时修改某一数据,系统必须控制,一次仅允许一个进程完成读数据,并修改数据两件事以后,才允许别的进程对同一数据的读和修改操作。 例 假设系统中有3个进程P1、P2、P3,其中P1和P2是计算进程,P3是打印进程,每当P1或P2计算出一个结果以后,将计算结果送到缓存区中,以便P3进程从中取出数据打印。 假设缓冲区被划分为0、1、2...n-1共n个单元。 有两个指针:in指针用于计算进程存放数据,指向缓冲区中下一个空闲的单元,out指针用于打印进程取数据,指向缓冲区中下一个将取走数据的单元。 例 假设某时刻,0到3号单元空闲,4到6号单元被占用,这时候P1、P2进程都准备将数据送入缓冲区,如图2.23所示。 可能发生的情况 进程P1需要向缓冲区存储数据,并知道in指针当前指向7号空闲缓冲单元。若这时进程P1的时间片用完,被中断,调度程序调度进程P2执行。 P2正好也需要向缓冲区存放数据,首先获取in指针位置,同样也是7,于是,P2将数据送入7号单元,并将in指针移动一格,指向8号单元,然后继续执行其他操作。 可能发生的情况 当进程P1再次被调度执行时,将从上次的断点继续执行,即将数据送入7号单元(覆盖进程P2的数据),并移动in指针指向8号单元,然后继续执行其他操作。 进程P3不会发现上述错误,继续从缓冲区取数据,进行打印。显然,进程P2的相应计算结果不会被打印输出。 分析 该例中,由于进程P1和P2共享缓冲区和位置指针,而未对这种共享进行有效控制,导致打印数据的丢失。 如果控制进程P1、P2互斥地访问缓冲区和修改位置指针,将避免这种因为并发执行而导致的程序执行结果的不确定性。 结论 通过上述两个例子可见,采用多道程序并发设计技术的操作系统对诸进程的并发控制是非常重要和必需的。 并发控制 - 竞争资源 当并发进程竞争使用同一资源时,它们之间就会发生冲突。 如果操作系统将资源分配给其中的某一个进程使用,另一个进程就必须等待,直到申请的资源可用时,由操作系统分配给它。 如果竞争某资源的进程太多,这些进程还必须等待在一个队列中,如就绪队列,阻塞队列等。 一种极端的情况是,被阻塞进程永久得不到申请的资源,而死锁。 并发控制 - 竞争资源 进程竞争资源首先必须解决“互斥”问题。某些资源必须互斥使用,如打印机、共享变量、表格、文件等。 这类资源又称为临界资源,访问临界资源的那段代码称为临界区。 任何时刻,只允许一个进程进入临界区,以此实现进程对临界资源的互斥访问。 互斥使用临界资源 当进程需要使用临界资源时,通过获得临界区的使用权实现的。 首先,在“进入区”判断是否可以进入临界区,如果可以进入,则必须设置临界区使用标志,阻止其它后来的进程进入临界区。后来的进程通过查看临界区使用标志,知道自己不能进入临界区,就进入阻塞队列,将自己阻塞。 当临界区内的进程使用完毕,退出临界区时,即在“退出区”修改临界区使用标志,并负责唤醒阻塞队列中的一个进程,让其进入临界区。 互斥使用临界资源 由于同一个临界资源在多个共享它的进程中将对应多个临界区,那么怎样才能保证诸进程间互斥地执行临界区呢? 这就必须保证“临界区使用标志”是可被系统中所有进程共享的全局变量,而且诸进程对该标志的修改操作必须互斥进行。 临界区使用原则 (也称为互斥条件) 每次只允许一个进程处于临界区(忙则等待); 进程只能在临界区内逗留有限时间,不得使其它进程在临界外无限期等待(有限等待) 如果临界区空闲,则只要有进程申请就立即让其进入(空闲让进); 进入临界区的进程,不能在临界区内长时间阻塞等待某事件,必须在一定期限内退出临界区(让权等待) 不能限制进程的执行进度及处理机的数量 竞争资源可能引起死锁 例如,两个进

文档评论(0)

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

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

1亿VIP精品文档

相关文档