操作系统第二章 习题.ppt

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

进程在等待系统分配处理器以便运行时,处于() A)等待态 B)就绪态 C) 运行态 D)以上都不是 不属于进程的组成部分的是() A)程序 B)数据集 C)进程控制快 D)系统软件 某系统的进程状态转换图如图所示请说明: 请说明 引起各种状态转换的典型事件有哪些? 当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一进程作一次状态转换,在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换1? 试说明是否会发生下述因果转换: 2?1 3?2 4?1 进程的互斥与同步 从下面对临界区的论述中,选择出两条正确的论述: (1)临界区是指进程中用于实现进程互斥的那段代码。 (2)临界区是指进程中用于实现进程同步的那段代码。 (3)临界区是指进程中用于实现进程通信的那段代码。 (4)临界区是指进程中用于访问共享资源的那段代码。 (5)临界区是指进程中访问临界资源的那段代码。 (6)若进程A与进程B必须互斥地进入自己的临界区,则进程A出于对应得临界区内时,仍有可能被进程B中断。 (7)若进程A与进程B必须互斥地进入自己的临界区,则进程A出于对应得临界区内时,便不能被进程B中断。 用信号量S实现对系统中4台打印机的互斥使用,S.value的初值应设置为(A),若S.value的当前值为-1,则表示S.L队列中有(B)个等待进程。 A:(1) 1; (2) 0; (3) -1; (4) 4; (5) –4。 B:(1) 0; (2) 1; (3) 2; (4) 3; (5) 4; (6) 5; (7) 6; 设有5个哲学家,共享一张放有5把椅子的桌子,每人分得1把椅子。但是,桌子上总共只有5支筷子,在每人两边分开各放一支。哲学家们在肚子饥饿时才试图分两次从两边拾起筷子就餐。 条件: 1)只有拿到两支筷子时,哲学家才能吃饭。 2)如果筷子已在他人手上,则该哲学家必须等待到他人吃完之后才能拿到筷子。 3)哲学家在自己未拿到两支筷子吃饭之前,决不放下自已手中的筷子。 要求: 描述一种没有人饿死(永远拿不到筷子)算法。 设信号量c[0]~c[4],初值均为1,分别表示i号筷子被拿(I=0,1,2,3,4), 奇数号哲学家先取右边的筷子,偶数号哲学家先取左边的筷子。 第i个哲学家要吃饭: begin if(i mod 2==0) { p(c[i]); p(c[i+1 mod 5]); eat; v (c[i]); v (c[i+1 mod 5]); } else { p(c[i+1 mod 5]); p(c[i]); eat; v (c[i+1 mod 5]); v (c[i]); } end; 嗜睡的理发师问题 一个理发店有一个有N张沙发的等候室和一个放有一张理发椅的理发室组成。没有顾客要理发时,理发师便去睡觉。当一个顾客走进理发店时,如果所有的沙发都已被占用,他便离开理发店;否则如果理发师正在为顾客理发,则该顾客就找一张空沙发坐下等待;如果理发师因无顾客正在睡觉,则由新到的顾客唤醒理发师为其理发。在理发完成后,顾客必须付费,直到理发师收费后才能离开理发店。试用信号量实现这一同步问题。 需要设置一个整型变量count用来对理发店中的顾客进行计数,并须设置7个信号量,其中:mutex用来实现顾客进程对count变量的互斥访问,其初值为1;sofa是对应于等候室中N张沙发的资源信号量,其初值为N;empty表示是否有空闲的理发椅,其初值为1;full表示理发椅上是否坐有等待理发的顾客,其初值为0;cut用来等待理发的完成,其初值为0;payment用来等待付费,其初值为0;receipt用来等待收费,其初值为0。具体的算法描述如下: int count=:integer=0; flag=1; Semaphore mutex=1, sofa=n, empty=1, full=0, cut=0, payment=0, receipt=0; 顾客: guest { wait(mutex); if(countn) { signal(mutex); exit shop;}//如果理发椅和沙发都坐有顾客则离开 else { count++;//顾客数加1 if(count1) //如果理发椅上已经坐有顾客 { signal(mutex); wait(sofa);//选择沙发 sit on sofa;// 入座沙发 wait(empty);//等待理发椅空闲 get up from sofa;//从沙发上起身 signa

文档评论(0)

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

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

1亿VIP精品文档

相关文档