操作系统教程习题答案Word格式.docx
《操作系统教程习题答案Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统教程习题答案Word格式.docx(41页珍藏版)》请在冰豆网上搜索。
![操作系统教程习题答案Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/23/d33d91b6-8f42-4cf3-9e41-0d6f4efc4bba/d33d91b6-8f42-4cf3-9e41-0d6f4efc4bba1.gif)
(3)试述分时系统的原理及其特性。
时间片原则交互性同时性独立性及时性
(4)操作系统有哪几大特征?
它的最基本特征是什么?
并发性虚拟性共享性异步性最基本特征并发性
(5)网络操作系统与分布式操作系统的关键区别是什么?
分布性
4.综合应用题
有3个程序A、B、C在系统中单独处理占用的CPU时间和I/O设备时间如下表所示:
程序A
CPU20ms
IO230ms
CPU30ms
IO220ms
IO120ms
程序B
IO140ms
程序C
CPU50ms
IO130ms
假定在具有2个CPU为X和Y的多机系统中,以多道程序设计方式,按如下条件执行上述3个程序,条件如下:
(1)X和Y运算速度相同,整个系统可以同时执行2个程序,并且在并行处理程序时速度也不下降。
(2)X的优先级比Y高,即当X、Y均能执行程序时,由X去执行。
(3)当多个程序同时请求CPU或I/O设备时,按程序A、B、C的次序分配所请求的资源。
(4)除非请求输入输出,否则执行中的程序不会被打断,也不会把控制转给别的CPU。
而且因输入输出而中断的程序再重新执行时,不一定仍在同一CPU上执行。
(5)控制程序的介入时间可忽略不计。
(6)程序A、B、C同时开始执行。
求:
(1)程序A、B、C同时开始执行到执行完毕为止的时间。
(2)X和Y的使用时间。
程序运行情况如下图所示:
由上图可以看出
(1)A170msB150msC180ms
(2)X的使用时间120msY的使用时间90ms
习题2
(1)用户使用操作系统通常有3种手段,它们是终端命令、系统调用命令和。
A、计算机高级指令B、作业控制语言
C、宏命令D、汇编语言
(2)系统调用的目的是。
A、请求系统服务B、终止系统服务
C、申请系统资源D、释放系统资源
(3)在批处理系统中,用户使用对作业的各种可能的控制要求进行控制。
A、命令驱动B、访管指令
C、系统调用D、作业说明书
(4)适合于交互式终端用户来说明作业加工步骤的手段是。
A、汇编语言B、高级语言
C、作业控制语言D、系统功能调用
E、操作控制命令
(1)B
(2)A(3)D(4)E
(1)操作系统代码在核心态下运行,用户一般程序在用户态下运行。
(2)当用户程序要调用系统服务时,需要通过一条专门的指令来完成从用户态到核心态的切换,这条指令称为访管指令。
(3)操作系统为批处理用户提供作业控制语言,为分时用户提供联机命令来说明作业加工步骤。
(4)作业控制语言是由一些的语句组成的。
(5)批处理控制方式也可以称为脱机控制方式,交互式控制方式也可以称为联机控制方式。
(6)在批处理系统中,用户提交作业时必须同时提交用作业控制语言编写的作业说明书来说明对作业的控制意图。
3.名词解释
(1)作业控制级接口。
(2)程序级接口。
(3)用户态。
(4)核心态。
(5)特权指令。
(6)访管指令。
(7)系统调用。
4.简答题
(1)在用户和操作系统之间,通常提供了哪几种类型的接口?
它们的主要功能是什么?
(2)什么是作业、作业步、作业流?
(3)命令驱动方式中命令的一般格式是什么?
主要有哪几种命令类型?
(4)什么是特权指令?
为什么要把指令分为特权指令和非特权指令?
(5)说明以下各条指令是特权指令还是非特权指令。
1)启动打印机;
2)结束进程;
3)计算e的n次方;
4)清内存
5)读时钟6)修改指令地址寄存器内容。
12456特权指令3非特权指令
(6)系统调用分为哪几类?
它们各有什么作用?
(7)一个图形窗口通常由哪几部分组成?
习题3
(1)进程创建原语的任务是。
A、为进程编制程序B、为进程建立PCB表
C、为进程分配CPUD、为进程分配所需的各种资源
(2)进程从执行状态变为阻塞态的原因可能是。
A、I/O事件发生B、I/O事件完成
C、时间片到D、某个进程被唤醒
(3)进程由执行态变化到就绪态的可能原因是。
A、等待的事件发生B、高优先级进程到来
C、I/O完成D、等待某事件的发生
(4)进程在执行过程中,其状态总是在不停地发生变化,下面关于进程状态变化的说法正确的是。
A、进程一旦形成,首先进入的是运行状态
B、在分时系统中,一个正在运行的进程的时间片如果终结,该进程将转入就绪状态
C、一个进程必须经过进程的三个基本状态才能结束
D、三种进程状态是进程运行过程中的基本状态,进程可能同时处于某几种状态中
(5)进程的上下文是执行活动全过程的静态描述,它在时切换。
A、系统调度新进程占有CPU时
B、进程因等待某一事件的发生而由运行态转为阻塞态时
C、进程由阻塞态转为就绪态时
D、作业因完成而撤出时
(6)以下进程状态的转换中,是不可能的。
A、运行态就绪态B、运行态阻塞态
C、阻塞态运行态D、阻塞态就绪态
(7)同一程序运行在不同的数据集上,创建了的进程。
A、相同B、不同C、同步D、互斥
(8)进程调度是从中选择一个进程进入处理器中运行。
A、就绪队列B、阻塞队列C、提交队列D、后备队列
(1)B
(2)A(3)B(4)B(5)A(6)C(7)B(8)A
(1)一个进程获得了除CPU外的一切资源,则称此进程处于就绪态。
(2)一个进程由于等待某一事件的发生而暂时停止运行,这时即使把CPU分配给进程也无法运行,则称该进程处于阻塞态。
(3)在一个只有一个CPU的系统中,假如某时刻该系统中有10个进程并发执行,在略去调度时间所占用时间的前提下,则:
1)这时刻系统中处于运行态的进程最多有1个,最少有0个。
2)这时刻系统中处于就绪态的进程最多有9个,最少有0个。
3)这时刻系统中处于阻塞态的进程最多有10个,最少有0个。
(4)操作系统对进程的控制是根据PCB来进行的,对进程的管理是通过PCB来实现的。
3.基本概念的解释和辨析
(1)进程和程序
(2)进程和作业
(3)进程和线程
(4)原语和系统调用
(5)内核和微内核
(6)用户级线程和核心级线程
4.综合题
(1)某系统的进程状态转换图如图3.16所示,请说明:
1)引起各种状态转换的典型原因有哪些?
运行态→就绪态时间片到或被更高优先级的进程抢占
就绪态→运行态被调度
运行态→阻塞态等待某一事件的发生而事件未发生
阻塞态→就绪态等待的事件已发生
2)当观察系统中某些进程时,能够看到某一进程的一次状态转换能引起另一个进程的一次状态转换。
在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换2?
3)如图3.16,说明是否会发生下述因果转换:
2→1会,在抢占式调度的情况下,更高优先级的进程到达
3→2会,一个正在运行的进程因等待某一事件的发生而转入阻塞态,而就绪队列中有进程在等待运行
4→1不会
(2)有一个单向链接的进程PCB队列,它的队首由系统指针指出,队尾进程链接指针为0。
分别画出一个进程从队首入队和队尾入队的流程图。
(3)挂起状态和阻塞状态有何区别?
在具有挂起操作的系统中,进程的状态有哪些?
如何变迁?
被挂起进程处于静止状态,不能参与竞争CPU,直到被激活,但被挂起进程可能并不缺少资源;
而阻塞进程是由于等待某一事件的发生,处于缺乏资源的状态。
(4)在创建一个进程时需要完成的主要工作是什么?
在撤消一个进程时需要完成的主要工作又是什么?
创建进程的主要工作是为被创建进程创建一个PCB,并填入相应的初始值。
并把该进程插入就绪队列。
撤消该进程的所有子孙进程。
在撤消的过程中,被撤消进程的所有系统资源(内存、外设)应全部释放出来归还给系统,并将它们从所有队列中移出。
如果被撤消进程正在处理器上运行,则要调用进程调度程序将处理器分配给其它进程。
(5)什么是可再入程序?
其有何特性?
能被多个程序同时调用的程序。
它具有以下性质:
它是纯代码的,即它在执行过程中不改变自身代码,通常由指令和常量等程序逻辑中的不变部分组成;
调用它的各程序应提供工作区,用以存放随着程序执行将发生变化的部分,诸如程序中的数组、变量和通用存储器内的信息。
(6)在使用线程的系统中,是每个线程有一个堆栈还是每个进程有一个堆栈?
说明原因。
(7)线程通常有哪些状态?
为了管理线程,操作系统一般提供哪些原语?
线程状态:
就绪态,运行态,阻塞态
原语:
派生,阻塞,激活
习题4
(1)要避免出现与时间有关的错误,对若干进程的相关临界区的管理应满足以下除外的要求。
A、一次最多让一个进程在临界区中执行
B、任何一个进入临界区执行的进程必须在有限时间内退出临界区
C、避免进程进入相关临界区
D、不能强迫一个进程无限期地等待进入它的临界区
(2)有三个进程P1、P2、P3共享同一个程序段,而每次最多允许两个进程进入该程序段,则信号量S的初值为。
A、0B、1C、2D、3
(3)在操作系统中wait、signal操作是一种。
A、机器指令B、系统调用命令
C、作业控制命令D、低级进程通信
(4)用signal操作唤醒一个进程时,被唤醒进程的状态应变成状态。
A、等待B、运行C、就绪D、完成
(5)用信箱实现并发进程间的通信需要两个基本的通信原语,它们是。
A、wait原语和signal原语B、send原语和receive原语
C、R(S)和W(S)D、以上都不是
(6)用来实现进程同步与互斥的wait,signal操作,实际上是的过程。
A、一个可被中断B、一个不可被中断
C、两个可被中断D、两个不可被中断
(1)C
(2)C(3)D(4)B(5)D
(1)临界资源是一次只允许一个进程使用的资源,临界区是访问临界资源的那段代码。
(2)信号量s>
0时,表示资源的空闲数量;
当s=0时,表示资源已经耗尽,但没有进程在等待;
若s<
0,则表示有|s|个进程在等待。
(3)设计进程同步机制的准则有空闲让进、忙则等待、有限等待和让权等待。
3.基本概念解释和辨析
(1)同步与互斥。
(2)临界资源与临界区。
(3)高级通信与低级通信。
(4)直接通信与间接通信。
4.论述题
(1)什么是“忙等待”?
如何克服“忙等待”?
如果在单处理器系统中,一个进程试图进入处于“忙”状态的临界区,则该进程只能不断测试临界区的状态,这就是“忙等待”。
让试图进入“忙”状态的临界区的进程“睡眠”等待,由释放资源的进程将其唤醒,便可克服“忙等待”的缺点。
(2)在解决进程互斥时,如果TS指令的执行可以中断,则会出现什么情况?
而如果wait、signal的执行可分割,又会出现什么情况?
如果wait可被分割,则可能破坏“空闲让进”准则。
如s.value=1,进程A执行wait操作,进行s.value--,s.value的值为0;
如果此时被中断,进程B执行wait操作,进行s.value--,s.value的值为-1,则进程B将被阻塞;
此时进程A恢复中断,由于s.value的值为-1,也将被阻塞,从而破坏了“空闲让进”准则。
如果signal可被分割,也有可能破坏“空闲让进”准则。
如s.value=-1,进程C在等待s资源,进程A执行signal操作,进行s.value++,s.value的值为0;
如果此时被中断,进程B执行signal操作,进行s.value++,s.value的值为1,进程B不会唤醒进程C;
此时进程A恢复中断,由于s.value的值为1,也不会唤醒进程C,从而破坏了“空闲让进”准则。
(3)使用parbegin改写下面的表达式以获得最大程度的并行性。
(3*a*b+4)/(c+d)**(e-f)
typedefFan_TypeDataType;
Fan_Typex;
Fan_TypeP1()
{return(3*a*b+4);
}
Fan_TypeP2()
{return(c+d);
Fan_TypeP3()
{return(e-f);
voidmain()
{Fan_Typea,b,c;
parbegin(a=P1,b=P2,c=P3);
xa/b**c;
(4)设有几个进程共享一互斥段,对于如下两种情况:
(1)每次只允许一个进程进入临界区;
(2)最多允许m个进程(m<
n)同时进入临界区。
所采用的信号量是否相同?
信号量值的变化范围如何?
(1)信号量值的变化范围为s.value<
=1;
(2)信号量值的变化范围为s.value<
=m;
(5)下面是两个并发执行的进程,它们能正确执行吗?
若不能正确执行,请举例说明,并改正之(x是公共变量)。
voidP1()
{inty,z;
x=1;
y=0;
if(x>
=1)y=y+1;
z=y;
}
voidP2()
{intt,u;
x=0;
t=0;
if(x<
1)t=t+z;
u=t;
voidmain()
{parbegin(P1(),P2());
不能正确执行。
如进程P1执行过程中不被中断,进程运行结束后x,y,z的值均为1;
但若进程P1执行到y=0时被中断,进程P2执行完毕后x的值为0,则P1恢复中断后获得的结果为x,y,z的值均为0,从而发生与时间有关的错误。
structsemaphores;
s.value=1;
wait(s);
z=y;
signal(s);
wait(s);
signal(s);
(6)共享存储区通信是如何实现的?
(7)假设某系统未直接提供信号量机制,但提供了进程通信工具。
如果某程序希望使用关于信号量的wait、signal操作,那么该程序应如何利用通信工具模拟信号量机制?
要求说明如何用send/receive操作及消息表示wait/signal操作及信号量。
5.应用题
(1)有三个并发进程R、W1和W2,共享两个各可存放一个数的缓冲区B1、B2。
进程R每次从输入设备读入一个数,若读入的是奇数,则将它存入B1中,若读入的是偶数,将它存入B2中;
当B1中有数,由进程W1将其打印输出;
当B2中有数,进程W2将其打印输出。
试编写保证三者正确工作的程序。
structsemaphoneB1_Empty,B1_Full,B2_Empty,B2_Full;
B1_Empty.value=1;
B1_Full.value=0;
B2_Empty.value=1;
B2_Full.value=0;
voidR()
{inta;
While
(1)
{readanumbera;
if(a%2==1)
{wait(B1_Empty);
putainB1;
signal(B1_Full);
}
else
{wait(B2_Empty);
putainB2;
signal(B2_Full);
}
voidW1()
{while
(1)
{wait(B1_Full);
printanumberfromB1;
signal(B1_Empty);
voidW2()
{wait(B2_Full);
printanumberfromB2;
signal(B2_Empty);
{parbegin(R(),W1(),W2());
(2)8个协作的任务A、B、C、D、E、F、G、H分别完成各自的工作。
它们满足下列条件:
任务A必须领先于任务B、C和E;
任务E和D必须领先于任务F;
任务B和C必须领先与任务D;
而任务F必须领先于任务G和H。
试写出并发程序,使得在任何情况下它们均能正确工作。
(3)多个进程共享一个文件,其中只读文件的称为读者,只写文件的称为写者。
读者可以同时读,但写者只能独立写。
问:
1)说明进程间的制约关系,应设置哪些信号量?
2)用wait、signal操作写出其同步程序。
3)修改上述算法,使得它对写者优先,即一旦有写者到达,后续的读者必须等待。
而无论是否有读者在读文件。
见教材“读者-写者问题”
(4)桌上有一空盘,可放一只水果。
爸爸可向盘中放苹果,也可向盘中放桔子;
儿子专等吃盘中的桔子;
女儿专等吃盘中的苹果。
规定一次只能放一只水果,试写出爸爸、儿子、女儿正确同步的程序。
structsemaphoneplate,apple,orange;
plate.value=1;
apple.value=0;
orange.value=0;
voidfather()
{while
(1)
{prepareanappleororange;
wait(plate);
puttheappleororangeinplate;
if(Apple)signal(apple);
//如果放的是苹果
elsesignal(orange);
//如果放的是桔子
voidson()
{wait(orange);
getanorangefromtheplate;
signal(plate);
voiddaughter()
{wait(apple);
getanapplefromtheplate;
Voidmain()
(5)三个进程P1、P2、P3互斥使用一个包含N(N>
0)个单元的缓冲区。
P1每次用procuce()生成一个正整数并用put()送入缓冲区某一空单元中;
P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;
P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。
请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。
要求用伪代码描述(2009年全国硕士研究生入学考试题)。
structsemaphonefull_odd,full_even,mutex,empty;
full_odd.value=0;
full_even.value=0;
mutex.value=1;
empty.value=N;
{intX;
while
(1)
{X=produce();
wait(empty);
wait(mutex);
put();
if(X%2==0)signal(full_even);
elsesignal(full_odd);
signal(mutex);
{wait(full_odd);
wait(mutex);
getodd();
countodd()=countodd()+1;
signal(empty);
signal(mutex);
voidP3()
{wait(full_even);
geteven();
counteven()=counteven()+1;
{parbegin(P1(),P2(),P3());
(6)放小球问题:
一个箱子里只有白色和黑色两种小球,且数量足够多。
现在需要从中取出一些小球放入一个袋子中。
约定:
1)一次只能放入一个小球;
2)白球的数量至多只能比黑球少N个,至多只能比黑球多M个(