- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
孙钟秀操作系统第三章同步、通信与死锁1
第三章 同步、通信与死锁 3.1 进程的同步与互斥 在多道程序的环境中,系统中的多个进程可以并发执行,同时它们又要共享系统中的资源,由此诸进程间会产生错综复杂的相互制约的关系。 一、进程间制约关系 1.竞争关系 源于资源共享,多个不存在逻辑关系的进程因共享资源而产生制约关系。 若一个进程要求使用某一资源,而该资源正被另一个进程使用,并且这一资源不允许两个进程同时访问,那么该进程只有等待,只有这一资源释放后才能使用。 2.协作关系 源于进程间的协作。 一组进程为完成共同任务分工协作,各进程都独立以不可预知速度推进,在执行的先后次序就有约束,在一些关键点上协调工作。若一个进程运行到某关键点时,在尚未收到另一协作进程发来的信息前应阻塞自己,等协作进程发来消息后方可继续执行。 进程间这种相互依赖又相互制约,相互协作又相互竞争的关系,主要表现在进程互斥和进程同步两方面 二、进程互斥 引例: 宿舍电话的使用 打印机的使用 1、临界资源 一次仅允许一个进程使用的资源称为临界资源。 引例中的电话和打印机都属于临界资源。还有光盘刻录机、绘图仪、共享变量、共享的数据结构等等也是临界资源。 2、临界区: 每个进程中访问临界资源的那段程序段称为临界区。(临界段) 例:统计两个进程P1和P2对共享变量count的访问计数。 P1: …. P2: …. R1=count; R2=count; R1=R1+1; R2=R2+1; count=R1; count=R2; …. …. 两进程并发执行,可能的执行顺序为: P1: R1=count; R1=R1+1; P2: R2=count; R2=R2+1; count=R2; P1: count=R1; 虽然两个进程各自都执行了对count加1的操作,但结果为何count只增加1? count是临界资源,P1、P2访问count的两个程序段就是临界区,两个进程必须互斥的进入临界区,否则就可能出与时间有关的错误. 3、进程互斥 进程应互斥访问同一临界资源,即进程应互斥的进入临界区。当一进程正在访问某临界区时,就不允许其它进程进入,试图进入临界区的另一进程必须等待。进程之间的这种相互制约的关系称为进程互斥。 三、进程同步 引例:两位同学约好星期天去玩,早上8:00在校门口,不见不散。当一个同学先来到校门口,要等另一个同学,到齐后一起去玩。 3.2 进程互斥的实现 一、实现进程互斥的软件算法 现在很少用软件方法解决互斥,但通过学习软件解法能使读者了解到,在早期进程互斥问题的解决并不是一件很简单的事。 尝试 (1) bool inside1=false; //P1不在其临界区内 bool inside2=false; //P2不在其临界区内 cobegin process P1( ) process P2( ) { { while(inside2); while(inside1); inside1=true; inside2=true; {临界区}; {临界区}; inside1=false; inside2=false; } } coend P1和P2可能同时进入临界区 尝试 (2) bool inside1=false; //P1不在其临界区内 bool inside2=false; //P2不在其临界区内 cobegin process P1( ) process P2(
文档评论(0)