ccidnet????

出版日期:2002-03-25 总期号:460 本年期号:10

本期导读
热点聚焦
硬件世界
CCE评测
软件.net
数字生活
社会培训
教育信息化
读者俱乐部
计算机自考《操作系统》题解

邓灿

  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 1 4
进程2 4 6
进程3 5 8
空闲资源数 2  

  试问:1、现在系统是否安全?

  2、进程1若申请1个资源,系统分配给该进程,系统是否安全?你如何检测?

  参考答案:1、安全。因为:目前空闲的两个资源可分配给进程2使用,进程2得到全部资源后,能在有限的时间内执行结束而释放6个资源。

  2、不能。因为若分配给进程1,进程1和2都不能得到所需要的全部资源,都不能结束,而释放他们所占有的资源。银行家算法是能确保系统安全时,才能把资源分配给申请者,保证一个进程得到全部资源,可使系统安全。