计算机操作系统习题答案.docx
《计算机操作系统习题答案.docx》由会员分享,可在线阅读,更多相关《计算机操作系统习题答案.docx(38页珍藏版)》请在冰豆网上搜索。
![计算机操作系统习题答案.docx](https://file1.bdocx.com/fileroot1/2023-2/5/7860b0e6-ec3c-4d30-9b15-1a78d11b7cc1/7860b0e6-ec3c-4d30-9b15-1a78d11b7cc11.gif)
计算机操作系统习题答案
第一章os引论
1.设计现代OS的主要目标是什么?
方便性,有效性,可扩充性和开放性.
2.OS的作用可表现为哪几个方面?
a.OS作为用户与计算机硬件系统之间的接口;b.OS作为计算机系统资源的管理者;c.OS作为扩充机器.
4.试说明推动多道批处理系统形成和发展的主要动力是什么?
不断提高计算机资源利用率和系统吞吐量的需要;
5.何谓脱机I/O和联机I/O?
a.脱机输入输出方式(Off-LineI/O)是为了解决人机矛盾及CPU和I/O设备之间速度不匹配而提出的.
它减少了CPU的空闲等待时间,提高了I/O速度.具体内容是将用户程序和数据在一台外围机的控制下,预先从低速输入设备输入到磁带上,当CPU需要这些程序和数据时,在直接从磁带机高速输入到内存,从而大大加快了程序的输入过程,减少了CPU等待输入的时间,这就是脱机输入技术;当程序运行完毕或告一段落,CPU需要输出时,无需直接把计算结果送至低速输出设备,而是高速把结果输出到磁带上,然后在外围机的控制下,把磁带上的计算结果由相应的输出设备输出,这就是脱机输出技术.
b.若这种输入输出操作在主机控制下进行则称之为联机输入输出方式.
6.试说明推动分时系统形成和发展的主要动力是什么?
用户的需要.即对用户来说,更好的满足了人-机交互,共享主机以及便于用户上机的需求.
7.实现分时系统的关键问题是什么?
应如何解决?
a.关键问题:
及时接收,及时处理;
b.对于及时接收,只需在系统中设置一多路卡,多路卡作用是使主机能同时接收用户从各个终端上输入的数据;
---对于及时处理,应使所有的用户作业都直接进入内存,在不长的时间内,能使每个作业都运行一次.
8为什么要引入实时操作系统?
更好地满足实时控制领域和实时信息处理领域的需要.
12试在交互性,及时性和可靠性方面,将分时系统与实时系统进行比较.
a.分时系统是一种通用系统,主要用于运行终端用户程序,因而它具有较强的交互能力;而实时系统
虽然也有交互能力,但其交互能力不及前者.
b.实时信息系统对实用性的要求与分时系统类似,都是以人所能接收的等待时间来确定;而实时控制
系统的及时性则是以控制对象所要求的开始截止时间和完成截止时间来确定的.
c.实时系统对系统的可靠性要求要比分时系统对系统的可靠性要求高.
13OS具有哪几大特征?
它的最基本特征是什么?
a.并发(Concurrence),共享(Sharing),虚拟(Virtual),异步性(Asynchronism).b.其中最基本特征是并发和共享.
14处理机管理具有哪些功能?
它们的主要任务是什么?
a.进程控制,进程同步,进程通信和调度.b.进程控制的主要任务是为作业创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换.
---进程同步的主要任务是对诸进程的运行进行调节.
---进程通信的任务是实现在相互合作进程之间的信息交换.
---调度分为作业调度和进程调度.作业调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为它们分配必要的资源;而进程调度的任务是从进程的就绪队列中,按照一定的算法选出一新进程,把处理机分配给它,并为它设置运行现场,是进程投入运行.
15内存管理有哪些主要功能?
它们的主要任务是什么?
a.主要功能:
内存分配,内存保护,地址映射和内存扩充等.
b.内存分配的主要任务是为每道程序分配内存空间,提高存储器利用率,以减少不可用的内存空间,
允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要.
---内存保护的主要任务是确保每道用户程序都在自己的内存空间中运行,互不干扰.
---地址映射的主要任务是将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址.
---内存扩充的主要任务是借助虚拟存储技术,从逻辑上去扩充内存容量.
16设备管理有哪些主要功能?
其主要任务是什么?
a.主要功能:
缓冲管理,设备分配和设备处理,以及虚拟设备等.
b.主要任务:
完成用户提出的I/O请求,为用户分配I/O设备;提高CPU和I/O设备的利用率;提高I/O速度;以及方便用户使用I/O设备.
17文件管理有哪些主要功能?
其主要任务是什么?
a.主要功能:
对文件存储空间的管理,目录管理,文件的读,写管理以及文件的共享和保护.
b.主要任务:
对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性.
18是什么原因使操作系统具有异步性特征?
a.程序执行结果是不确定的,即程序是不可再现的.
b.每个程序在何时执行,多个程序间的执行顺序以及完成每道程序所需的时间都是不确定的,即不可预知性.
第二章
2.试画出下面条语句的前趋图:
S1:
a=5-x;S2:
b=a*x;S3:
c=4*x;S4:
d=b+c;S5:
e=d+3.
S1->S2->S4->S5
......../
......S3
3.为什么程序并发执行会产生间断性特征?
因为程序在并发执行过程中存在相互制约性.
4.程序并发执行时为什么会失去封闭性和可再现性?
因为程序并发执行时,多个程序共享系统中的各种资源,资源状态需要多个程序来改变,即存在资源共
享性使程序失去封闭性;而失去了封闭性导致程序失去可再现性.
5.在操作系统中为什么要引入进程的概念?
它会产生什么样的影响?
为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而引入了进程概念.
影响:
使程序的并发执行得以实行.
6.试从动态性,并发性和独立性上比较进程和程序.
a.动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,
以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体.
b.并发性是进程的重要特征,同时也是OS的重要特征.引入进程的目的正是为了使其程序能和其它进程
的程序并发执行,而程序是不能并发执行的.
c.独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本
单位.而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行.
7.试说明PCB的作用?
为什么说PCB是进程存在的唯一标志?
a.PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构.PCB中记录了操作系统所需的用于
描述进程情况及控制进程运行所需的全部信息.因而它的作用是使一个在多道程序环境下不能独立运行
的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程.
b.在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志.
8.试说明进程在三个基本状态之间转换的典型原因.
a.处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态.
b.当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行状态转变为阻
塞状态.
c.当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态.
9.为什么要引入挂起状态?
该状态具有哪些性质?
a.引入挂起状态处于5中需要:
终端用户的需要,父进程的需要,操作系统的需要,对换的需要和负荷
调节的需要.
b.处于挂起状态的进程不能接收处理机调度.
10在进行进程切换时,所要保存的处理机状态信息主要有哪些?
a.进程当前暂存信息;
b.下一条指令地址信息;c.进程状态信息;d.过程和系统调用参数及调用地址信息.
11试说明引起进程创建的主要事件.a.用户登陆;b.作业调度;c.提供服务;d.应用请求.
12试说明引起进程撤消的主要事件.a.正常结束;b.异常结束;c.外界干预;
13在创建一个进程时,需完成的主要工作是什么?
a.操作系统发现请求创建新进程事件后,调用进程创建原语Creat();b.申请空白PCB;c.为新进程分配资源;d.初始化进程控制块;e.将新进程插入就绪队列.
14在撤消一个进程时,需完成的主要工作是什么?
a.OS调用进程终止原语;b.根据被终止进程的标志符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;c.若被终止进程正处于执行状态,应立即中止该进程的执行,并设置调度标志为真;d.若该进程还有子孙进程,还应将其所有子孙进程予以终止;e.将该进程所拥有的全部资源,或者归还给其父进程,或者归还给系统;f.将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息.
15试说明引起进程阻塞或被唤醒的主要事件是什么?
a.请求系统服务;b.启动某种操作;c.新数据尚未到达;d.无新工作可做.
17.为什么进程在进入临界区之前,应先执行"进入区"代码,在退出临界区后又执行"退出区"代码?
为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为"进入区"代码;在退出临界区后,必须执行"退出区"代码,用于恢复未被访问标志.
18.同步机构应遵循哪些基本准则?
为什么?
a.空闲让进.b.忙则等待.c.有限等待.d.让权等待.
20.你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条准则?
a.在整型信号量机制中,未遵循"让权等待"的准则.b.记录型信号量机制完全遵循了同步机构的"空闲让进,忙则等待,有限等待,让权等待"四条准则.
23.在生产者-消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有何影响?
生产者-消费者问题可描述如下:
varmutex,empty,full:
semaphore:
=1,n,0;
buffer:
array[0,...,n-1]ofitem;
in,out:
integer:
=0,0;
begin
parbegin
producer:
begin
repeat
.
.
produceaniteminnextp;
.
.
wait(empty);
wait(mutex);
buffer(in):
=nextp;
in:
=(in+1)modn;
signal(mutex);
/****************/
signal(full);
/****************/
untilfalse;
end
consumer:
begin
repeat
wait(full);
wait(mutex);
nextc:
=buffer(out);
out:
=(out+1)modn;
signal(mutex);
/****************/
signal(empty);
/****************/
consumetheiteminnextc;
untilfalse;
end
parend
end
可见,生产者可以不断地往缓冲池送消息,如果缓冲池满,就会覆盖原有数据,造成数据混乱.而消费者始终因wait(full)操作将消费进程直接送入进程链表进行等待,无法访问缓冲池,造成无限等待.
24.在生产者-消费者问题中,如果将两个wait操作即wait(full)和wait(mutex)互换位置;或者是将signal(mutex)与signal(full)互换位置结果会如何?
varmutex,empty,full:
semaphore:
=1,n,0;
buffer:
array[0,...,n-1]ofitem;
in,out:
integer:
=0,0;
begin
parbegin
producer:
begin
repeat
.
.
produceaniteminnextp;
.
.
wait(empty);
wait(mutex);
buffer(in):
=nextp;
in:
=(in+1)modn;
/*******************/
signal(full);
signal(mutex);
/*******************/
untilfalse;
end
consumer:
begin
repeat
/******************/
wait(mutex);
wait(full);
/******************/
nextc:
=buffer(out);
out:
=(out+1)modn;
signal(mutex);
signal(empty);
consumetheiteminnextc;
untilfalse;
end
parend
end
wait(full)和wait(mutex)互换位置后,因为mutex在这儿是全局变量,执行完wait(mutex),则mutex赋值为0,倘若full也为0,则该生产者进程就会转入进程链表进行等待,而生产者进程会因全局变量mutex为0而进行等待,使full始终为0,这样就形成了死锁.
而signal(mutex)与signal(full)互换位置后,从逻辑上来说应该是一样的.
25.我们为某临界区设置一把锁W,当W=1时,表示关锁;W=0时,表示锁已打开.试写出开锁原语和关锁原语,并利用它们去实现互斥.
开锁原语:
unlock(W):
W=0;
关锁原语:
lock(W);
if(W==1)dono_op;
W=1;
利用开关锁原语实现互斥:
varW:
semaphore:
=0;
begin
parbegin
process:
begin
repeat
lock(W);
criticalsection
unlock(W);
remaindersection
untilfalse;
end
parend
26.试修改下面生产者-消费者问题解法中的错误:
producer:
begin
repeat
.
.
produceraniteminnextp;
wait(mutex);
wait(full);/*应为wait(empty),而且还应该在wait(mutex)的前面*/
buffer(in):
=nextp;
/*缓冲池数组游标应前移:
in:
=(in+1)modn;*/
signal(mutex);
/*signal(full);*/
untilfalse;
end
consumer:
begin
repeat
wait(mutex);
wait(empty);/*应为wait(full),而且还应该在wait(mutex)的前面*/
nextc:
=buffer(out);
out:
=out+1;/*考虑循环,应改为:
out:
=(out+1)modn;*/
signal(mutex);
/*signal(empty);*/
consumeriteminnextc;
untilfalse;
end
27.试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法.
设初始值为1的信号量c[I]表示I号筷子被拿(I=1,2,3,4,...,2n),其中n为自然数.
send(I):
Begin
ifImod2==1then
{
P(c[I]);
P(c[I-1mod5]);
Eat;
V(c[I-1mod5]);
V(c[I]);
}
else
{
P(c[I-1mod5]);
P(c[I]);
Eat;
V(c[I]);
V(c[I-1mod5]);
}
End
28.在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数据
进行计算.试写出利用信号量机制实现两者共享单缓冲的同步算法.
intmutex=1;
intempty=n;
intfull=0;
intin=0;
intout=0;
main()
{
cobegin
send();
obtain();
coend
}
send()
{
while
(1)
{
.
.
collectdatainnextp;
.
.
wait(empty);
wait(mutex);
buffer(in)=nextp;
in=(in+1)modn;
signal(mutex);
signal(full);
}
}//send
obtain()
{
while
(1)
{
wait(full);
wait(mutex);
nextc:
=buffer(out);
out:
=(out+1)modn;
signal(mutex);
signal(empty);
culculatethedatainnextc;
}//while
}//obtain
29.画图说明管程由哪几部分组成?
为什么要引入条件变量?
管程由三部分组成:
局部于管程的共享变量说明;对该数据结构进行操作的一组过程;对局部于管程的
数据设置初始值的语句.(图见P80)因为调用wait原语后,使进程等待的原因有多种,为了区别它们,引入了条件变量.
30.如何利用管程来解决生产者-消费者问题?
(见P82)
31.什么是AND信号量?
试利用AND信号量写出生产者-消费者问题的解法.
为解决并行所带来的死锁问题,在wait操作中引入AND条件,其基本思想是将进程在整个运行过程中所需要的所有临界资源,一次性地全部分配给进程,用完后一次性释放.
解决生产者-消费者问题可描述如下:
varmutex,empty,full:
semaphore:
=1,n,0;
buffer:
array[0,...,n-1]ofitem;
in,out:
integer:
=0,0;
begin
parbegin
producer:
begin
repeat
.
.
produceaniteminnextp;
.
.
wait(empty);
wait(mutex);
buffer(in):
=nextp;
in:
=(in+1)modn;
signal(mutex);
signal(full);
signal(s1,s2,s3,...,sn);
untilfalse;
end
consumer:
begin
repeat
wait(full);
wait(mutex);
nextc:
=buffer(out);
out:
=(out+1)modn;
signal(mutex);
signal(empty);
signal(k1,k2,k3,...,kn);
consumetheiteminnextc;
untilfalse;
end
parend
end
33.试比较进程间的低级通信工具与高级通信工具.
用户用低级通信工具实现进程通信很不方便,因为其效率低,通信对用户不透明,所有的操作都必须由程序员来实现.而高级通信工具则可弥补这些缺陷,用户可直接利用操作系统所提供的一组通信命令,高效地传送大量的数据.
34.当前有哪几种高级通信机制?
a.共享存储器系统通信方式;b.消息传递系统通信方式;c.管道通信方式.
第三章
1.高级调度与低级调度的主要任务是什么?
为什么要引入中级调度?
a.作业调度又称宏观调度或高级调度,其主要任务是按一定的原则对外存上处于后备状态的作业进行选择,给选中的作业分配内存,输入输出设备等必要的资源,并建立相应的进程,以使该作业的进程获得竞争处理机的权利.
b.进程调度又称微观调度或低级调度,其主要任务是按照某种策略和方法选取一个处于就绪状态的进程,将处理机分配给它.c.为了提高内存利用
7.在选择调度方式和调度算法时,应遵循的准则是什么?
a.面向用户的准则有周转时间短,响应时间快,截止时间的保证,以及优先权准则.
b.面向系统的准则有系统吞吐量高,处理机利用率好,各类资源的平衡利用.
13.为什么说多级反馈队列能较好地满足各种用户的需要?
a.对于终端型作业用户,由于终端型作业用户所提交的作业,大都属于交互型作业,系统只要能使这些作业(进程)在第一队列所规定的时间片内完成,便可使终端型作业用户都感到满意.b.对于短批处理作业用户,很短的批处理型作业如果仅在第一队列中执行一个时间片即可完成,便可获得与终端型作业一样的相应时间.对于稍长的作业,通常也只需在第二队列和第三队列中各执行-一个时间片即可完成,其周转时间仍然很短.c.对于长批处理作业用户,用户也不必担心其作业长期得不到处理.
18.何谓死锁?
产生死锁的原因和必要条件是什么?
a.死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进;b.产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法;c.必要条件是:
互斥条件,请求和保持条件,不剥夺条件和环路等待条件.
19.在解决死锁问题的几个方法中,哪种方法最容易实现?
哪种方法使资源的利用率最高?
a.解决死锁可归纳为四种方法:
预防死锁,避免死锁,检测死锁和解除死锁;b.其中,预防死锁是最容易实现的;c.避免死锁使资源的利用率最高.
20.请详细说明可通过哪些途径预防死锁.
a.摈弃"请求和保持"条件,就是如果系统有足够的资源,便一次性地把进程所需的所有资源分配给它;b.摈弃"不剥夺"条件,就是已经保持了资源的进程,当它提出新的资源请求而不能立即得到满足时,必须释放它已经保持的所有资源,待以后需要时再重新申请;
c.摈弃"环路等待"条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出.
21.在银行家算法的例子中,如果P0发出的请求向量由Request0(0,2,0)改为Request0(0,1,0),问系统可否将资源分配给它?
可以.首先,Request0(0,1,0)<=Need0(7,4,3),Request0(0,1,0)<=Available(2,3,0);
分配后可修改得一资源数据表(表略),进行安全性检查,可以找到一个安全序列{P1,P4,P3,P2,P0},
或{P1,P4,P3,P0,P2},因此,系统是安全的,可以立即将资源分配给P0.
第四章
2.可采用哪几种方式将程序装入内存?
它们分别适用于何种场合?
a.首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存;
b.装入模块的方式有:
绝对装入方式,可重定位方式和动态运行时装入方式;c.绝对装入方式适用于单道程序环境下;d.可重定位方式适用于多道程序环境下;
e.动态运行时装入方式也适用于