操作系统与实验教程.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文档。上传文档
查看更多
操作系统与实验教程 第3章第4讲 3.3 进程同步与互斥 3.3.1问题的提出 为了解决多道程序并发执行时产生的与时间有关的错误,协调并发进程间的正常运行。 3.3.2 临界资源与临界区 两个概念:临界资源与临界区。 1.临界资源 临界资源指的是一次只允许一个进程使用的独占资源。各进程对它的访问必须互斥。(包括系统资源及用户资源) (如CPU,例3-2中的剩余机票X等) 2.临界区 临界区是指包含了访问临界资源的那段程序。 临界区作为特殊的程序段进行如下处理: 1)进程在进入临界区之前必须先申请, 2)当且仅当临界区中涉及的临界资源没有其它进程使用时才能进 入临界区; 3)在出临界区后立即释放临界资源。 3.3.3 互斥问题与同步问题 1.互斥问题 互斥必要条件: ⑴.各进程共享同一个临界资源; ⑵.共享的方式是先来者先使用的异步方式。 只有同时满足以上两个必要条件的多进程共享临界资源的问题, 才是互斥问题。 由于临界资源是多进程共享的公共资源,所以称解决互斥问题的信号量为公用信号量; 这些共享同一个临界资源的进程之间的关联属于间接关联; 各进程对于临界资源以异步的方式共享。 因此,这类问题属于互斥问题,需要使用操作系统提供的互斥机制来解决。 1.互斥问题 操作系统提供的互斥机制必须满足以下要求: ⑴.实现互斥。即任意时刻最多只能有一个进程进入临界区。 ⑵.执行临界区的进程不能受到其它进程的干扰。 ⑶.进入临界区的进程不能被无限期地延迟或死锁。 ⑷.当临界资源空闲时,应该允许申请进入临界区的进程进入临界区。 ⑸.没有对于进程相对速度和数目的限制。 1.互斥问题 解决互斥问题,最简单的方法:采用全局变量实现 1.互斥问题 上锁原语算法lock 输入:锁变量w 输出:无 { /*检测锁位为0吗?不为0继续检测*/ while(w==1); w=1; //进入临界区前先上锁 } 开锁原语算法 unlock 输入:锁变量w 输出:无 { w=0; //开锁 } 2.同步问题 同步问题:当各进程的执行具有一定先后顺序的限制时,称为 同步问题。 同步与互斥的比较: 2.同步问题 解决同步问题的信号量为私有信号量,局限于需要同步的协作进程之间使用。协作进程之间的关联属于直接关联。 互斥可以看成是同步的一种特殊情况,广义上的同步包含了互斥在内,我们将两者统称为进程的同步问题。广义上的同步可以定义为各进程之间在执行时间上所加的某种约束,如果这种约束是因为共享临界资源,而且约束的方式是异步的则为互斥约束;否则就是同步约束。 2.同步问题 协作进程之间一般有以下几种不同的同步问题: 前驱与后继同步问题 单缓冲与多缓冲读写同步问题 生产者消费者同步问题 3.3.4信号量及其P、V操作 信号量(信号灯) 信号量是一种数据结构 信号量的一般构成(s和q),二元组 信号量s值的含义( s≥0? s0?) 信号量机制 使用信号量实现进程间的同步和互斥的机制,是操作系统提供的一种进程通信方式。 3.3.4信号量及其P、V操作 信号量总结: 信号量的值与相应资源的使用情况有关 信号量的初值设定 信号量的值仅由P、V操作来改变 PV操作 用来申请或释放信号量的操作,由系统提供的系统调用完成: P操作表示申请资源; V操作表示释放资源。 P、V操作用原语实现,不允许中断。 3.3.4信号量及其P、V操作 /*P操作原语——请求资源或条件*/ P(s) { s――; if(s<0) { 保留调用进程的CPU现场; 将该进程插入s的等待队列; 置该进程为等待态; 转进程调度; } } 3.3.4信号量及其P、V操作 /*V操作原语——释放资源或条件*/ V(s) { s++; if (s<=0) { 移出s等待队列中的第一个进程; 将该进程插入就绪队列; 置该进程为就绪态; } } 3.3.5用P、V操作实现进程同步与互斥 1.用P、V操作实现进程互斥 假设有i个临界资源提供给多个进程共享,对其实现互斥使用的方法为: ⑴.针对每一类临界资源设一个互斥信号量mutexi,若某类临界资源有n个,初值为n;如果只有一个或者抽象表示只能一个进程进入,则初值设为1。 ⑵.在每个进程中对涉及临界资源i的临界区做如下处理: P (mutexi) ; 临界区; V (mutexi); 1.用P、V操作实现进程互斥 步骤: 寻找共享的临界资源;

文档评论(0)

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

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

1亿VIP精品文档

相关文档