操作系统概论大题集中营考点绝对无毒doc.docx

上传人:b****3 文档编号:26449362 上传时间:2023-06-19 格式:DOCX 页数:28 大小:24.57KB
下载 相关 举报
操作系统概论大题集中营考点绝对无毒doc.docx_第1页
第1页 / 共28页
操作系统概论大题集中营考点绝对无毒doc.docx_第2页
第2页 / 共28页
操作系统概论大题集中营考点绝对无毒doc.docx_第3页
第3页 / 共28页
操作系统概论大题集中营考点绝对无毒doc.docx_第4页
第4页 / 共28页
操作系统概论大题集中营考点绝对无毒doc.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

操作系统概论大题集中营考点绝对无毒doc.docx

《操作系统概论大题集中营考点绝对无毒doc.docx》由会员分享,可在线阅读,更多相关《操作系统概论大题集中营考点绝对无毒doc.docx(28页珍藏版)》请在冰豆网上搜索。

操作系统概论大题集中营考点绝对无毒doc.docx

操作系统概论大题集中营考点绝对无毒doc

 

第二部分(操作系统大题集中营考点)

第二章处理器管理

 

1.处理器低级调度算法详细介绍

(1)先来先服务算法FCFS

调用后背队列中最先进入队列的一个或多个作业。

属于非剥夺式调度

特点:

利于长作业,不利于短作业。

简单易实现。

效率低。

只顾等待

时间,不过执行时间。

(2)短作业/短进程优先调度算法SJF

调用运行时间短的作业,属于非剥夺式调度。

特点:

降低平均等待时间,提过系统吞吐量。

对长作业不利。

(3)最高优先权调度算法

调度优先权高的作业,分为:

非抢占式:

被调进程一直运行,直到结束或等待事件发生才主动放弃

CPU。

抢占式:

运行中的进程将CPU的使用权让给优先权高的

(4)最高响应比算法

系统响应时间作业等待时间+作业要求时间

R==

作业要求运行时间作业要求时间

属于非剥夺式调度。

(5)时间片轮转调度算法

进程在规定的时间内没有结束,系统将产生一个中断。

属于剥夺式算法

(6)最短剩余时间优先调度算法

短进程优先调度算法改造得到的剥夺式算法。

2.实时调度

任务的空闲时间=任务的截止时间-任务剩余执行时间-当前时间

 

8、在道数不受限制的多道程序系统中,作业进入系统的后备队列时立即进行作

业调度。

现有4个作业进入系统,有关信息列举如下,作业调度和进程调度

均采用高优先级算法(规定数值越大则优先级越高)。

 

作业名进入后备队列的时间执行时间/min优先数

Job18:

00601

Job28:

30502

Job38:

40304

Job48:

50103

试填充下表。

(非抢占式,在同一时刻的作业,按优先数来,只要在

执行就不能抢占)

 

作业名|进入后备队列

|执行时间

|开始执行

|结束执行

|周转时间

|带权周转

|的时间

|/min|时间

|时间

|/min|时间

Job1|8:

00|60|8:

00|9:

00|60|1

Job2|8:

30|50|9:

40|10:

30|120|2.4

Job3|8:

40|30|9:

00|9:

30|50|1.67

Job4|8:

50|10|9:

30|9:

40|50|5

平均周转时间

T=(60+120+50+50)/4=70

带权平均周转时间

W=(1+2.4+1.67+5)/4=2.52

非抢占式详细分析:

 

J1在8:

00来了,就一直执行到9点,即使J2,J3,J4来了就算你们的优先数再多在高也不能

抢占,还不是要看我J1执行完了才能执行哈。

待J1执行完了之后,看你们的优先数多就把

CPU让给谁,结果花落给J3,让J2和J4苦等了几十分钟,就这样推下去,J3完成了就是J4

 

了。

最后才把CPU给J2。

终于大团圆结局!

别忘了计算啊。

 

注意:

高级调度就是作业调度,低级调度就是进程调度。

 

试填充下表。

