现代操作系统课后习题答案.docx
《现代操作系统课后习题答案.docx》由会员分享,可在线阅读,更多相关《现代操作系统课后习题答案.docx(29页珍藏版)》请在冰豆网上搜索。
现代操作系统课后习题答案
第二章进程管理
第一部分教材习题(P81)
3、为什么程序并发执行会产生间断性特征?
(P36)
4、程序并发执行,为何会失去封闭性和可再现性?
(P37)
【解】程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。
同时由于失去了封闭性,也将导致其再失去可再现性。
程序在并发执行时,由于失去了封闭性,程序经过多次执行后,其计算机结果已与并发程序的执行速度有关,从而使程序的执行失去了可再现性。
5、在操作系统中为什么要引入进程概念?
(P37)它会产生什么样的影响?
【解】
在操作系统中引入进程的概念,是为了实现多个程序的并发执行。
传统的程序不能与其他程序并发执行,只有在为之创建进程后,才能与其他程序(进程)并发执行。
这是因为并发执行的程序(即进程)是“停停走走”地执行,只有在为它创建进程后,在它停下时,方能将其现场信息保存在它的PCB中,待下次被调度执行是,再从PCB中恢复CPU现场并继续执行,而传统的程序却无法满足上述要求。
建立进程所带来的好处是使多个程序能并发执行,这极大地提高了资源利用率和系统吞吐量。
但管理进程也需付出一定的代价,包括进程控制块及协调各运行机构所占用的内存空间开销,以及为进行进程间的切换、同步及通信等所付出的时间开销。
6、试从动态性、并发性和独立性上比较进程和程序?
(P37)
【解】
(1)动态性:
进程既然是进程实体的执行过程,因此,动态性是进程最基本的特性。
动态性还表现为:
“它由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤消而消亡”。
可见,进程有一定的生命期。
而程序只是一组有序指令的集合,并存放在某种介质上,本身并无运动的含义,因此,程序是个静态实体。
(2)并发性:
所谓进程的并发,指的是多个进程实体,同存于内存中,能在一段时间内同时运行。
并发性是进程的重要特征,同时也成为OS的重要特征。
引入进程的目的也正是为了使其程序能和其它进程的程序并发执行,而程序是无法并发执行的。
(3)独立性:
进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。
凡未建立进程的程序,都不能作为一个独立的单位参加运行。
试比较进程与程序的异同。
【解】进程和程序是紧密相关而又完全不同的两个概念。
(1)每个进程实体中包含了程序段和数据段这两个部分,因此说进程与程序是紧密相关的。
但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构,即PCB。
(2)进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建而产生、由调度而执行、由撤消而消亡,即它具有一定的生命期。
而程序则只是一组指令的有序集合,并可永久地存放在某种介质上,其本身不具有运动的含义,因此是静态的。
(3)多个进程实体可同时存放在内存中并发地执行,其实这正是引入进程的目的。
程序(在没有为它创建进程时)的并发执行具有不可再现性,因此程序不能正确地并发执行。
(4)进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位。
程序(在没有为它创建进程时)因其不具有PCB,所以它是不可能在多道程序环境下独立运行的。
(5)进程与程序不一一对应。
同一个程序的多次运行,将形成多个不同的进程;同一个程序的一次执行也可以产生多个进程;一个进程在其生命期的不同时候也可以执行不同的程序。
7、试说明PCB的作用?
为什么说PCB是进程存在的惟一标志?
(P41)
【解】PCB是进程实体的一部分,是OS中最重要的记录型数据结构。
它记录了OS所需的、用于描述进程情况及控制进程运行所需的全部信息。
PCB的作用,是使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
在进程的整个生命期中,系统总是通过PCB对进程进行控制,也就是说,系统是根据进程的PCB感知到该进程的存在的,所以说,PCB是进程存在的标志。
8、试说明进程在三个基本状态之间转换的典型原因?
(P38)
【解】
(1)处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程就由就绪状态变为执行状态
(2)正在执行的进程因发生某事件而无法执行,如暂时无法取得所需资源,则由执行状态转变为阻塞状态。
(3)正在执行的进程,如因时间片用完或被高优先级的进程抢占处理机而被暂停执行,该进程便由执行转变为就绪状态。
某系统的进程状态转换图如图所示。
(1)说明引起各种状态转换的典型事件。
(2)分析下述状态转换是否可立即引起其他的状态转换:
1,2,3,4。
执行
就绪
阻塞
4
3
1
2
【解】
(1)引起各种状态转换的典型事件如表所示。
状态转换
引起转换的典型事件
转换1
CPU调度
转换2
执行进程的时间片用完,或被其他优先权更高的进程抢占CPU
转换3
等待某种事件(如I/O的完成,或被他人占用的临界资源变为可用状态
转换4
进程所等待的事件发生(如I/O完成,或所等待的临界资源变为可用状态)
(2)状态转换1不会立即引起其他状态转换。
状态转换2必然立即引发状态转换1:
状态转换2发生后,进程调度程序必然要选出一个新的就绪进程投入运行,该新进程可能是其他进程,也可能是刚从执行状态转换成就绪状态的那个进程。
状态转换3可能立即引发状态转换1:
状态转换3发生后,若就绪队列非空,则进程调度程序将选出一个就绪进程投入执行。
状态转换4可能引发状态转换1:
状态转换4发生后,若CPU空闲,并且没有其他进程竞争CPU,则该进程将被立即调度。
另外,状态转换4还可能同时引发状态转换1和2:
若系统采用抢占调度方式,而新就绪的进程具备抢占CPU的条件(如其优先权很高),则它可立即得到CPU转换成执行状态,而原来正在执行的进程则转换成就绪状态。
某系统的进程状态变迁图,请说明:
(1)引起各种状态转换的典型事件有哪些?
(2)当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一进程作一次状态转换。
在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换1?
(3)试说明是否会发生下述因果转换:
a)21
b)32
c)41
解:
(1)当进程调度程序从就绪队列中选取一个进程投入运行时引起转换1;正在执行的进程如因时间片用完而被暂停执行就会引起转换2;正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成I/O)则会引起转换3;当进程等待的事件发生时(如I/O完成)则会引起转换4。
(2)如果就绪队列非空,则一个进程的转换3会立即引起另一个进程的转换1。
这是因为一个进程发生转换3意味着正在执行的进程由执行状态变为阻塞状态,这时处理机空闲,进程调度程序必然会从就绪队列中选取一个进程并将它投入运行,因此只要就绪队列非空,一个进程的转换3能立即引起另一个进程的转换1。
(3)所谓因果转换指的是有两个转换,一个转换的发生会引起另一个转换的发生,前一个转换称为因,后一个转换称为果,这两个转换称为因果转换。
当然这种因果关系并不是什么时候都能发生,而是在一定条件下才会发生。
a)21:
当某进程发生转换2时,就必然引起另一进程的转换1。
因为当发生转换2时,正在执行的进程从执行状态变为就绪状态,进程调度程序必然会从就绪队列中选取一个进程投入运行,即发生转换1。
b)32:
某个进程的转换3决不可能引起另一进程发生转换2。
这是因为当前执行进程从执行状态变为阻塞状态,不可能又从执行状态变为就绪状态。
c)41:
当处理机空闲且就绪队列为空时,某一进程发生转换4,就意味着有一个进程从阻塞状态变为就绪状态,因而调度程序就会将就绪队列中的此进程投入运行。
9、为什么要引入挂起状态?
(P39)该状态具有哪些性质?
10、在进行进程切换时,所要保存的处理机状态信息主要有那些?
(P42)
【解】保存的处理机状态信息主要由处理机中的各种寄存器内容组成。
这些寄存器包括:
通用寄存器,指令寄存器,程序状态字PSW,用户栈指针。
11、试说明引起进程创建的主要事件。
(P44)
【解】
(1)用户登录在分时系统中,用户在终端键入登录命令后,若是合法用户,系统将为该终端用户建立一个进程,并插入到就绪队列中。
(2)作业调度批处理程序中,作业调度程序按一定的算法调度到某个作业时,就将该作业装入内存,为它分配必要的资源,并立即为其创建进程,插入就绪队列中。
(3)提供服务运行中用户程序提出某种请求,系统专门创建一个进程来提供用户所需服务。
(4)应用请求应用进程自己创建一个进程,使自己和新进程以并发运行方式完成特定任务。
12、试说明引起进程被撤消的主要事件。
13、在创建一个进程时所要完成的主要工作是什么?
(P44)
【解】需完成的主要工作有:
(1)申请空白PCB;
(2)为新进程分配资源;
(3)初始化PCB,其中包括:
初始化标识符信息。
将系统分配的标识符、父进程标识符填入新PCB中;
初始化处理机状态信息。
使程序计数器指向程序入口地址,使栈指针指向栈顶;
初始化处理机控制信息。
将进程状态设置为就绪或静止就绪,对于优先级通常设置为最低,除非用户提出高优先级要求。
(4)将新进程插入就绪队列。
14、在撤消一个进程时所要完成的主要工作是什么?
15、试说明引起进程阻塞或被唤醒的主要事件是什么?
(P46)
16、进程在运行时,存在哪两种形式的制约?
并举例说明之。
17、为什么进程在进入临界区之前,应先执行“进入区”代码,在退出临界区后又执行“退出区”代码?
(P50)
【解】为了保证诸进程互斥进入自己的临界区,便可实现它们对临界资源的互斥访问。
为此,每个进程在进入临界区之前应先对欲访问的临界资源进行检查,看它是否正被访问。
如果此刻临界资源没被访问,则该进程便可进入临界区,对该资源进行访问,并设置它正被访问的标志;如果此刻该临界资源正被某进程访问,则本进程不能进入临界区。
因此,必须在临界区前增加一段用于上述检查的代码,把这段代码称为进入区。
相应地,在临界区后面也要加上一段称为退出区的代码,用于将临界区正被访问的标志恢复为未被访问标志。
18、同步机构应遵循哪些基本准则?
为什么?
(P50)
【解】同步机构应遵循的基本准则有:
(1)空闲让进
无进程处于临界区时,相应的临界资源处于空闲状态,因而可允许一个请求进入临界区的进程立即进入自己的临界区,以有效利用临界资源。
(2)忙则等待
当已有进程进入自己的临界区时,意味着相应的临界资源正被访问,因而所有其他试图进入临界区的进程必须等待,以保证诸进程互斥地访问临界资源。
(3)有限等待
对要求访问临界资源的进程,应保证该进程能在有限时间内进入自己的临界区,以免陷入“死等”状态。
(4)让权等待
当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”。
19、试从物理概念上来说明记录型信号量wait和signal操作?
(P51)
【解】在记录型信号量机制中,的初值表示系统中某类资源的数目,因而又称资源信号量,每次的wait操作,意味着进程请求一个单位的资源,因此描述为:
=;当<0时,表示资源已分配完毕,因而进程调用block原语,进行自我阻塞,放弃处理机,并插入到信号量链表中。
可见,该机制遵循了让权等待准则。
此时的绝对值表示在该信号量链表中已阻塞进程的数目。
每次signal操作,表示执行进程释放一个单位资源,故:
=+1操作表示资源数目加1。
若加1后仍是<=0则表示该信号量链表中,仍有等待该资源的进程被阻塞,故还要调用wakeup原语,将链表中的第一个等待进程唤醒。
如果的初值为1,表示只允许一个进程访问临界资源,此时的信号量转化为互斥信号量。
20、你认为整型信号量机制是否完全遵循了同步机构的四条准则?
(P52)
【解】在整型信号量机制中的wait操作,只要是信号量S<=0,就会不断地测试,因此,该机制并未遵循“让权等待”的准则,而是使该进程处于“忙等”的状态。
21、如何利用信号量机制来实现多个进程对临界资源的互斥访问?
并举例说明之。
22、试写出相应的程序来描述图2-17所示的前趋图。
【解】
(1)
Vara,b,c,d,e,f,g,h;semaphore:
=0,0,0,0,0,0,0,0;
begin
parbegin
beginS1;signal(a);signal(b);end;
beginwait(a);S2;signal(c);signal(d);end;
beginwait(b);S3;signal(e);end;
beginwait(c);S4;signal(f);end;
beginwait(d);S5;signal(g);end;
beginwait(e);S6;singal(h);end;
beginwait(f);wait(g);wait(h);S7;end;
parend
end
(2)
Vara,b,c,d,e,f,g,h,i,j;semaphore:
=0,0,0,0,0,0,0,0,0,0,0;
begin
parbegin
beginS1;signal(a);signal(b);end;
beginwait(a);S2;signal(c);signal(d);end;
beginwait(b);S3;signal(e);signal(f);end;
beginwait(c);S4;signal(g);end;
beginwait(d);S5;signal(h);end;
beginwait(e);S6;singal(i);end;
beginwait(f);S7;signal(j);end;
beginwait(g);wait(h);wait(i);wait(j);S8;end;
parend
end
23、在生产者—消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有什么影响?
【解】在生产者—消费者问题中,如果缺少了signal(full),那么消费者会认为生产者没有生产而阻塞,而生产者会不断生产,直到empty为0后阻塞,然后两个进程陷入“死等”状态。
如果缺少了signal(empty)开始两进程可同步运行。
但当empty为0时生产者会因此而阻塞,然后消费者进程继续运行直到full也为0阻塞,然后两个进程陷入“死等”状态。
24、在生产者—消费者问题中,如果将两个wait操作即wait(full)和wait(mutex)互换位置,或者将signal(mutex)与signal(full)互换位置,结果会如何?
【解】如果将wait(full)和wait(mutex)互换位置,则如果consumer先进入临界区,就会一直等待full,但由于没有signal(mutex),producer将无法进入临界区而等待,则两个进程相互等待,陷入死锁。
如果signal(full)与signal(mutex)互换位置,则会使full的值不再是等待的consumer进程数目。
varmutex,empty,full:
semaphore:
=1,n,0;
buffer:
array[0,…,n-1]ofitem;in,out:
integer:
=0,0;
Begin
parbegin
producer:
begin
repeat
……
produceraniteminnextp;
……
wait(mutex);
程被进程调度程序选中B.等待某一事件
C.等待的事件发生D.时间片用完
2.分配到必要的资源并获得处理机时的进程状态是B。
A.就绪状态B.执行状态C.阻塞状态D.撤消状态
3.P、V操作是A。
A.两条低级进程通信原语B.两组不同的机器指令
C.两条系统调用命令D.两条高级进程通信原语
4.设系统中有n(n>2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况,
不可能发生的情况是A。
A.没有运行进程,有2个就绪进程,n个进程处于等待状态。
B.有1个运行进程,没有就绪进程,n-1个进程处于等待状态。
C.有1个运行进程,有1个就绪进程,n-2个进程处理等待状态。
D.有1个运行进程,n-1个就绪进程,没有进程处于等待状态。
5.若P、V操作的信号量S初值为2,当前值为-1,则表示有B等待进程。
A.0个B.1个C.2个D.3个
6.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件是D。
A.时间片用完B.等待某事件发生
C.等待的某事件已发生D.被进程调度程序选中
7.进程的三个基本状态在一定条件下可以相互转化,进程由运行状态变为阻塞状态的条件是B。
A.时间片用完B.等待某事件发生
C.等待的某事件已发生D.被进程调度程序选中
8.下列的进程状态变化中,C变化是不可能发生的。
A.运行就绪B.运行就绪C.等待运行D.等待就绪
9.一个运行的进程用完了分配给它的时间片后,它的状态变为A。
A.就绪B.等待C.运行D.由用户自己确定
10.用V操作唤醒一个等待进程时,被唤醒进程的状态变为B。
A.等待B.就绪C.运行D.完成
11.操作系统通过B对进程进行管理。
A.JCBB.PCBC.DCTD.CHCT
12.用P、V操作可以解决A互斥问题。
A.一切B.某些C.正确D.错误
13.一个进程被唤醒意味着D。
A.该进程重新占有了CPUB.它的优先权变为最大
C.其PCB移至等待队列队首D.进程变为就绪状态
14.多道程序环境下,操作系统分配资源以C为基本单位。
A.程序B.指令C.进程D.作业
15.从静态的角度看,进程是由(A)、(B)、(C)三部分组成的,其中(C)是进程存在的唯一标志。
当几个进程共享(A)时,(A)应当是可重入代码。
A:
程序段;
B:
数据段;
C:
PCB;
16.进程的三个基本状态是(A)、(B)、(C)。
由(A)到(B)是由进程调度所引起的;由(B)到(C)是正在执行的进程发生了某事件,使之无法继续执行而引起的。
A:
就绪;
B:
执行;
C:
阻塞;
17.正在等待他人释放临界资源的进程处于(A)状态,已分配到除CPU外的所有资源的进程处于(B)状态,已获得CPU的进程处于(C)状态。
A:
阻塞;
B:
就绪;
C:
执行;
18.下列进程状态转换中,绝对不可能发生的状态转换是(A);一般不会发生的状态转换是(B)。
A:
就绪阻塞;
B:
阻塞执行;
19.在一个单处理机系统中,存在5个进程,最多可有(A)个进程处于就绪队列;如果这5个进程中有一个系统进程IDLE(也叫空转进程,因为它只是不断循环地执行空语句),则最多可有(B)个进程处于阻塞状态。
A,B:
(1)5;
(2)4;(3)3;(4)2;(5)1;(6)0。
20.正在执行的进程由于其时间片用完被暂停执行,此时进程应从执行状态变为(A)状态;处于静止阻塞状态的进程,在进程等待的事件出现后,应变为(B)状态;若进程正处于执行状态时,因终端的请求而暂停下来以便研究其运行情况,这时进程应转变为(C)状态,若进程已处于阻塞状态;则此时应转变为(D)状态。
A:
(1)静止阻塞;
(2)活动阻塞;(3)静止就绪;(4)活动就绪;(5)执行。
B:
(1)静止阻塞;
(2)活动阻塞;(3)静止就绪;(4)活动就绪;(5)执行。
C:
(1)静止阻塞;
(2)活动阻塞;(3)静止就绪;(4)活动就绪;(5)执行。
D:
(1)静止阻塞;
(2)活动阻塞;(3)静止就绪;(4)活动就绪;(5)执行。
21.为使进程由活动就绪转变为静止就绪,应利用(A)原语;为使进程由执行状态转变为阻塞状态,应利用(B)原语;为使进程由静止就绪变为活动就绪,应利用(C)原语;从阻塞状态变为就绪状态应利用(D)原语。
A:
(1)create;
(2)suspend;(3)active;(4)block;(5)wakeup。
B:
(1)create;
(2)suspend;(3)active;(4)block;(5)wakeup。
C:
(1)create;
(2)suspend;(3)active;(4)block;(5)wakeup。
D:
(1)create;
(2)suspend;(3)active;(4)block;(5)wakeup。
22.在分时系统中,导致进程创建的典型事件是(A);在批处理系统中,导致进程创建的典型事件是(B);由系统专门为运行中的应用进程创建新进程的事件是(C)。
在创建进程时,(D)不是创建所必需的步骤。
A:
(1)用户注册;
(2)用户登录;(3)用户记账;(4)用户通信。
B:
(1)作业录入;
(2)作业调度;(3)进程调度;(4)中级调度。
C:
(1)分配资源;
(2)进行通信;(3)共享资源;(4)提供服务。
D:
(1)为进程建立PCB;
(2)为进程分配内存等资源;(3)为进程分配CPU;(4)将进程插入就绪队列。
23.从下面对临界区的论述中,选出一条正确的论述。
(1)临界区是指进程中用于实现进程互斥的那段代码。
(2)临界区是指进程中用于实现进程同步的那段代码。
(3)临界区是指进程中用于实现进程通信的那段代码。
(4)临界区是指进程中用于访问共享资源的那段代码。
(5)临界区是指进程中访问临界资源的那段代码。
24.进程A和B共享同一临界资源,并且进程A正处于对应的临界区内执行。
请从下列描述中选择一条正确的描述。
C
A.进程A的执行不能被中断,即临界区的代码具有原子性。
B.进程A的执行能被中断,但中断A后,不能将CPU调度给进程B。
C.进程A的执行能被中断,而且只要B进程就绪,就可以将CPU调度给进程B。
D.进程A的执行能被中断,而且只要B进程就绪,就必定将CPU调度给进程B。
25.(A)是一种只能由wait和signal操作所改变的整型变量,(A)可用于实现进程的(B)和(C),(B)是排他性访问临界资源。
A:
(1)控制变量;
(2)锁;(3)整型信号量;(4)记录型信号量。
B:
(1)同步;
(2)通信;(3)调度;(4)互斥。
C:
(1)同步;
(2)通信;(3)调度;(4)互斥。
26.对于记录型信号量,在执行一次wait操作时,信号量的值应当(A),当其值为(B)时,进程阻塞。
在执行signal操作时,信号量的值应当为(C),当其值为(D)时,应唤醒阻塞队列中的进程。
A:
(1)不变;
(2)加1;(3)减1;(4)加指定数值;(5)减指定数值。
B:
(1)大于0;
(2)小于0;(3)大于等于0;(4)小于等于0.
C:
(1)不变;
(2)加1;(3)减1;(4)加指定数值;(5)减指定数值。
D:
(1)大于0;
(2)小于0;(3)大于等于0;(4)小于等于0.
27.用信号量S实现对系统中4台打印机的互斥使用,的初值应设置为(A),若的初值为-1,则表示队列中