操作系统习题解答1.存储程序式计算机的主要特点是什么?答:主要特点是以顺序计算为基础,根据程序规定的顺序依次执行每一个操作,控制部件根据程序对整个计算机的活动实行集中过程控制,即为集中顺序过程控制。这类计算是过程性的,实际上这种计算机是模拟人们的手工计算的产物。即首先取原始数据,执行一个操作,将中间结果保存起来;再取一个数,和中间结果一起又执行一个操作,如此计算下去。在遇到多个可能同时执行的分支时,也是先执行完一个分支,然后再执行第二个分支,直到计算完毕。2.批处理系统和分时系统各具有什么特点?答:批处理系统是在解决人—机矛盾以及高速度的中央处理机和低速度的I/O设备这两对矛盾的过程中发展起来的。它的出现改善了CPU和外设的使用情况,其特点是实现了作业的自动定序、自动过渡,从而使整个计算机系统的处理能力得以提高。在多道系统中,若采用了分时技术,就是分时操作系统,它是操作系统的另一种类型。它一般采用时间片轮转的办法,使一台计算机同时为多个任务服务。对用户都能保证足够快的响应时间,并提供交互会话功能。它与批处理系统之间的主要差别在于,分时系统是人机交互式系统,响应时间快;而批处理系统是作业自动定序和过渡,无人机交互,周转时间长。3.实时系统的特点是什么?一个实时信息处理系统和一个分时系统从外表看来很相似,它们有什么本质的区别呢?答:实时系统对响应时间的要求比分时系统更高,一般要求响应时间为秒级、毫秒级甚至微秒级。将电子计算机应用到实时领域,配置上实时监控系统,便组成各种各样的专用实时系统。实时系统按其使用方式不同分为两类:实时控制系统和实时信息处理系统。实时控制是指利用计算机对实时过程进行控制和提供监督环境。实时信息处理系统是指利用计算机对实时数据进行处理的系统。实时系统大部分是为特殊的实时任务设计的,这类任务对系统的可靠性和安全性要求很高。与分时系统相比,实时系统没有那样强的交互会话功能,通常不允许用户通过实时终端设备去编写新的程序或修改已有的程序。实时终端设备通常只是作为执行装置或询问装置,属专用系统。4.什么是多道程序设计技术?试述多道程序运行的特征。答:多道程序设计技术是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插地运行。多道程序运行的特征如下:(1)多道:计算机内存中同时存放几道相互独立的程序。(2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕。(3)微观上串行:从微观上看,内存中的多道程序轮流地或分时地占有处理机,交替执行(单处理机情况)。5.什么是操作系统?从资源管理的角度去分析操作系统,它的主要功能是什么?答:操作系统是一个大型的程序系统,它负责计算机的全部软、硬件资源的分配与回收,控制与协调等并发活动,实现信息的存取和保护。它提供用户接口,使用户获得良好的工作环境,为用户扩展新的系统功能提供软件平台,操作系统使整个计算机系统实现了高效率和高度自动化。操作系统的主要功能是管理系统的软、硬件资源,它们可归为四类:处理机管理、存储管理、设备管理和文件管理等。6.操作系统的主要特征是什么?为什么会具有这样的特征?答:操作系统的特征有:并发性,共享性,不确定性,虚拟性。其中并发性和共享性是其主要特征。由于操作系统建立并控制着多个并发执行的进程,完成着同时进行的几项任务,进程之间相互制约,并且共享着系统的某些资源,进程的这些活动便形成了操作系统的主要特征。并且许多事件的产生是随机的,而且事件产生的先后顺序又有许多可能组合,但操作系统必须能处理任何一种可能的事件序列。所以,操作系统又具有不确定性。另外,操作系统中还广泛使用了虚拟技术,使得配备了操作系统之后的系统在资源的使用上更加自由和灵活,不受物理设备数量的限制。7.设一计算机系统有输入机一台、打印机两台,现有二道程序同时投入运行,且程序A先开始运行,程序B后运行。程序A的运行轨迹为:计算50ms,打印信息100ms,再计算50ms,打印信息100ms,结束。程序B运行的轨迹为:计算50ms,输入数据80ms,再计算100ms,结束。要求:(1)用图画出这二道程序并发执行时的工作情况。(2)说明在二道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会空闲等待?(3)程序A、B运行时有无等待现象?在什么时候会发生等待现象?答:(1)工作情况如图。程序A程序B时间(2)CPU有空闲等待,它发生在100ms150ms时间段内,此时间段内程序A与程序B都在进行I/O操作。(3)程序A无等待现象,程序B在0ms50ms时间段与180ms200ms时间段内有等待现象。100ms50ms计算100ms打印50ms计算打印50ms80ms计算输入100ms计算50ms等待20ms等待0ms50ms100ms150ms180ms200ms300ms程序A程序B打印机输入设备t50ms100ms150ms180ms200ms300ms工作情况的另一种描述形式如下:进程管理习题1现代操作系统中为什么要引入“进程”概念?它与程序有什么区别?答:之所以要引入进程的概念,是因为在一些可以并发的程序段之间,存在着某种相互制约的关系,每个程序段的执行不仅要受到其它程序执行的制约,而且还要动态地依赖系统资源的分配情况,因此每个可以并发执行的程序段就会因外界条件的限制而不能运行,被迫处于阻塞状态。仅用程序的概念无法表示程序的走走停停以及程序运行过程中对资源的竞争现象,因此需要采用一种动态的概念描述并发程序这种走走停停的现象,这就产生了进程的概念。进程和程序的区别:(1)进程是程序的执行过程,是动态的过程,属于一种动态概念。程序是一组有序静态指令和数据的集合,用来指示处理机的操作,是一种静态概念。(2)从结构上看,每个进程实体是由程序段和相应的数据段两部分构成,并且进程结构中还要包含PCB,即进程控制块。(3)一个进程可以涉及到一个或几个程序的执行;反之,同一程序可以对应多个进程,即同一个程序段可以在不同数据集合上运行,可以构成不同的进程。(4)进程能真实地描述并发执行的过程,而程序仅仅是静态指令堆积的序列。(5)进程有可创建其他进程的功能,而一般的程序不具有创建其它程序的功能。(6)每一个程序都是在一个进程现场中运行的。2叙述进程的并发性和制约性。答:并发性是进程的重要特征。即多道程序中多个进程同时向前推进的过程,没个进程总是与其它进程并发地执行的。进程的制约性是指一个进程的运行受到另一进程的制约。比如有的进程可能正在等待另一进程的计算结果而无法运行,或者进程所需的资源被别的进程占有而无法运行。3进程的含义是什么?如何构造和描述进程?答:进程是程序的一次执行。进程由“进程控制块+程序+数据”构成,用进程控制块描述进程。4有三个并发进程,R负责从输入设备读入信息并传送给M,M将信息加工并传送给P,P将打印输出,写出下列条件下的并发程序。(1)双缓冲区,每个区大小为K。(2)单缓冲区,其大小为K。答:(1)双缓冲区,每个区大小为K,信号量初值如下:mutexR=mutexP=1;emptyR=emptyP=k;fullR=fullP=0;变量的初值如下:inR=outR=inP=outP=0;用类Pascal编写程序如下:varmutexR,mutexP,emptyR,fullR,emptyP,fullP:semaphere;inR,outR,inP,outP:integer;buffer:array0..k-1ofitem;bufferP:array0..k-1ofitem;procedureRbeginwhiletruedobegin输入数据data1;P(emptyR);P(mutexR);bufferR(inR):=data1;inR:=(inR+1)mod(k);V(mutexR);V(fullR);endend;procedureMbeginwhiletruedobeginP(fullR);P(mutexR);data2:=bufferR(outR);outR:=(outR+1)mod(k);V(mutexR);V(emptyR);对data2进行加工;P(emptyP);P(mutexP);bufferP(inP):=data2;inP:=(inP+1)mod(k);V(mutexP);V(fullP);endend;procedureP:beginwhiletruedobeginP(fullP);P(mutexP)data3:=bufferP(outP);outP:=(outP+1)mod(k);V(mutexP);V(emptyP);打印data3;endend;beginseminitinal(mutexR.v,1;mutexP.v,1;emptyR.v,k;fullR.v,0;emptyP.v,k;fullP.v,0);inR:=0;outR:=0;inP:=0;outP:=0;cobeginR;M;P;coendend.(2)单缓冲区,大小为kvarempty,full,ok,mutex:semaphere;inR,outR,inP,outP:integer;buffer:array0..k-1ofitem;procedureR:beginwhiletruedobegin输入数据data1;P(empty);P(mutex);buffer(inR):=data1;inR:=(inR+1)mod(k);V(mutex);V(full)endend;procedureM:beginwhileturedobeginP(full);P(mutex);data2:==buffer(outR);outR:=(outR+1)mod(k);V(mutex);对data2加工;P(mutex);buffer(inP):=data2;inP:=(inP+1)mod(k);V(mutex);V(ok);endend;proedureP:beginwhileturedobeginP(ok);P(mutex);data3:=buffer(outP);outP:=(outP+1)mod(k);V(mutex);V(empty);打印data3;end;endbeginseminitial(empty.v,k;full.v,0;ok.v,0;mutex.v,1);inR:=0;outR:=0;inP:=0;outP:=0;cobeginR;M;P;coendend.5在生产者与消费者问题的算法中,交换两个V操作的次序会有什么结果?交换两P操作的次序呢?说明理由。答:交换两P操作的次序有可能造成死锁。例如,当无空缓冲区时,如果此时生产者先做互斥操作,即:P(mutex),然后才做同步操作P(empty),由于此时empty=-1造成生产者被阻塞。当消费者执行到互斥操作P(mutex)时,由于生产者已执行过P(mutex)并未作释放,所以此时mutex=-1,造成消费者也被阻塞,生产者等消费者释放空缓冲区,而消费者则等待生产者释放临界资源的使用权,所以两个进程都无法向前推进而造成死锁。交换两个V操作的次序不会发生死锁。6设有三个进程A、B、C,其中A与B构成一对生产者与消费者(A为生产者,B为消费者),共享一个由n个缓冲块组成的缓冲池;B与C也构成一对生产者与消费者(此时B为生产者,C为消费者),共享另一个由m个缓冲块组成的缓冲池。用P、V操作描述它们之间的同步关系。答:varmutexA,emptyA,fullA,mutexC,emptyC,fullC:semaphere;i,j,a,b:integer;bufferA:array0..n-1ofitembufferC:array0..m-1ofitem;procedureproduceA:生产者进程AbeginwhileturedobeginProducenextproduct;P(emptyA);P(mutexA);bufferA(i):=product