(抢占式,在同一时刻的多个作业,按优先数来,谁

多谁就可以抢占)

 

作业名|进入后备队列

|执行时间

|开始执行

|结束执行

|周转时间

|带权周转

|的时间

|/min|时间

|时间

|/min|时间

Job1|8:

00|60|8:

00|10:

30|150|2.5

Job2|8:

30|50|8:

30|10:

00|90|1.8

Job3|8:

40|30|8:

40|9:

10|30|1

Job4|8:

50|10|9:

10|9:

20|30|3

平均周转时间

T=(150+90+30+30)/4=75

带权平均周转时间

W=(2.5+1.8+1+3)/4=2.075

17、如果在限制为两道的多道程序系统中,有4个作业进入系统,其进入系统时

间、估计运行时间列于下表中,系统采用SJF作业调度算法,采用SRTF(最短剩

余时间优先算法)进程调度算法,请填充下表。

(分析指出:

最短剩余时间优

先是指在多个进程同一时刻所需要的剩余时间最多,比如在10:

05有J1和J2转化

为进程,而J2的剩余时间最短先执行,以此类推。

 

作业

|进入系统时间

|估计运行时间/min|开始运行时间

|结束运行时间

|周转时间/min

Job1|10:

00|30|10:

00|11:

05|65

Job2|10:

05|20|10:

05|10:

25|20

Job3|10:

10|5|10:

25|10:

30|20

Job4|10:

20|10|10:

30|10:

40|20

平均周转时间

T=(65+20+20+20)/4=31.25

带权周转时间

W=(65/30+20/20+20/5+20/10)/4=2.2925

第三章同步、通信与死锁

 

经典问题源码分析:

1、生产者与消费者问题:

一个生产者与一个消费者共享一个缓冲池问题:

源码:

1.intB;

2.semaphoreempty;//可以使用的空缓冲区数

3.semaphorefull;//缓冲区内可以使用的产品数

4.empty=1;//缓冲区内允许放入一件产品

5.full=0;//缓冲区内没有产品

6.cobegin

7.processproducer(){processconsumer(){

8.while(true){while(true){

9.produce();P(full);

10.P(empty);take()fromB;

11.append()toB;V(empty);

12.V(full);consume();

13.}}

14.}}

多个生产者与多个消费者共享多个缓冲池问题:

源码:

 

1.itemB[k];

2.semaphoreempty;empty=k;//可以使用的空缓冲区数

3.semaphorefull;full=0;//缓冲区内可以使用的产品数

4.semaphoremutex;mutex=1;//互斥信号量

5.intin=0;//放入缓冲区指针

6.intout=0;

//取出缓冲区指针

7.cobegin

8.processproducer_i(){processconsumer_j(){

9.

while(true){while(true)

{

10.produce();

P(full);

11.P(empty);

P(mutex);

12.

P(mutex);take()from

B[out];

13.appendtoB[in];

out=(out+1)%k;

14.in=(in+1)%k;

V(mutex);

15.V(mutex);

V(empty);

16.V(full);

consume();

17.}

}

18.}

}

19.coend

2、读者与写者问题:

源码:

 

1.intreadcount=0;//读进程计数

2.semaphorewriteblock,mutex;

3.writeblock=1;mutex=1;

4.cobegin

5.processreader_i(){

6.P(mutex);

7.readcount++;

8.if(readcount==1)

9.P(writeblock);

10.}

11.V(mutex);

12.{读文件};

13.P(mutex);

processwriter_j(){

P(writeblock);

{写文件};

V(writeblock);

14.readcount--;

15.if(readcount==0)

16.V(writeblock);

17.V(mutex);

}

18.一个经典同步问题:

吸烟者问题(patil

1971

)。

3名吸烟者在一个房间内,还有一个香烟供应者。

为了制造并抽掉香烟,每

个吸烟者需要三样东西:

烟草、纸和火柴,供应者有丰富货物提供。

三个吸烟

者中,第一个有自己的烟草,第二个有自己的纸和第三个有自己的火柴。

供应

者随机地将两样东西放在桌子上,允许一个吸烟者进行对健康不利的吸烟。

吸烟者完成吸烟后唤醒供应者,供应者再把两样东西放在桌子上,唤醒另一个

吸烟者。

试采用信号量和PV操作来编写他们同步工作的程序。

解:

分析:

同时有效的只有一个生产者和一个消费者,所以这是一个生产者

者与一个消费者共享一个缓冲池问题。

 

Semaphore

empty=1,full1=full2=full3=0;//full1是拥有烟草的,full2是拥有纸的,full3是拥有火柴的

processproducer(){

P(empty);

if(放paper

&match)

V(full1);//唤醒

else{if(放paper

&烟草)V(full2);

elseV(full3);}

process烟草(){

P(full1);

paper&match;

V(empty);

卷烟;

吸烟;

}

process火柴(){

P(full1);

paper&烟草;

V(empty);

卷烟;

吸烟;

 

}

processpaper(){

P(full1);

取烟草

&match;

V(empty);

卷烟;

吸烟;

 

}

20.有三组进程Pi、Qj、Rk,其中Pi

、Qj构成一对生产者和消费者,共享一个由M1个缓区构成的循环缓冲池buf1

Qj、Rk凡构成另一对生产者和消费者,共享一个由M2

个缓冲区构成的循环缓冲池buf2

如果Pi每次生产一个产品投入buf1,Qj每次从中取两个产品组装成一个后并投

入buf2,Rk每次从中取三个产品包装出厂.试用信号量和P

、V操作写出它们同步工作的程序。

解:

分析:

这是多个生产者与多个消费者共享多个缓冲区问题。

(此

题考试概率为0。

intc1=c2=0;

Semaphoreempty1=k,empty2=m,full1=full2=0,mutex1=mutex2=1;

processPi(){

P(empty1);

P(mutex1);

放产品;

c1++;

if(c1==2){c1=0;V(full1);}

V(mutex1);

}

processQj(){

P(full1);

P(mutex1);

取产品两个;

V(mutex1);

V(empty1);

V(empty1);

P(empty2);

P(mutex2);

放产品;

c2++;

if(c2==3){c2=0;V(full2);}

V(mutex2);

}

ProcessRk(){

 

P(full2);

 

P(mutex1);

取产品3个;

V(mutex2);

V(empty2);

V(empty2);

V(empty2);

}

银行家算法是解决死锁的关键途径。

28.设当前的系统状态如下,此时Available(1,1,2)。

进程

ClaimAllocation

R1R2R3R1R2R3

P1322100

P2613511

P3314211

P4422002

 

(1)计算各个进程还需要的资源数Cki-Aki。

(2)系统是否处于安全状态,为什么?

(3)进程P2发出请求向量request2(0,0,1),系统能把资源分配给它吗?

(4)若在进程P2申请资源后,P1发出请求向量request1(1,0,1),

系统能把资源分配给它吗?

(5)若在进程P1申请资源后,P3发出请求向量request3(0,0,1),

系统能把资源分配给它吗?

解:

(1)Need=Cki-Aki,如图所示:

 

进程

ClaimAllocationNeedAvailabler

R1R2R3R1R2R3R1R2R3112

P1322100222

P2613511102

P3314211103

P4422002420

解:

(2)寻找一个安全序列如(P2→P1→P3→P4),如图所示:

进程

ClaimAllocationNeedAvailabler

R1R2R3R1R2R3R1R2R3112

P1322100222623

P2613511102723

P3314211103934

P4422002420936

分析:

可分配的是(1,1,2),符合条件的只有P2,从P2开始,算出下一个Available=(1,1,2)+(5,1,1)=(6,2,3)。

这时,符合条件都可以,所以随便选取一

个进程来计算Available。

依次类推,找到一个安全序列(P2→P1→P3→P4),

所以系统是安全的。

解:

(3)

寻找一个安全序列如(P2→P1→P3→P4),因为request2(0,0,2)向量的各个值

都小于(1,1,2),由

(2)知可以找到一个安全序列(P2→P1→P3→P4),系统

是安全的,可以分配资源给它。

(4)同理可证,系统不能分配资源给它,因为找不到一个安全序列。

(5)同理可证,系统不能分配资源给它,因为找不到一个安全序列。

36.独木桥问题1:

东西向汽车驶过独木桥,为了保证交通安全,只要桥上无车

,则允许一方的汽车过桥,待其全部过完后,才允许另一方的汽车过桥。

请用

信号量和PV操作写出汽车过独木桥问题的同步算法。

解:

分析:

这是读者与写者的两类读者问题。

Semaphorelmutex=rmutex=1,bridge=0;

intlcar=rcar=0;

processlcar(){

P(lmutex);

lcar++;

P(bridge);

V(lmutex);

if(lcar==1){

 

过桥;P(lmutex);lcar--;}

if(lcar==0){V(bridge);V(lmutex);}

}

processrcar(){

P(rmutex);

rcar++;

P(bridge);

V(rmutex);

if(rcar==1){

过桥;P(rmutex);rcar--;}

if(rcar==0){V(bridge);V(rmutex);}

}

37.独木桥问题2:

在独木桥问题1中,限制桥面上最多可以有k辆汽车通过.试采

用信号量和PV操作写出汽车过独木桥问题的同步算法。

解:

分析指出:

这是读者与写者的多个读者问题;

 

Semaphorelmutex=rmutex=1,bridge=0,mutex=k;

intlcar=rcar=0;

processlcar(){

P(lmutex);

lcar++;

P(bridge);

V(lmutex);

if(lcar==1){

P(mutex);

过桥;

V(mutex);

P(lmutex);lcar--;}

if(lcar==0){V(bridge);V(lmutex);}

}

processrcar(){

P(rmutex);

rcar++;

P(bridge);

V(rmutex);

if(rcar==1){

P(mutex);过桥;

V(mutex);P(rmutex);rcar--;}

if(rcar==0){V(bridge);V(rmutex);}

}

 

44.桌上有一只盘子,每次只能放入一只水果。

爸爸专向盘子里放苹果(Apple),妈妈专向盘子放橘子,一个儿子专等吃盘子里的橘子,一个女儿专等吃盘子

里的苹果。

写出爸爸妈妈儿子女儿正确同步互斥的算法。

解:

分析:

同时有效的是一个生产者和一个消费者,所以这是一个生产者与一

个消费者共享一个缓冲池问题。

爸爸与妈妈是互斥关系,儿子与妈妈是同步关

系,女儿与爸爸是同步关系,儿子与女儿无关系。

Semaphoreempty1=1,full1=full2=0;//full1代表女儿,full2代表儿子

processFather(){

P(empty);

 

放苹果;

V(full1);//唤醒女儿

 

}

processMother(){

P(empty);

放橘子;

V(full2);//唤醒儿子

 

}

processDaugther(){

P(full1);

取苹果;

V(empty);

吃苹果;

 

}

processSon(){

P(full2);

取橘子;

V(empty);

吃橘子;

 

}

45.

桌上有一只盘子,最多可以容纳两个水果,每次仅能放入或取出一个水果。

爸专向盘子里放苹果(Apple),妈妈专向盘子放橘子,一个儿子专等吃盘子里

的橘子,一个女儿专等吃盘子里的苹果。

写出爸爸妈妈儿子女儿正确同步互斥

的算法。

解:

分析:

这是多个生产者与多个消费者共享多个缓冲池问题。

 

Semaphoreempty1=k,empty2=m,full1=full2=0,mutex1=mutex2=1;

//full1代表女儿,full2代表儿子

 

processFather(){

 

P(empty1);

P(mutex1);

放苹果;

 

V(mutex1);

V(full1);//唤醒女儿

 

}

processMother(){

P(empty2);

P(mutex2)

放橘子;

 

V(mutex2);

V(full2);//唤醒儿子

}

processDaugther(){

P(full1);

P(empty1);

取苹果;

V(empty1);

V(mutex1);

吃苹果;

 

}

processSon(){

P(full2);

P(empty2);

取橘子;

V(empty2);

V(mutex2);

吃橘子;

 

}

第四章存储管理

页面置换算法详细介绍:

1)最佳页面替换算法OPT

淘汰将来再也不访问或长时间不访问的页面。

 

2)先进先出页面替换算法FIFO

选择驻留主存时间最长的页面进行置换。

3)最近最少用页面替换算法LRU

