网站大量收购闲置独家精品文档,联系QQ:2885784924

第三章同步、通信与死锁.pptx

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 同步、通信与死锁;3.1 进程的同步与互斥 在多道程序的环境中,系统中的多个进程可以并发执行,同时它们又要共享系统中的资源,由此诸进程间会产生错综复杂的相互制约的关系。 一、进程间制约关系 1.竞争关系 源于资源共享,多个不存在逻辑关系的进程因共享资源而产生制约关系。 若一个进程要求使用某一资源,而该资源正被另一个进程使用,并且这一资源不允许两个进程同时访问,那么该进程只有等待,只有这一资源释放后才能使用。 2.协作关系 源于进程间的协作。 一组进程为完成共同任务分工协作,各进程都独立以不可预知速度推进,在执行的先后次序就有约束,在一些关键点上协调工作。若一个进程运行到某关键点时,在尚未收到另一协作进程发来的信息前应阻塞自己,等协作进程发来消息后方可继续执行。;进程间这种相互依赖又相互制约,相互协作又相互竞争的关系,主要表现在进程互斥和进程同步两方面 二、进程互斥 引例: 宿舍电话的使用 打印机的使用 1、临界资源 一次仅允许一个进程使用的资源称为临界资源。 引例中的电话和打印机都属于临界资源。还有光盘刻录机、绘图仪、共享变量、共享的数据结构等等也是临界资源。 2、临界区: 每个进程中访问临界资源的那段程序段称为临界区。(临界段);;3、进程互斥 进程应互斥访问同一临界资源,即进程应互斥的进入临界区。当一进程正在访问某临界区时,就不允许其它进程进入,试图进入临界区的另一进程必须等待。进程之间的这种相互制约的关系称为进程互斥。;三、进程同步;例:计算fun1(X)*fun2(y) 两进程合作完成任务 进程1:计算fun1(X)。 进程2:计算fun2(X);与进程1结果相乘。 进程1和进程2并发执行。 ;3.2 进程互斥的实现;尝试 (1);尝试 (2);process P0( ) { inside[0]=true; turn=1; while(inside[1]turn==1); {临界区}; inside[0]=false; };为每一进程设标志位inside[i],当inside[i]=true时,表示进程pi要求进入,或正在临界区中执行。此外再设一个变量turn,用于指示???许进入的进程编号。 进程0为了进入先置inside[0]=true,并置turn为1,表示应轮到p1进入。接着再判断inside[1]turn==1的条件是否满足,若不满足则可进入。或者说当inside[ 1 ]=false或者turn==0时,进程可以进入。前者表示p1未要求进入,后者表示仅允许p0进入.;软件解法的缺点;二、实现进程互斥的硬件设施;1.利用关中断实现进程互斥 ;2.Test-and-Set(TS)指令实现互斥;TS指令实现进程互斥 bool s=true; cobegin process Pi( ) { //i=1,2,...,n while(!TS(s)); //上锁 {临界区}; s=true; //开锁 } coend;3.swap指令实现进程互斥;利用swap实现进程互斥 为每一临界资源设置一个全局布尔变量lock,其初值为false,表示无进程在临界区内。在每个进程中有局部布尔变量keyi。;实现进程互斥的软件算法太过复杂,效率低下; 实现进程互斥的硬件方法虽简单有效,但采用忙式等待,白白浪费cpu时间;将测试能否进入临界区的责任推卸给各进程,会削弱系统的可靠性,加重用户的编程负担;且这些方案只能解决进程互斥问题,却不能解决进程同步问题。;3.3 信号量与PV操作;1.信号量的定义 是一个结构型数据结构,定义如下: struct semaphore { int value; //信号量的值 struct pcb *list; //信号量队列的头指针 } 信号量说明: semaphore s; 信号量必须置一次且只能置一次初值,初值不能为负数。 对信号量只能执行P、V操作;2.P、V操作 对信号量仅能执行P、V操作。 对信号量的P操作记为:P(S),P操作是一个原子操作。 对信号量的V操作记为:V(S), V操作是一个原子操作。 在实际系统中,一般情况下是由机器硬件提供P、V操作的指令,当然是原子操作,若机器不提供P、V操

文档评论(0)

虾虾教育 + 关注
官方认证
内容提供者

有问题请私信!谢谢啦 资料均为网络收集与整理,收费仅为整理费用,如有侵权,请私信,立马删除

版权声明书
用户编号:8012026075000021
认证主体重庆皮皮猪科技有限公司
IP属地重庆
统一社会信用代码/组织机构代码
91500113MA61PRPQ02

1亿VIP精品文档

相关文档