38.简述磁盘移臂调度的“最短寻找时间优先”和“电梯调度”算法。并比较两者主要的相 同点和不同点。
答:SSTF算法总是选择请求所在柱面号上与当前磁头所在柱面号距离最近的请求先服务;
SCAN算法总是先选择在当前移动方向上与当前磁头距离最近的请求先服务, 当移动方向上无请求时立即反向移臂; 相同点:两者均想达到使磁头移过的道数最少;
不同点:SSTF算法不考虑当前移臂的方向,而SCAN要考虑当前移臂方向, 即使反方向有请求,并与当前磁头的距离最经也不先服务。
39.什么叫系统处于安全状态?怎样才能使系统保持在安全状态?
答:如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于“安全状态”。
采用预防死锁的方法,可以使系统保持在安全状态。
采用银行家算法,通过动态地检测系统中资源分配情况和进程对资源的需求情况来决定如何分配资源, 在能确保系统处于安全状态时才把资源分配给申请的进程,从而避免系统发生死锁。
40.简单叙述Shell进程的框架(内含命令fork和exec)。 答:While(TRUE){
读取命令(命令,参数); if(fork()!=0){ /*父进程*/ wait(&status); }else{ /*子进程*/ exec(命令,参数,0); } }
五、综合题(本大题共4小题,第41、44小题各10分,第42、43小题各8分,共36分。) 41.简单叙述在页式虚拟存储管理系统中,一个作业执行中访问某个页时的地址转换过程。
答:(1)硬件地址转换机构查页表,若该页的标志位为1,即在内存,则按该页的主存块号进行地址转换, 得到绝对地址(或主存地址)。
(2)若该页的标志位为0,即该页不在内存,硬件产生缺页中断。 (3)操作系统处理缺页中断:
1.查主存分配表,若有空闲的主存块,则由页表读入该页内容; 2.并修改页表中的标志位为1;
3.若没有空闲的主存块,则选择一页,若该页已修改,则需写回磁盘; 4.再由页表读入该页内容并修改标志位。
42.假定系统仅有一个盘C。用户A要用到文件a、文件b和文件c,用户B要用到文件a和文件e。已知用户A的文件a与用户B的文件a是同一个文件;用户A与用户B分别用文件名c和文件名e使用同一个文件;现用户A再想建一个新文件a放到目录名为SUB中,请问:
(1)系统在这个盘上建立什么结构目录,才能使两个用户使用文件时所属关系比较清楚,不会产生混乱; 答:要采用树形结构目录 (2)画出这个盘的目录结构; 答: 根目录 用户A 用户B 用户A子目录 用户B子目录
a b c sub a e
SUB a
子目录(3)两个用户共享几个文件,它们的文件名分别是什么?
答:两个用户共享的文件有两个,一个文件名为a,另一个可用文件名c或文件名e。
43.假定有4个作业,它们到达“输入井”时间和需要运行时间如下表所示,都是十进制数。现采用响应比最高者优先算法,忽略作业调度所化的时间。并规定这4个作业全部到达“输入井”后,才开始调度。 作业号 J1 J2 J3 J4 到达输入井时间 8.0 8.3 8.5 9.0 需计算时间 2.0小时 0.5小时 0.1小时 0.4小时 开始时间 10.0 9.1 9.0 9.6 完成时间 12.0 9.6 9.1 10.0 周转时间 4.0 1.3 0.6 1.0
(1)填写各个作业的开始时间,完成时间和周转时间; 答:作业在全部到达“输入井”后,即在9.0时调度,此时,
作业J1的响应比=1.0/2.0=0.5 J2的响应比=0.7/0.5=1.4 J3的响应比=0.5/0.1=5 J4的响应比=0/0.4=0
应先调度作业J3并执行完,再计算作业响应比; J1、J2和J4分别为1.1/2.0=0.55 0.8/0.5=1.6 0.1/0.4=0.25
再调度作业J2,并执行完再计算J1、J4的响应比 J1响应比=1.6/2.0=0.8 J4响应比=0.6/0.4=1.5 再调度作业J4,最后调度J1:; (2)这4个作业的执行次序;
答:这4个作业的执行次序为:J3、J2、J4、J1 (3)这4个作业的平均周转时间。
答:平均周转时间=(4.0+1.3+0.6+1.0)/4=1.725(小时)
44.有4个并发执行的进程A,B,C,D。在执行时它们都要读共享文件F,但限制进程A和进程B不能同时读文件F,进程C和进程D也不能同时读文件F。请问用PV操作管理时: (1)应怎样定义信号量?写出信号量的初值和含义。 答:定义两个信号量S1,S2.
S1的初始值为1,用于进程A、B的互斥 S2的初始值为1,用于进程C、D的互斥 (2)写出能使它们正确执行的程序。 答:程序如下
begin S1,S2:semaphore;S1:=1;S2:=1; cobegin process A begin P(S1); read F; V(S1) end; process B begin P(S1); read F; V(S1) end; process C begin P(S2); read F; V(S2) end; process D begin P(S2); read F; V(S2) end; coend; end;