end; coend; end;
3. 某车站售票厅,任何时间最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:
(1)用PV操作管理这些并发进程时,应怎样定义信号量?写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,把应执行的PV操作填入下列方框中,以保证进程能够正确地并发执行。
Cobegin Process PI(I=1,2,…,n) Begin 进入售票厅; 购票; 退出; end Coend
(3)若购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。 答:(1)应定义一个信号量S,S的初值为20。 当0
当S=0时,厅内已有20人,欲购票者暂不能进入。 当S<0时,|S|表示等待进入的人数。
(2)用PV操作管理时保证进程正确执行的程序如下: Cobegin Process Pi ( I=1,2,3,…,n) Begin P(S); 进入售票厅; 购票; 退出; V(S) end;
Coend
(3)若购票者最多为n人,则信号量S的变化范围为:
(20-n)<=S<=20。
4. 设有12个同类资源可供4个进程共享,资源分配情况如表: 进 程 P1 P2 P3 P4
已 占 资 源 数 2 3 4 1 最 大 需 求 数 4 6 7 4 试问:(1)目前系统是否处于安全状态?为什么?
(2)如果这4个进程又都要求系统分配一个资源时,在什么情况下会引起系统的死锁?为什么?
答:(1) 目前系统出于安全状态。因为系统已为4个进程共分配了10个资源,现在还剩余
2个资源,可把这2个资源先满足进程P1的需要,当P1执行结束时可收回4个资源。进程P2、P3、P4都尚需3个资源,故可先满足其中任何一个进程的需求,假定先满足进程P2的需求,那么当进程P2执行结束时可收回进程P2占用的6个资源,加上为进程P2分配时剩余的一个资源,现在系统有剩余资源7个。这7个资源足够分配给进程P3和P4,故系统中每一个进程都能在有限的时间里得到它们所需的全部资源,系统处于安全状态。
(2)如果这4个进程又都要求系统分配一个资源时,若系统把剩余的2个资源中的一
个资源分配给了进程P2(或P3,或P4),那么系统中的这4个进程尚需的资源数分别为2个、2个、3个、3个。但系统的剩余资源数为1个,就不能满足任何一个进程的需要,使它们都处于等待资源的状态。由于每个进程得不到自己所需的所有资源而不能执行结束,也都不归还已占的资源。这样,这4个进程的等待就永远不能结束而形成了死锁。 5. A、B两个火车站之间是单轨连接的,现有许多列车同时到达A站,需经A站到达B站,列车出B站后又可分路行驶,如图所示:
A站 B站
为保证行驶安全,请你当调度时你将怎样调度列车?请你以PV操作为工具设计一个能实现你的调度方案的自动调度系统。 答:列车调度原则如下:
当A、B站之间无列车行驶时,可让到达A站的一列车进入A、B站之间行驶。 当A、B站之间有列车在行驶时,则到达A站的列车必须等待。
当在A、B站之间行驶的列车到达B站后,应让在A站等待的一列车进入单轨道行驶。
用PV操作为工具实现自动调度时,把每一列列车作为一个进程,它们的执行程序可如下设计: Begin
S:semaphore;
S:=1; Cobegin
Process I(I=1,2,…,n) Begin
arrive A; P(S); Pass AB; arrive B; V(S)
…… end; coend; end;