课后部分习题答案(汤子赢版)(3)

发布时间:2021-06-07

计算机操作系统第四版汤小丹版

b. 当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行状态转变为阻塞状态。

c. 当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态。

12. 为什么要引入挂起状态?该状态有哪些性质?

a. 引入挂起状态主要是出于4种需要(即引起挂起的原因): 终端用户的请求,父进程请求,负荷调节的需要,操作系统的需要。

b. 被挂起的进程是处于静止状态,并且不能直接被处理机调度。

@. 为什么进程在进入临界区之前应先执行“进入区”代码?而在退出前又要执行“退出区”代码?

为了实现多个进程对临界资源的互斥访问,必须在临界区之前加一段用于检查临界资源是否正在被访问的代码,如未被访问,该进程可进入临界区对此临界资源进行访问;如正被访问,则该进程不能进入临界区访问临界资源。

在退出临界区后,执行恢复访问标志的代码为“退出区”,而在退出前执行“退出区”代码主要是为了使其它进程能再访问此临界资源。

@. 同步机构应遵循哪些基本准则?为什么?

a. 空闲让进、忙则等待、有限等待、让权等待四条准则

b. 为实现进程能互斥地进入到自己的临界区

@. 试从物理概念上说明记录型信号量wait和signal。

Wait(S):当S.value>0时,表示目前系统中这类资源还有可用的,执行一次

wait操作,意味着进程请求一个单位的该类资源,是系统中可供

分配的该类资源减少一个,因此描述为S.value:=S.value-1;当

S.value<0时,表示该类资源已分配完毕,因此进程应调用block

原语,进行自我阻塞,放弃处理机,并插入到信号量链表S.L中。

Signal(S):执行一次signal操作,意味着释放一个单位的可用资源,使系统

中可供分配的该类资源数增加一个,故执行S.value:=S.value+1操

作。若加1后S.value≤0,则表示在该信号量链表中,仍有等待

该资源的进程被阻塞,因此应调用wakeup原语,将S.L链表中的

第一个等待进程唤醒。

@. 试写出相应的程序来描述图2-17所示的前驱图。

a. Var a, b, c, d, e, f, g, h; semaphore:= 0, 0, 0, 1, 0, 0, 0, 0;

begin

parbegin

begin S1; signal(a); signal(b); end;

begin wait(a); S2; signal(c); signal(d); end;

begin wait(b); S3; signal(e); end;

begin wait(c); S4; signal(f); end;

begin wait(d); S5; signal(g); end;

begin wait(e); S6; signal(h); end;

begin wait(f); wait(g); wait(h); S7; end;

parend

end

b. 略

课后部分习题答案(汤子赢版)(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219