操作系统复习题集
三、简答题
1. 分页存储管理存在的局限性是什么?
逻辑地址空间:页是物理单位,共享困难、不便对代码进行分类管理,不能进行动态连接。
2. 多道程序系统为什么能提高CPU的利用率? 利用了原来CPU空闲等待时间
3. 文件的逻辑结构有哪些?
一种是无结构的流式文件,是指对文件内信息不再划分单位,它是依次的一串字符流构成的文件;一种是有结构的记录式文件, 是用户把文件内的信息按逻辑上独立的含义划分信息单位,每个单位称为一个逻辑记录(简称记录)。所有记录通常都是描述一个实体集的,有着相同或不同数目的数据项,记录的长度可分为定长和不定长记录两类。
4. 什么是设备独立性?
应用程序独立于具体使用的物理设备。设备独立性又称为数据无关性。它指的是应用程序在使用设备进行I/O时,使用的是逻辑设备,而系统在实际执行时使用的是物理设备,由操作系统负责逻辑设备与物理设备的映射。
5. 为什么要引入线程,解释一下线程与进程之间的相互关系。
因为虽然进程可以提高CPU的利用率,但是进程之间的切换是非常耗费资源和时间的,为了能更进一步的提高操作系统的并发进,引进了线程.这样,进程是分配资源的基本 单位,而线程则是系统调度的基本单位.一个进程内部的线程可以共享该进程的所分配到的资源.线程的创建与撤消,线程之间的切换所占用的资源比进程要少很多.总的来说就是为了更进一步提高系统的并发性,提高CPU的利用率. 线程是进程的基础,进程包含多个线程,是线程的载体。
6. 死锁的必要条件是什么?
死锁:当某进程提出资源申请后,使得系统中一些进程处于无休止的阻塞状态,在无外力作用下,永远不能再继续前进。产生死锁的必要条件:互斥条件:某段时间内某资源只能由一个进程使用。不剥夺条件:资源在未使用完前,不能被剥夺,由使用进程释放。部分分配(请求和保持):进程因请求资源而阻塞时,对已分配给它的资源保持不放。环路条件:发生死锁时,有向图必构成一环路。
7. 什么是虚拟内存?
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
8. 假脱机技术是什么?
通过共享设备来模拟独享设备所采用的操作是假脱机操作,即在联机情况下外部设备设备同时操作。所使用的假脱机技术称之为假脱机技术。
9. 为银行取款机系统配备的操作系统应归类于什么类型的操作系统?
10. 多道程序设计的主要优点是什么?
解:多道程序设计是指在主存中同时存放多道用户作业,使它们都处于执行的开始点和结束点之间,这些程序共享计算机系统资源。多道程序设计的主要优点有:(1) 提高CPU的利用率。在多道程序环境下,多个程序共享计算机资源,当某个程序等待I/O操作时,CPU可以执行其他程序,大大提高了CPU的利用率。(2) 提高设备的利用率。在多道程序环境下,多个程序共享系统的设备,大大提高系统设备的利用率。(3)提高系统的吞吐量。在多道程序环境下,减少了程序的等待时间,提高了系统的吞吐量。
11. 请为的下面应用环境的计算机选择适合的操作系统。
(1)飞机的导航(2)办公室自动化系统(3)航空订票系统(4)复杂的科学计算(5)图书检索系统
12. 什么是并发、并行?
并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事
件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行
13.什么是临界区?
一次仅允许一个进程使用的资源称为临界资源,在进程中对于临界资源访问的程序段称为临界区。
14. 引入缓冲的目的是什么?
答:(1)缓和外部设备和CPU的速度差异;(2)减少CPU被中断的
次数;(3)实现CPU和设备、设备和设备之间的并行操作。
15. 设备驱动程序的主要任务是什么?
设备驱动程序是请求I/O的进程与设备控制器之间的一个通信程序,主要功能有:
①将用户的要求转换为具体要求。
②检查用户的合法性,了解设备状态,根据要求传递参数,设置设备的工作方式。
③向设备控制器发I/O命令启动设备,完成具体的I/O操作。
④及时响应外设的中断请求,根据中断类型调用相应的中断处理程序。
⑤具有通道的控制系统,还要构造通道程序。
四、综合题
1. 信号量的PV操作解决进程的同步问题。 2. 银行家算法判断系统状态是否安全。
3. 分页系统中逻辑地址和物理地址的转换。
4. 页面置换算法,主要掌握先进先出、LRU、最佳置换。
5. 磁盘调度算法,包括FCFS、短寻道优先、电梯算法、LOOK算法等。 6. 进程调度算法,包括FCFS、短任务优先、最短剩余时间优先、时间片轮转等。
综合题案例:
1.考虑下列进程集,进程占用的CPU区间长度以毫秒来计算:
进程 区间时间 优先级 P1 10 3 P2 1 1 P3 2 3 P4 1 4 P5 5 2
假设在时刻0以进程P1,P2,P3,P4,P5的顺序到达。
a.画出4个Gantt图分别演示用FCFS、SJF、非抢占优先级(数字小代表优先级高)和RR(时间片=1)算法调度时进程的执行过程。 b.在a里每个进程在每种调度算法下的周转时间是多少? c.在a里每个进程在每种调度算法下的等待时间是多少? d.在a里哪一种调度算法的平均等待时间对所有进程而言最小? 答:a.甘特图(看教材138页) FCFS: P1 P2 P3 P4 P5 0 10 11 13 14 19 SJF: P2 P4 P3 P4 P5 0 1 2 4 9 19
非抢占优先级: P2 P5 P1 P3 P4 0 1 6 16 17 19 RR: P1 P2 P3 P4 P5 P1 P3 P5 P1 P5 P1 P5 P1 P5 P1 P1 P1 P1 P1 0 19
b.周转时间 P1 P2 P3 P4 P5 c.等待时间 P1 P2 P3 P4 P5 d.SJF
2.考虑一个运行十个I/O限制任务和一个CPU限制任务的系统。假设,I/O限制任务一次分配给一个I/O操作1毫秒的CPU计算,但每个I/O操作的完成需要 10毫秒。同时,假设间接的上下文切换要0.1毫秒,所有的进程都是长进程。对一个RR调度来说,以下情况时CPU的利用率是多少: a.时间片是1毫秒
FCFS 0 10 11 13 14 RR 9 1 5 3 9 SJF 9 0 2 1 4 非抢占优先级 6 0 16 18 2 FCFS 10 11 13 14 19 RR 19 2 7 4 14 SJF 19 1 4 2 9 非抢占优先级 16 1 18 19 6 b.时间片是10毫秒
答:a.时间片是1毫秒:不论是哪个进程被调度,这个调度都会为每一次的上下文切换花费一个0.1毫秒的上下文切换。CPU的利用率是1/1.1*100=92%。 b.时间片是10毫秒:这I/O限制任务会在使用完1毫秒时间片后进行一次上下文切换。这个时间片要求在所有的进程间都走一遍,因此,10*1.1+10.1(因为每个I / O限定任务执行为1毫秒,然后承担上下文切换的任务,而CPU限制任务的执行10毫秒在承担一个上下文切换之前) 。因此,CPU的利用率是20/21.1*100=94%。
3. 考虑下面的一个系统在某一时刻的状态:
Allocation Max Available A B C D A B C D A B C D
P0 0 0 1 2 0 0 1 2 1 5 2 0 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 6 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 使用银行家算法回答下面问题: a.Need矩阵的内容是怎样的? b.系统是否处于安全状态?
c.如果从进程P1发出一个请求(0 4 2 0),这个请求能否被满足? 答:a.Need矩阵的内容是
P0(0 0 0 0) P1(0 7 5 0) P2(1 0 0 2) P3(0 0 2 0) P4(0 6 4 0)。
b. .系统处于安全状态,因为Available矩阵等于(1 5 2 0),进程P0和P3都可以运行,当进程P3运行完时,它释放它的资源,而允许其它进程运行。
c.可以被满足,满足以后,Available矩阵等于(1 1 0 0),当以次序P0,P2, P3, P1 ,P4运行时候,可以完成运行。
4. 按顺序给出5个部分的内存,分别是100KB,500KB,200KB,300KB和600KB,用 first-fit,best-fit和worst-fit算法,能够怎样按顺序分配进程212KB,417KB,112KB,426KB和426KB?哪个算法充分利用了内存空间? 答: a. First-fit:
b. 212K is put in 500K partition c. 417K is put in 600K partition
d. 112K is put in 288K partition (new partition 288K = 500K ? 212K) e. 426K must wait f. Best-fit:
g. 212K is put in 300K partition h. 417K is put in 500K partition i. 112K is put in 200K partition j. 426K is put in 600K partition k. Worst-fit:
l. 212K is put in 600K partition m. 417K is put in 500K partition n. 112K is put in 388K partition o. 426K must wait
Best-fit: 算法充分利用了内存空间。
5. 考虑一个分页系统在内存中存储着一张页表。
a.如果内存的查询需要200毫秒,那么一个分页内存的查询需要多长时间? b.如果我们加上相关联的寄存器,75%的页表查询可以在相关联的寄存器中找到,那么有效的查询时间是多少?(假设如果入口存在的话,在相关的寄存器中找到页表入口不花费时间)
答:a.400毫秒:200毫秒进入页表,200毫秒进入内存中的字 b.有效进入时间=0.75*200毫秒+0.25*400毫秒=250毫秒
6. 假设有一个请求调页存储器,页表放在寄存器中:处理一个页错误,当有空的帧或被置换的页设有被修改过时要用8ms,当被置换的页被修改过明用20ms,存储器访问时间为100ns。
假设被置换的页中有70%被修改过,有效访问时间不超过200ns时最大可接受的页错误率是多少?
答:0.2 sec = (1 ? P) × 0.1 sec + (0.3P) × 8 millisec + (0.7P) × 20 millisec
0.1 = ?0.1P + 2400 P + 14000 P 0.1= 16,400 P P = 0.000006
7. 假设一个请求调页系统具有一个平均访问和传输时间为20ms的分页磁盘。地址转换是通过在主存中的页表来进行的,每次内存访问时间为1μs。这样,每个通过页表进行的内存引用都要访问内存两次。为了提高性能,加入一个相关内存,当页表项在相关内存中时,可以减少内存引用的访问次数。
假设80%的访问发生在相关内存中,而且剩下中的10%(总量的2%)会导致页错误。内存的有效访问时间是多少? 答:
有效访问时间= (0.8) × (1 μsec)+ (0.1) × (2 μsec) + (0.1) × (5002 μsec)
= 501.2 μsec ≈ 0.5 millisec
8. 某虚拟存储器的用户空间共有32个页面,每页1KB,主存16KB。试问: (1)逻辑地址的有效位是多少? (2)物理地址需要多少位?
(3)假定某时刻系统用户的第0,1,2,3页分别分配的物理块号为5,10,4,7,试将虚地址0A5C和093C变换为物理地址。
解
(1)程序空间的大小为32KB,因此逻辑地址的有效位数是15位。 (2)内存空间的大小是16KB,因此物理地址至少需要14位。
(3)当页面为1KB时,虚地址0A5C表示页号为00010,页内地址是1001011100。该页在内存的第4块,即块号为0100,因此0A5C的物理地址是01001001011100,即125CH。
(4)用同样的方法可以求得,093C的物理地址是113CH。
9. 若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,3000,5012转化为相应的物理地址(注:此处块号即为页面号)。
页号 块号 0 2 1 3 2 1 3 6 解 本题中,为了描述方便,设页号为P,页内位移为W,逻辑地址为A,内存地址为M,页面大小为L,则
P=int(A/L) W=A mod L
对于逻辑地址1011 P=int(1011/1024)=0
W=1011 mod 1024=1011 A=1101=(0,1101)
查页表第0页在第2块,所以物理地址为M=1024*2+1101= 3059。
对于逻辑地址为2148 P=2148/1024=2
W=2148 mod 1024=100 A=2148=(2,100)
查页表第2页在第1块,所以物理地址为M=1024*1+100=1124。
对于逻辑地址为3000 P=3000/1024=2
W=3000 mod 1024=952 A=3000=(2,952)
查页表第2页在第1块,所以物理地址为M=1024*1+952=1976
对于逻辑地址5012 P=5012/1024=4
W=5012 mod 1024=916
因页号超过页表长度,该逻辑地址非法。
10. 某段式存储管理系统中,有一作业的段表(SMT)如下表所示,求逻辑地址[0,65],[1,55],[2,90],[3,20]对应的主存地址(按十进制)。(其中方括号中的第一个元素为段号,第二个元素为段内地址)
段号 段长(容主存起始地址 状态 量) 0 200 600 1 1 50 850 1 2 100 1000 1 — 3 150 0 解 逻辑地址[0,65]:对应的主存地址为600+65=665。
逻辑地址[1,55]:因段内地址超过段长,所以产生段地址越界中断。 逻辑地址[2,90]:对应的主存地址为1000+90=1090。
逻辑地址[3,20]:因为状态位为0,即该段在辅存中,所以产生缺段中断。
11.对页面访问串:1,2,3,4,1,2,5,1,2,3,4,5,指出在驻留集大为3时,使用FIFO、OPT和LRU替换算法的缺页次数。(OPT和LRU如果出现多选项时使用FIFO)
答: FIFO: 缺页11次 页√ √ √ √ √ √ √ 面 号 1 2 3 4 1 2 5 1 1 1 1 4 4 4 4 4 2 2 2 1 1 1 1 3 3 3 2 5 5 OPT: 缺页7次 页√ √ √ √ 面 号 1 2 3 4 1 1 1 1 1 1 2 2 2 2 3 4 4 2 1 2 4 √ 5 1 1 1 2 2 5 5 √ √ √ √ 2 3 4 5 2 2 2 5 1 3 3 3 5 5 4 4 2 1 2 5 2 5 1 2 √ √ 3 4 5 3 3 3 2 4 4 5 5 5 √ √ √ 3 4 5 3 3 3 1 4 4 2 2 5 LRU: 缺页10次 页√ √ √ √ √ √ √ 面 号 1 2 3 4 1 2 5 1 1 1 1 4 4 4 5 5 2 2 2 1 1 1 1 3 3 3 2 2 2
12.假设一个磁盘驱动器有5000个柱面,从0到4999,驱动器正在为柱面143的一个请求提供服务,且前面的一个服务请求是在柱面125.按FIFO顺序,即将到来的请求队列是
86,1470,913,1774,948,1509,1022,1750,130
从现在磁头位置开始,按照下面的磁盘调度算法,要满足队列中即将到来的请求要求磁头总的移动距离(按柱面数计)是多少? a. FCFS b. SSTF c. SCAN d. LOOK e. C-SCAN 答:
a. FCFS的调度是143 , 86 , 1470 , 913 , 1774 , 948 , 1509 , 1022 ,
1750 , 130 。总寻求距离是7081 。
b. SSTF的调度是143 , 130 , 86 , 913 , 948 , 1022, 1470, 1509,
1750, 1774。总寻求距离是1745。
c. SCAN的调度是143 , 913 , 948 , 1022, 1470, 1509, 1750, 1774 ,
4999 , 130 , 86 。总寻求距离是9769 。
d. LOOK的调度是143 , 913 , 948 , 1022, 1470, 1509, 1750, 1774,
130 , 86 。总寻求距离是3319 。
e. C-SCAN的调度是143 , 913 , 948 , 1022 , 1470 , 1509 , 1750 ,
1774 , 4999 , 86 , 130 。总寻求距离是9813 。
f. C-LOOK的调度是143 , 913 , 948 , 1022 , 1470 , 1509 , 1750 ,
1774 , 86 , 130 。总寻求距离是3363 。
13.假设有两个并发进程P1和P2, 程序代码为 P1: begin P2: begin A; C; B; D; end end
其中,A, B, C和D均为原语。请给出P1和P2两个进程所有可能的执行过程。 答:ABCD,ACBD,ACDB,CDAB,CABD,CADB
14. 桌上有一空盘,只允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放桔子。儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘中空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。
分析 在本题中,爸爸、儿子、女儿共用一个盘子,且盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是苹果,则允许女儿吃,儿子必须等待;若放入果盘中的是桔子,则允许儿子吃,女儿必须等待。本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。
解 在本题中,应设置三个信号量S、So、Sa,信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有桔子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下:
int S=1; int Sa=0; int So=0;
main( ) {
cobegin
father(); son();
daughter(); coend }
father() {
while(1)
{
P(S );
将水果放入盘中;
if (放入的是桔子)else V(Sa); } }
son( ) {
while(1)
{
P(So);
从盘中取出桔子; V(S); 吃桔子; } }
daughter( ) {
while(1) {
P(Sa);
从盘中取出苹果; V(S); 吃苹果; } } V(So);