操作系统精髓与设计原理-第5章_并发性_互斥和同步.doc

操作系统精髓与设计原理-第5章_并发性_互斥和同步.doc

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

第五章 并发性:互斥和同步 复习题: 5.1列出与并发相关的四种设计问题 答:进程间的交互,共享资源之间的竞争,多个进程的同步问题,对进程的处理器时间分配问题 5.2列出并发的三种上下文 答:多个应用程序,结构化应用程序,操作系统结构 5.3执行并发进程的最基本要求是什么? 答:加强互斥的能力 5.4列出进程间的三种互相知道的程度,并简单地给出各自的定义。 答:进程间互相不知道对方:这是一些独立的进程,他们不会一起工作。进程间间接知道对方:这些进程并不需要知道对方的进程ID号,但他们共享访问某些对象,如一个I/O缓冲区。进程间直接知道对方:这些进程可以通过进程ID号互相通信,用于合作完成某些活动。 5.5竞争进程和合作进程进程间有什么区别。 答:竞争进程需要同时访问相同的资源,像磁盘,文件或打印机。合作进程要么共享访问一个共有的资源,像一个内存访问区,要么就与其他进程相互通信,在一些应用程序或活动上进行合作。 5.6列出与竞争进程相关的三种控制问题,并简单地给出各自的定义。 答:互斥:竞争进程仅可以访问一个临界资源(一次仅有一个进程可以访问临界资源),并发机制必须满足一次只有一个进程可以访问临界资源这个规则。死锁:如果竞争进程需要唯一的访问多于一个资源,并且当一个进程控制着一个进程,且在等待另一个进程,死锁可能发生。饥饿:一组进程的一个可能会无限期地拒绝进入到一个需要资源,因为其他 成员组成垄断这个资源。 5.7列出对互斥的要求。 答:1.必须强制实施互斥:在具有关于相同资源或共享对象的临界区的所有进程中,一次只允许一个进程进入临界区。2.一个在临界区停止的进程必须不干涉其他进程。3.绝不允许出现一个需要访问临界区的进程被无限延迟的情况,即不会饿死或饥饿。4.当没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入。5.对相关进程的速度和处理器的数目没有任何要求和限制。6.一个进程驻留在临界区中的时间是有限的。 5.8在信号量上可以执行什么操作。 答:1.一个信号量可以初始化成非负数。2.wait操作使信号量减1,如果值为负数,那么进程执行wait就会受阻。3signal操作使信号量增加1,如果小于或等于0,则被wait操作阻塞的进程被解除阻塞。 5.9.二元信号量与一般信号量有什么区别。 答:二元信号量只能取0或1,而一般信号量可以取任何整数。 5.10强信号量与弱信号量有什么区别。 答:强信号量要求在信号量上等待的进程按照先进先出的规则从队列中移出。弱信号量没有此规则。 5.11.什么是管程。 答:管程是由一个或多个过程,一个初始化序列和局部数据组成的软件模块。 5.12对于消息,有阻塞和无阻塞有什么区别? 答: 5.13.通常与读者-写者问题相关联的有哪些条件? 答:1.任意多的读进程可以同时读这个文件,2.一次只有一个写进程可以往文件中写,3.如果一个写进程正在往文件中写时,则禁止任何读进程读文件。 习题: 5.1 答:b.协同程序read读卡片,将字符赋给一个只有一个字大小的缓冲区rs然后在赋给squash协同程。协同程序Read在每副卡片图像的后面插入一个额外的空白。协同程序squash不需要知道任何关于输入的八十个字符的结构,它简单的查找成对出现的星号,然后将更改够的字符串经由只有一个字符大小的缓冲sp,传递给协同程序print。最后协同程序print简单的接受到来的字符串,并将他们打印在包含125个字符的行中。 5.2.考虑一个并发程序,它有两个进程p和q,定义如下。A.B.C.D和E是任意的原子语句。假设住程序执行两个进程的parbegin Void p() void q() { A; { D; B; E; C; } } 答:ABCDE;ABDCE;ABDEC;ADBCE;ADBEC;ADEBC;DEABC;DAEBC;DABEC;DABCE; 5.3考虑下面的程序 const int n=50; int tally; void total() { int count; for(count =1;count =n;count ++) {tally++; } } void main() { tally =0; parbegin(to

文档评论(0)

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

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

1亿VIP精品文档

相关文档