第一章操作系统引论
1.操作系统的主要作用可表现为哪几个方面,其含义分别是什么?
2.在OS中引入多道程序设计技术,带来了哪些好处?
3.操作系统具有哪几大特征?它的最基本特征是什么?
4.试在交互性与及时性方面,将分时系统与实时系统进行比较。
5.操作系统用户接口中包括哪几种接口?它们分别提供给谁使用?
第二章进程管理
1.在操作系统中为什么要引入进程概念?它会产生什么样的影响?
2.试从动态性、并发性和独立性上来比较进程和程序?
3.试说明PCB的作用,为什么说PCB是进程存在的唯一标志?
4.试说明进程在三个基本状态之间转换的典型原因。
5.在进行进程切换时,所要保存的处理机状态信息主要有哪些?
6.试从调度性、并发性、拥有资源和系统开销几个方面,对进程和线程进行比较。
7.什么是用户级线程和内核级线程?并对它们进行比较。
8.进程在运行时,存在着哪两种形式的制约?并举例说明之。
9.什么是临界资源和临界区?
10.同步机构应遵循哪些基本准则?为什么?
11.试从物理概念上来说明记录型量和wait、signal操作。
12.我们为某临界区设置一把锁W,当W=1时,表示关锁;W=0时,表示锁已打
开。
试写出开锁和关锁原语,并利用它们去实现互斥。
13.试利用记录型信号量写出一个不会死锁的哲学家进餐问题的算法。
14.在测量控制系统中的数据彩样任务,把所采集的数据送一单缓冲区,计算任务从
该单缓冲区中取出数据进行计算。
试写出利用信号量机制实现两者共享单缓冲的同步算法。
15.图2-1示出了一个从键盘输入到打印机输出的数据处理流图,其中键盘输入进
程通过缓冲区buffer1把输入数据传送给计算进程,计算进程把处理结果通过缓冲区buffer2传送给打印进程。
设上述两个缓冲区的大小分别是n1和n2,为实现输入进程与计算进程的同步,我们设置发一个互斥信号量mutex1,以及分别表示buffer1空和满的两个资源信号量empty1和full1;类似地,为实现计算进程和打印之间的同步,我们又设置buffer2的对应信号量mutex2、empty2及full2。
试用类Pascal语言写出键盘输入进程、计算及打印进程间的同步算法。
输入进程→buf1 →计算进程→buf2 →打印进程
图2-1从键盘输入到打印输出流程
16.如何用管程来解决生产者-消费者问题?
17.在单处理环境下,进程之间有哪几种通信方式?
18.在剥夺调度方式中,剥夺的原则有哪些?
19.在操作系统中引起进程调度的主要因素有哪些?
20.在批处理系统、分时系统和实时系统中,各采用哪几种进程调度算法?
21.为什么说多级反馈队列能较好地满足各种用户的需要?.
22.在按时间片轮转调度的算法中,在确定时间片大小时,应考虑哪些因素?
23.何谓死锁?产生死锁的原因和必要条件是什么?
24.在解决死锁问题的几个方法中,哪一种方法最容易实现?哪一种方法使资源的利
用率最高?
25.请详细说明可通过哪些途径预防死锁?
26.在银行家算法中,若出现下述的资源分配情况:
Process Allocation Need Available
P0 0 0 3 2 0 0 1 2 1 6 2 2
P1 1 0 0 0 1 6 5 0
P2 1 3 5 4 2 3 5 6
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
试问:①该状态是否安全?
②若进程P2提出请求Request(1,2,2)之后,系统能否将资源分配给它?
27.试写出相应的程序来描述如下所示的前趋图。
S4
S2 S5 S7
S1
S3 S6
28.假如有四道作业,它们的进入时间和运行时间由表3-3给出。
表3-3四道作业的进入时间和运行时间
作业号进入时间(时)执行时间(小时)
110:000.4
210:101
310:200.6
410:300.2
在单道程序环境下,分别采用先来先服务和最短作业优先调度算法,试分别说明它
们的调度顺序及平均周转时间?
29.请用信号量解决以下的“过独木桥”问题:同一方向的行人可连续过桥,当某一方向有
人过桥时,另一方向的人必须等待;当某一方向无人过桥时,另一方向的人可以过桥。
30.下面是用记录型信号量来描述前趋关系的算法,讨论它的正确性。
如果是正确的,请证
明它;否则,请说明原因,并给出正确的算法。
parend
end
31.设A、B两进程共享一个缓冲区Q,A向Q写入信息,B则从Q读出信息,讨论下面算法
的正确性。
如果是正确的,请证明它;否则,请说明原因,并给出正确的算法。
begin
var s:semaphore:=0;
parbegin
A:begin B:begin
repeat repeat
向Q写入信息; wait(s);
signal(s); 从Q读出信息
until false; until false;
end end
parend
end
32.若P、Q为两个并发进程,共享一个物理资源(resource),下面给出P、Q对资源使用
实现互斥的算法:
var Pturn:boolean;
begin
Pturn:=true;
cobegin
P:repeat
repeat until Ptrun;
use resource;
Pturn:=false;
P passive
forever
Q:repeat
repeat until Ptrun;
use resource;
Pturn:=true;
P passive
forever
coend
end
33.试问上述算法能否达到P、Q互斥地使用资源?若不能,则说明存在什么问题。
下述流程是解决两进程互斥访问临界区问题的一种方法。
试从“忙则等待”、“空闲让进”、“有限等待”等三个方面讨论它的正确性。
如果它是正确的,则证明之;如果它不正确,请说明理由。
program attemp;
var c1,c2:integer;
procedure p1;(*对第一个进程p1)
begin
repeat
remain section 1;
repeat
c1:=1-c2
until c2<>0;
Critical Section;(*临界区*)
c1:=1
until false
end;
procedure p2;(*对第二个进程p2)
begin
repeat
remain section 2;
repeat
c2:=1-c1
until c1<>0;
Critical Section;(*临界区*)
c2:=1
until false
end;
begin(*主程序*)
c1:=1;
c2:=1;
cobegin
p1;p2 (* 两个进程p1、p2开始并发执行*)
coend
end
34.桌上有一空盘,允许存放一只水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子
专等吃盘内的桔子,女儿专等吃盘中的苹果。
规定当盘空时一次只能放一只水果供吃者取用,请用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥。
35.进程用户态图象(映象)由共享正文段、数据段和栈段组成。
(1)请指出C语言程序中的下列部分将位于哪一段中:
a.外部变量。
b.局部变量
c.函数调用实参传递值
d. 用malloc()要求动态分配的存储区。
e.常数值,例如1995,3.1415, ”string”。
f.进程间通信使用的共享内存段。
(9分)
(2)进程用户态图象中,哪些部分是可共享的,哪些部分是不可共享的?
36.[Dijkstra 1965]Sleepy Barber Problem:一个理发店由一个有几张椅子的等候室和一
个放有一张椅子的理发室组成。
若没有要理发的顾客,则理发师就去睡觉;若一个顾客走进理发店且所有的椅子都被占用了,则该顾客离开理发店;否则,若理发师正在为人理发,则该顾客就找一张空椅子坐下等待;若理发师在睡觉,则顾客唤醒他。
试用信号量实现这一同步问题。
37.[Patil 1971]Cigarette Smokers Problem。
考虑有三个吸烟者进程和一个经销商进程
的系统。
每个吸烟者连续不断地做烟卷并抽他做好的烟卷。
做一支烟卷需要烟草、纸和火柴三种原料。
这三个吸烟者分别掌握有烟草、纸和火柴。
经销商源源不断地提供上述三种原料,但他只将其中的两种原料放在桌上,具有另一种原料的吸烟者就可做烟卷并抽烟,且在做完后给经销商发信号,然后经销商再拿出两种原料放在桌上,如此反复。
试设计一个同步算法来描述他们的活动。
38.考虑由相同类型的四个资源组成的系统,它们被三个进程共享,而且每个进程至多需要
两个资源,请问该系统是否可能发生死锁?为什么?
39.考虑由n个进程共享的具有m个同类资源的系统,每个进程一次只能申请、释放一个资
源。
证明如果下列两个条件满足,则进程不会死锁。
(1)每个进程的最大需求在1和m之间;
(2)最大资源需求之和小于m+n。