所有信号量均被初始化为 1 ,第 i 位哲学家的活动可描述为:
([i]); (. [(1) 5]);
;
([i]); ([(1) 5]) ;
; ;
28 .在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数据进行计算 .试写出利用信号量机制实现两者共享单缓冲的同步算法。 答:
a. , , : 1, 1, 0; :
; (); (); ; (); (); ; :
(); (); ; (); (); ; ;
b. , : 1, 0; :
; (); ; (); ; :
(); ; (); ; ;
29 .画图说明管程由哪几部分组成,为什么要引入条件变量?
答:管程由四部分组成: ①管程的名称; ②局部于管程内部的共享数据结构说明; 据结构进行操作的一组过程;④对局部于管程内部的共享数据设置初始值的语句;
③对该数
当一个进程调用了管程, 在管程中时被阻塞或挂起, 直到阻塞或挂起的原因解除, 间,如果该进程不释放管程,则其它进程无法进入管程,
而在此期
被迫长时间地等待。为了解决这个
问题,引入了条件变量 。
30 .如何利用管程来解决生产者与消费者问题? 答:首先建立一个管程,命名为
,包括两个过程:
(1) ) ( )过程。生产者利用该过程将自己生产的产品放到缓冲池,用整型变 量
表示在缓冲池中已有的产品数目,当 ≥n 时,表示缓冲池已满,生产者须等待。
≤0 时,(2) ) ( )过程。消费者利用该过程从缓冲池中取出一个产品,当 表示缓冲池中已无可取的产品,消费者应等待。
管程可描述如下:
; [0,
-1] ;
,; ()
> ; (); (1) n; 1; ; ()
<=0 ; (); (1) n; 1; ; 0; 0
在利用管程解决生产者一消费者问题时,其中的生产者和消费者可描述为::
(); ; : (); ; ;
31 .什么是 信号量?试利用 信号量写出生产者一消费者问题的解法。 答:为解决并行带来的死锁问题,在
操作中引入
条件,其基本思想是将进
程在整个运行过程中所需要的所有临界资源, 一次性地全部分配给进程, 用完后一次性释放。
解决生产者-消费者问题可描述如下 :
: 1,0; : [01] ; : 0,0; :
;
(); (s123); 12
为执行生产者进程除 外其余的条件
(); (); (1) n; (); (); (s123); ; :
(); (k123); 12
(); (); (1) n; (); (); (k123); ; ;
32 .什么是信号量集?试利用信号量集写出读者一写者问题的解法。 答:对 信号量加以扩充,形成的信号量集合的读写机制。解为执行消费者进程除 外其余的条件
法: ; : ,1;
(L,1,1); (,1,1);
;
(L,1); (,1,1,0); ; (,1);