淘汰最近未使用的页面。

每个页面设置一个多位计数器,又叫最不常用页面替换算法LFU。

每当访问

一页时,就使它对应的计数器加1。

 

4)第二次机会页面替换算法SCR

5)时钟页面替换算法Clock

当页面被访问时,计数器加1,淘汰时,从当前位置开始循环扫描队列,

若页面的访问位位1,则将它重新置0,在检查下一个,若访问位为0,则它

就是将被淘汰的那个页面

6、某计算机有cache、内存、辅存来实现虚拟存储器。

如果数据在cache

中,访问它需要20ns;如果在内存但不在cache,需要60ns

将其装入缓存,然后才能访问;如果不在内存而在辅存,需要12us将其读入内

存,然后,用60ns再读入cache,然后才能访问。

假设cache命中率为0

.9,内存命中率为0.6,则数据平均访问时间是多少(ns)。

解:

ta为平均访问时间,tc为缓存时间,tm为主存时间,th为辅存时间,h为命

中率。

命中:

tc+tm;不命中:

tc+2tm;

 

ta=hctc+(1-hc)[hm(tc+tm)+(1-hm)(2tc+2tm+th)]

代入数据计算得ta=506ns。

 

解析:

先判断是否越界,如没有就计算其物理地址,反之,中断。

