《操作系统》复习答疑
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统》复习答疑
1.什么是操作系统,它与系统软件之间的关系是什么?其主要功能是什么?
答:操作系统是控制计算机的所有系统资源并提供开发应用程序的基础。
操作系统是最基本的系统软件。
操作系统的主要功能是虚拟机和资源管理器。
2.资源(设备)可以分为那几类?打印机和磁盘属于什么类资源(设备)?
答:从资源的可否剥夺的角度看,可以把资源分为可剥夺资源和不可剥夺资源。
从设备的占有角度看,资源分为独占设备、共享设备和虚拟设备。
3.读盘操作过程中所涉及到的时间开销按照时间开销从大到小依次为那些?有什么好的方法减少读盘操作的时间?
答:从大到小依次为:寻道时间、旋转延迟时间、实际的数据传输时间。
选择好的读写臂调度算法,减少寻道时间,有效减少读盘操作整的时间。
4.若某单处理机系统中有M个进程,则处于就绪状态、运行状态、阻塞状态中的进程个数分别最多为多少?
答:就绪状态进程最多为M个、运行状态进程最多为1个、阻塞状态进程最多为M个。
5.什么是死锁,死锁发生的必要条件是什么?处理死锁常用的策略有那些?
答:若一个进程集合中的每一个进程都在等待只能由本集合中的另一进程才能引发的事件,则这种情况被视为死锁。
死锁发生的必要条件是互斥、非剥夺、部分分配和循环等待条件。
处理死锁常用的策略主要(1)有忽略该问题;(2)检测死锁并恢复;(3)死锁避免;(4)死锁预防。
6.在分页技术中由虚拟地址变换为物理地址的过程有那几步?
答:(1)利用CPU所提供的虚拟地址计算出页号和页内偏移;
页号=虚拟地址DIV 页大小
页内偏移=虚拟地址MOD 页大小
(2)根据页号查找页表,得到页架号(块号);
(3)计算物理地址
物理地址=页架号*页大小+页内偏移
7.有一阅览室,读者进入时必须先在一张登记表上进行登记,该表为每一座位列一表目,包括座号和读者姓名。
读者离开时要消掉登记信号,阅览室中共有100个座位,请用类Pascal语言和Wait, Signal操作写出这些进程间的同步算法。
答:begin
S1:=100 (有100个座位)
S2:=0 (有没阅读者)
mutex: =1
cobegin
P1: repeat
P(S1);
P(mutex);
登记信息;
V(muetx);
V(S2)就座,阅读;
until false
P2: repeat
P(S2)
P(mutex);
消掉信息;
V(muetx);
V(S1);
离开阅览室;
until false
coend
end
a. 0,430
b. 1,10;
c. 2,500;
d. 3,400
e. 4,112
答:a. 219 + 430 = 649 b. 2300 + 10 = 2310
c.非法偏移, trap to operating system
d. 1327 + 400 = 1727
e.非法偏移, trap to operating system
9.在一个请求页式存储系统中,一程序的页面走向为4.3.2.1.4.3.5.4.3.2.1.5采取LRU
页面置换算法,设分配给该程序的存储块数
M 分别为3和4时,请求出在访问过程中发生的缺页次数和缺页率,并比较所得结果,从中可得到什么启发? 答:(1)M=3时
缺页10次,缺页中断率为83.3%
(2)M=4时
缺页7次,缺页中断率为66.6%
在LRU 算法下,当M 增大时,缺页次数减少,缺页中断率也减少。
10.有5个待运行的作业A 、B 、C 、D 、E ,它们的运行时间分别为10、6、2、4
和8分钟,其提交时间完全相同,其优先级别分别为3、5、2、1、4,其中5级为最高优先级。
对于下列进程调度算法,试计算其平均周转时间。
(15分)
1)、时间片轮转法(时间片长度为0。
0002分钟);
2)、优先级调度;
3)、先来先服务(按ABCDE 顺序进行)
答:1)、时间片轮转法:A 、B 、C 、D 、E 的周转时间分别为30、24、10、18、28分钟 平均周转时间=(30+24+10+18+28)/5=22分钟 (2分)
2)、优先级调度:按BEACD 顺序进行调度 (2分)
A 、
B 、
C 、
D 、
E 的周转时间分别为24、6、26、30、14 (2分)
平均周转时间=(24+6+26+30+14)/5=20分 (1分)
3)、先来先服务:A 、B 、C 、D 、E 的周转时间分别为10、16、18、22、30
平均周转时间=(10+16+18+22+30)/5=19.2分 (2分)
11、理发店理有一位理发师、一把理发椅和n 把供等候理发的顾客坐的椅子 如果没有顾客,理发师便在理发椅上睡觉
一个顾客到来时,它必须叫醒理发师
如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开。
解法:
引入3个信号量和一个控制变量:
1)控制变量waiting 用来记录等候理发的顾客数,初值均为0;
2)信号量customers 用来记录等候理发的顾客数,并用作阻塞理发师进程,初值为0;
3)信号量barbers 用来记录正在等候顾客的理发师数,并用作阻塞顾客进程,初值为0;
4)信号量mutex 用于互斥,初值为1.
var waiting : integer; /*等候理发的顾客数*/
CHAIRS:integer; /*为顾客准备的椅子数*/
customers, barbers ,mutex : semaphore;
customers := 0; barbers := 0; waiting := 0; mutex := 1;
Procedure barber; 4 3 2 1 4 3 5 4 3 2 1 5
4 3 2 1 4 3
5 4 3 2 1 5
4 3 2 1 4 3
5 4 3 2 1
4 3 2 1 4 3
5 4 3 2
+ + + + + + + 4 3 2 1 1 1 5 4 3
初值 +
begin
while(TRUE); /*理完一人,还有顾客吗?*/ P(cutomers); /*若无顾客,理发师睡眠*/
P(mutex); /*进程互斥*/
waiting := waiting –1; /*等候顾客数少一个*/
V(barbers); /*理发师去为一个顾客理发*/ V(mutex); /*开放临界区*/
cut-hair( ); /*正在理发*/
end;
procedure customer
begin
P(mutex); /*进程互斥*/
if waiting
waiting := waiting+1; /* 等候顾客数加1*/
V(customers); /*必要的话唤醒理发师*/
V(mutex); /*开放临界区*/
P(barbers); /*无理发师, 顾客坐着养神*/
get-haircut( ); /*一个顾客坐下等理发*/ end
V(mutex); /*人满了,走吧!*/
end;
//如果不考虑椅子,
mutex=1:对门p的操作权
empty=n:空椅子数
full=0:顾客数
顾客:wait(empty)
wait(mutex)
进入w
signal(mutex)
坐下等待
signal(full)
被叫入b
被理发
离开
理发师:wait(full)
wait(mutex)
将顾客叫入b
signal(mutex)
signal(empty)
理发。