
| 出版日期:2002-03-25 总期号:460 本年期号:10 |
|
计算机自考《操作系统》题解
邓灿 4月的自学考试日期临近,大家正处于紧张忙碌的学习当中。在计算机专业当中,操作系统是一门基础性、理论性都很强的课程。我凭借自己多年自考经验,总结了几道经典习题,希望对大家能有所帮助。 例题一 假定进程状态变迁如图所示,试问:(CPU不能空闲)
1、是什么事件引起每种变迁?(三种状态四种变迁) 2、在什么条件下,一个进程的变迁3能引起另一进程的变迁1? 3、在什么情况下将发生下列因果关系?2→1;3→2;4→1。 参考答案:1、引起状态变迁1的事件有:正在运行的进程由于时间片到达而转入就绪状态时;正在运行的进程等待某种事件被阻塞时;正在运行的进程出现故障或正常结束时;在允许CPU抢占的调度算法时,更高优先级就绪队列中出现一个进程,或者就绪队中出现一个比运行进程优先级高的就绪进程。 引起状态变迁2的事件有:正在运行的进程时间片到了;正在运行的进程的CPU被抢占,该进程状态发生2的变迁; 引起状态变迁3的事件有:正在运行的进程等待某事件发生(列如:等I/O完成,等待别的进程发来信号、信件,出现异常后等待处理)。 引起状态变迁4的事件有:进程等待的事件发生完了(如I/O完成,所等待的信号、信件发了)。 2、就绪队列非空时。 3、2→1 有因果关系,因为2发生时,假如就绪队列不空,就会选择一个进程运行,从而发生1。若就绪队列空,此时2发生,就会使就绪队列非空,从而仍会发生1。 3→2 没有因果关系。 4→1 当系统中无进程执行,且就绪队列为空时,调度程序无事可做时,由于此时发生了4,一个就绪进程就产生了,因而产生了变迁1。当进程是可抢占调度方式时,发生4而产生了新的就绪进程,其优先级高于正在运行的进程。 例题二 设有n个单元环形缓冲区和一个无穷信息序列,甲进程按信息序列依次涿个把信息写入环形缓冲区,乙进程则依次把缓冲区信息读出。 1、叙述甲、乙进程间的制约关系。 2、下列用P、V操作表示的同步算法有何错误?其中:S1初值=0,S2初值=n-1。 甲 乙 ↓ ↓ V(S1) P(S1) 写入缓冲区 取出信息 P(S2) V(S2) ↓ ↓ 其中:S1初值=0,缓冲区满的个数;S2初值=n-1,空的个数。 3、用P、V 操作写出正确的同步算法。 参考答案:1、没有考虑程序中可能出现的制约关系:甲不能超前乙n个缓冲单元(使环形缓冲区满,而丢失数据);乙(读)不能超前甲。 2、甲进程的V(S1)(唤醒乙进程)不能放置在“写入”动作之前,即不能在尚未写入之前,就用V(S1)通知乙可以读取。否则,可能出现:在V(S1)之后,尚未写入信息之前,甲若被中断而转入乙运行时,乙将通过P(S1),从而读取尚未写入的缓冲区,造成错误。 3、正确的同步算法如下图所示。 解1: 甲 乙 写入缓冲区 P(S1) V(S1) 读取信息 P(S2) V(S2) 解2: 甲 乙 P(S2) P(S1) 写入缓冲区 读取信息 V(S1) V(S2) 解1说明:这里:S1(空)初值为零,S(满)初值为n-1,满足V(S1)后,S1+S2=N。 解2说明:这里:S1初值为零,S2初值为n。 注意:甲、乙两进程的写入、读出动作可以有互斥要求,也可以没有。这由表示缓冲区位置的指针是否为二者共享变量来决定,为简化我们设甲、乙进程不共享变量。 例题三 银行家算法(受控分析):现在有12个资源提供给三个进程共享,进程1共需要4个资源,但是第一次先申请1个资源,进程2共需要6个资源,第一次需要4个资源,进程3共需要8个资源,第一次要5个资源。现在分配情况如下:
试问:1、现在系统是否安全? 2、进程1若申请1个资源,系统分配给该进程,系统是否安全?你如何检测? 参考答案:1、安全。因为:目前空闲的两个资源可分配给进程2使用,进程2得到全部资源后,能在有限的时间内执行结束而释放6个资源。 2、不能。因为若分配给进程1,进程1和2都不能得到所需要的全部资源,都不能结束,而释放他们所占有的资源。银行家算法是能确保系统安全时,才能把资源分配给申请者,保证一个进程得到全部资源,可使系统安全。 |
||||||||||||||||||||||||||||||||||||