如在[0,430]中,因为430<600,没有发生越界中断,所以物理地址

为219+430=649.

15、在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096

字节,现有一逻辑地址为2F6AH,且第0、1、2页依次存在物理块10、12

、14号中,问相应的物理地址为多少?

解:

因为逻辑地址长度为16

位,而页面大小为4096(12位)字节,所以,前面的4位表示页号。

把2F6AH

转换成二进制为:

00

10111101101010,可知页号为2。

故放在14

号物理块中,写成十六进制为:

EF6AH。

(页内地址=块内地址)。

 

注意:

若改变页面大小为8kb(13位)呢,页号就为3,其他的类似,最后的结

果为18F6AH.

若改变一逻辑地址为9000呢,请看图:

物理地址=块号*块长+块内地址(块长=页长)

 

So,PA=14*4096+808=58152.

31.设程序大小为460个字,考虑如下访问序列:

55,20,108,180,79,310,170,255,246,433,488,369

(1)设页面大小为100个字,试给出访问序列的页面走向。

(2)假设程序可用主存为200个字,采用FIFO先进先出、最近不常使用算法LRU求

命中率。

解:

(1)用访问序列除以100取整,页面走向为0,0,1,1,0,3,1,2,2,4,4,3.

(2)m=2采用FIFO算法,一直往下挤,命中一次记一次。

LRU

算法,一直往下挤,命中一次记一次但要提在第一位:

请看图

 

m=2FIFOLRU

001103122443

001103122443

00111332244

3

001103122443

000113322

4

0010311224

红色代表命中:

命中率:

6/12=50%

红色代表命中:

命中率:

6/12=50%

47题中的m=4,FIFO、LRU算法与上面类似。

 

第五章设备管理

 

算法回顾详细介绍:

 

移臂调度策略算法(核心)

注意磁头方向

 

1.

电梯调度算法(一级一级地向磁头方向扫描,不到最后一个,然后反向

扫描);

2.

最短查找时间优先算法SSTF(先执行查找时间最短的那个磁盘请求);

3.

先来先服务算法FCFS(先来的先执行请求);

4.

扫描算法SCAN(类似电梯调度算法,但是要扫描最后一个);

5.

分步扫描算法

6.循环扫描算法

1

旋转型设备上信息的优化

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1