习题选讲与解析一、选择题1.在计算机系统中配置操作系统的主要目的是(A)。操作系统的主要功能是管理计算机系统中的(B),其中包括(C)、(D),以及文件和设备。这里的(C)管理主要是对进程进行管理。A:(1)增强计算机系统的功能;(2)提高系统资源的利用率;(3)提高系统的运行速度;(4)合理组织系统的工作流程,以提高吞吐量。B:(1)程序和数据;(2)进程;(3)资源;(4)作业;(5)软件;(6)硬件。C,D:(1)存储器;(2)虚拟存储器;(3)运算器;(4)处理机;(5)控制器。2.操作系统有多种类型:允许多个用户以交互方式使用计算机的操作系统称为(A);允许多个用户将若干个作业提交给计算机系统集中处理的操作系统称为(B);在(C)的控制下,计算机系统能及时处理由过程控制反馈的数据,并做出响应;在IBM-PC机上的操作系统称为(D)。A,B,C,D:(1)批处理操作系统;(2)分时操作系统;(3)实时操作系统;(4)微机操作系统;(5)多处理机操作系统。A:2B:3C:4D:1A:2B:1C:3D:43.在设计分时操作系统时,首先要考虑的是(A);在设计批处理操作系统时,先要考虑的是(B);在设计实时操作系统时,首先要考虑的是(C)。A,B,C:(1)灵活性和可适应性;(2)交互性和响应时间;(3)周转时间和系统吞吐量;(4)实时性和可靠性。4.分时系统的响应时间(及时性)主要是根据(A)确定的,而试试系统的响应时间则是由(B)确定的。A,B:(1)时间片大小;(2)用户数目;(3)计算机运行速度;(4)用户所能接受的等待时间;(5)控制对象所能接受的时延;(6)实时调度。5.采用(A)结构时,将OS分成用于实现OS最基本功能的内核和提供各种服务的服务器两个部分。通常,下列模块中必须包含在操作系统内核中的是(B)模块。A:(1)整体式;(2)模块化;(3)层次式;(4)微内核。B:(1)内存分配;(2)中断处理;(3)文件处理;(4)命令处理。A:4B:2A:4B:5A:2B:3C:46.在3.X版本以前的MS-DOS是(A)操作系统,Windows95是(B)操作系统,WindowsXP是(C)操作系统,它们都是由(D)开发的。A,B,C:(1)单用户单任务;(2)单用户多任务;(3)多用户单任务;(4)多用户多任务。D:(1)IBM公司;(2)Microsoft公司;(3)Microsoft和IBM联合;(4)Bell实验室;7.下面8个系统中,必须是实时操作系统的有()A计算机辅助设计系统;B航空定票系统;C过程控制系统;D机器翻译系统;E办公自动化系统;F计算机激光照排系统;G情报检索系统;H导弹的制导系统二、简答题在操作系统中实现虚拟的关键技术是什么?并加以说明。操作系统中所谓的”虚拟“,是指通过某种技术把一个物理实体变为若干个逻辑上的对应物,相应的用于实现虚拟的技术称为虚拟技术。在操作系统中利用了多种虚拟技术分别用来实现虚拟处理机、虚拟内存、虚拟外设和虚拟信道等。虚拟的实现主要是通过分时技术,例如,多道程序系统中,通过分时技术来实现虚拟处理机;将一台物理处理机虚拟为多台逻辑上的处理机,是靠多道程序分时地使用同一台物理处理机来实现的。微观上,该处理机在每一时刻只运行一道程序,它们分时地运行;然而在宏观上,系统中确有几道程序在同时运行,从而给用户的感觉是系统中同时同时有多台处理机在为其中的每一道程序服务,显然用户所感觉到的处理机并不实际存在。A:1B:2C:4D:2ABCGH试从交互性、及时性以及可靠性三个方面,比较分时系统与实时系统。P11已知一个求值公式(A2+3B)/(B+5A),若A,B已赋值,试画出该公式求值过程的前趋图,并用信号量解决公式的求解过程。S1:x1=A*AS2:x2=3*BS3:x3=5*AS4:x4=x1+x2S5:x5=B+x3S6:x6=x4/x5开始结束S1S4S6S5S3S2S1S4S6S5S3S2structsemaphorea,b,c,d,e,=0,0,0,0,0;cobegin{S1;V(a);}{S2;V(b);}{S3;V(c);}{P(a);P(b);S4;V(d)}{P(c);S5;V(e);}{P(d);P(e);S6);}coendacbde吃水果问题问题描述:桌上有一只盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘里的桔子,女儿专等吃盘里的苹果。只要盘子空,则爸爸或妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请给出四人之间的同步关系,并用P、V操作实现四人正确活动的程序。voidson(void){while(TRUE){P(so);getanorange;V(s);eatanorange;}}voiddaught(void){while(TRUE){P(sp);getanapple;V(s);eatanapple;}}coendstructsemaphores,sp,so=1,0,0;cobeginvoidfather(void){while(TRUE){haveanapple;P(s);putanapple;V(sp);}}voidmother(void){while(TRUE){haveanorange;P(s);putanorange;V(so);}}Plate1爸私applempty盘中无苹果1女私applefull盘中有苹果0妈私orangempty无桔子1儿私orangefull有桔子0爸{p(plate);P(applempty);放苹果;V(applefull);V(plate);}女{p(applefull);P(plate);取苹果;V(applempty);}儿{p(orangefull);P(plate);取桔子;V(plate);V(orangempty);}母{p(plate);P(orangempty);放桔子;V(orangefull);V(plate);}mutex盘子a表示爸爸是否在盘中放入苹果b女儿是否可吃苹果c表示妈妈是否在盘中放桔子d为儿子是否可吃桔子{p(a);p(mutex);放入苹果;v(b);}{p(b);取走苹果;v(a);v(mutex);}{p(c);p(mutex);放入桔子;v(d);}{p(d);取走桔子;v(c);v(mutex)}初值=?mutex盘子1appfull苹果个数0avail盘中空位个数初值为norgfull桔子的个数0dadP(avail);P(mutex);putanapple;V(appfull);V(mutex);momP(avail);P(mutex);putanorange;V(orgfull);V(mutex);sonP(orgfull);P(mutex);getanapple;V(avail);V(mutex);dauP(appfull);P(mutex);getanapple;V(avail);V(mutex);注意初值avail的设置,n不正确BeginP(apple);P(pan)V(apple);V(pan);P(orange);P(pan);V(orange);V(pan);P(pan);P(apple);V(apple);V(apple);V(pan);P(pan);P(orange);V(orange);V(pan);四人动作未分开,apple和orange变量的含义不明确empty=1;apple=0;orange=0;S1:parbeginP(empty);count:=count+1;V(apple);dosthelseparendS2:parbeginP(empty);count:=count+1;V(orange);dosthelseparendS3:parbeginP(orange);count:=count-1;If(count=0)V(empty);dosthelseparendS4:parbeginP(apple);count:=count-1;If(count=0)V(empty);dosthelseparend父子女母count=0;structsemphoreplate,platempty,orange,apple=1,1,0,0;cobeginmother(void)beginP(platempty);P(plate);桔子放入盘中;V(orange);V(plate);endson(void)beginP(orange);P(plate);吃桔子;V(platempty);V(plate);endmother(void)beginP(apple);P(plate);吃苹果;V(platempty);V(plate);endcoendfather(void)beginP(platempty);P(plate);放苹果;V(apple);V(plate);end设公共汽车上,司机和售票员的活动分别是:司机:售票员:启动车辆上下乘客正常行车关车门到站停车售票开车门上下乘客在汽车不断到站,停车,行驶过程中,这两个活动的同步关系。structsemaphores1,s2=0,0;cobeginvoiddriver(void){while(TRUE){p(s2);启动车辆;正常行车;到站停车;V(s1);}}voidconductor(void){while(TRUE){上、下乘客;关车门;V(s2);售票;P(s1);开车门;上、下乘客;}}coendS1是否可以开车门S2是否可以发动车辆structsemaphores1,s2=1,0;cobeginvoiddriver(void){while(TRUE){P(s2);启动车辆;正常行车;到站停车;V(s1);}}voidconductor(void){while(TRUE){P(s1);开车门;上、下乘客;关车门;V(s2);售票;}}coend司机-售票员问题另解:S1是否可以开车门=1S2是否可以发动车辆=01.在某系统中,三个进程共享四台设备资源,这些资源一次只能一台地为进程服务和释放,每个进程最多需要二台设备资源,试问在系统中是否会产生死锁?答:不会。若所有的资源都被占用,而占用者又都不满足必须的全部资源,此时就有一个或几个进程无限期地等待更多的资源,系统就会出现死锁。本题中若4台设备资源都被占用,则其中一定有一个进程获得2台设备资源(满足其最大的需求量),这个进程必然会在有限的时间内完成其工作,并释放其所占用的2台资源,这样也就能满足其它二进程对设备资源的要求,继续完成它们各自的工作。某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水入缸供老和尚饮用。水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水。水桶总数为3个。每次入水、取水仅为一桶,且不可同时进行。试给出有关取水、入水的算法描述。应首先考虑清楚本题需要几个进程。从井中取水后向缸中倒水此为连续动作,可算同一进程,从缸中取水为另一进程。在考虑信号量,有关互斥的资源有水井(一次仅一个水桶进出),水缸(一次如水取水时均为一桶),分别为之设置信号量mutex1,mutex2控制互斥;另有同步问题存在:三个水桶无论从井中取水还是入出水缸都是一次一个,应为之设信号量count,抢不到水桶的进程只好等待;还有水缸满时,不可入水,设信号量empty,控制入水量,水缸空时不可出水,设信号量full,控制出水量。mutex1:=1;mutex2:=1;empty:=10;full:=0;count:=3;cobegin小和尚打水:beginL1:P(empty);P(count);P(mutex1);从井中取水;V(mutex1);P(mutex2);送入水缸;V(mutex2);V(count);V(full);GotoL1:end;老和尚取水:beginL2:P(full);P(count);P(mutex2