《操作系统第二章 习题》由会员分享,可在线阅读,更多相关《操作系统第二章 习题(15页珍藏版)》请在金锄头文库上搜索。
1、*计算机操作系统西安交通大学电信学院*进程的描述与控制 l关于并发进程,以下叙述不正确的是()A)若系统中存在一组可同时执行的进程,则该组进程具有 并发性 B)并发进程之间一定是有交往的 C)无关并发进程一定没有共享变量 D)有交往的并发进程一定共享某些资源l进程在等待系统分配处理器以便运行时,处于()A)等待态 B)就绪态 C) 运行态 D)以上都不是l不属于进程的组成部分的是()A)程序 B)数据集 C)进程控制快 D)系统软件l某系统的进程状态转换图如图所示请说明: 运行就绪阻塞4213l请说明引起各种状态转换的典型事件有哪些? 当我们观察系统中某些进程时,能够看到某一进程产 生的一次状
2、态转换能引起另一进程作一次状态转换, 在什么情况下,当一个进程发生转换3时能立即引起 另一个进程发生转换1? 试说明是否会发生下述因果转换:l21l32l41进程的互斥与同步l从下面对临界区的论述中,选择出两条正确的论述:(1)临界区是指进程中用于实现进程互斥的那段代码。(2)临界区是指进程中用于实现进程同步的那段代码。(3)临界区是指进程中用于实现进程通信的那段代码。(4)临界区是指进程中用于访问共享资源的那段代码。(5)临界区是指进程中访问临界资源的那段代码。(6)若进程A与进程B必须互斥地进入自己的临界区,则进程A 出于对应得临界区内时,仍有可能被进程B中断。(7)若进程A与进程B必须互
3、斥地进入自己的临界区,则进程A 出于对应得临界区内时,便不能被进程B中断。l用信号量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;l设有5个哲学家,共享一张放有5把椅子的桌子,每人分 得1把椅子。但是,桌子上总共只有5支筷子,在每人两 边分开各放一支。哲学家们在肚子饥饿时才试图分两次 从两边拾起筷子就餐。条件:l1)只有拿
4、到两支筷子时,哲学家才能吃饭。l2)如果筷子已在他人手上,则该哲学家必须等待到他人吃完之后 才能拿到筷子。l3)哲学家在自己未拿到两支筷子吃饭之前,决不放下自已手中的 筷子。要求:l描述一种没有人饿死(永远拿不到筷子)算法。 设信号量c0c4,初值均为1,分别表示i号筷子被拿(I=0,1,2,3,4), 奇数号哲学家先取右边的筷子,偶数号哲学家先取左边的筷子。第i个哲学家要吃饭: begin if(i mod 2=0) p(ci); p(ci+1 mod 5); eat; v (ci); v (ci+1 mod 5); else p(ci+1 mod 5); p(ci); eat; v (ci
5、+1 mod 5); v (ci); end;嗜睡的理发师问题 一个理发店有一个有N张沙发的等候室和一个放有 一张理发椅的理发室组成。没有顾客要理发时, 理发师便去睡觉。当一个顾客走进理发店时,如 果所有的沙发都已被占用,他便离开理发店;否 则如果理发师正在为顾客理发,则该顾客就找一 张空沙发坐下等待;如果理发师因无顾客正在睡 觉,则由新到的顾客唤醒理发师为其理发。在理 发完成后,顾客必须付费,直到理发师收费后才 能离开理发店。试用信号量实现这一同步问题。 l需要设置一个整型变量count用来对理发店中的 顾客进行计数,并须设置7个信号量,其中: mutex用来实现顾客进程对count变量的互
6、斥访 问,其初值为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(count
7、n) signal(mutex); exit shop;/如果理发椅和沙发都坐有顾客则离开else count+;/顾客数加1if(count1) /如果理发椅上已经坐有顾客 signal(mutex); wait(sofa);/选择沙发 sit on sofa;/ 入座沙发 wait(empty);/等待理发椅空闲 get up from sofa;/从沙发上起身 signal(sofa);/腾出空闲沙发 else /目前只有一位顾客 signal(mutex); wait(empty); sit on the baber_chair; /入座理发椅 signal(full);/宣告理发椅上
8、已有人,请理发师来理发 wait(cut);/等待理发结束 pay;/付钱 signal(payment); wait(receipt);/等待收完款 get up from the baber_chair;/从理发椅上起身 signal(empty);/腾出理发椅 wait(mutex); count-;/顾客数减1 signal(mutex); exit shop;/离开 理发师: barber do wait(full);/等待唤醒cut hair;/开始理发 signal(cut);/理完wait(payment);/等待付款accept payment;/收款signal(receipt);/收完款 while(flag=1);