操作系统第二章课后答案汇编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章进程管理2.
S1: a:=x+y;
S2: b:=z+1;
S3: c:=a-b;
S4: w:=c+1;
3.
程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的进程之间,形成了相互制约的关系,从而也就使得进程在执行期间出现间断性。
4. 程序并发执行时为什么会失去封闭性和可再现性?
因为程序并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态是由多个程序来改变,致使程序的运行失去了封闭性。而程序一旦失去了封闭性也会导致其再失去可再现性。
5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响?
为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,从而在操作系统中引入了进程概念。
影响: 使程序的并发执行得以实行。
6. 试从动态性,并发性和独立性上比较进程和程序?
a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源
而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体。
b. 并发性是进程的重要特征,同时也是OS的重要特征。引入进程的目的正是为了使其
程序能和其它建立了进程的程序并发执行,而程序本身是不能并发执行的。
c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和
独立调度的基本单位。而对于未建立任何进程的程序,都不能作为一个独立的单位来运行。
7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标志?
a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB中记录了操
作系统所需的用于描述进程情况及控制进程运行所需的全部信息。因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。
b. 在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程
的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志。
8. 试说明进程在三个基本状态之间转换的典型原因.
a. 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变
为执行状态。
b. 当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行
状态转变为阻塞状态。
c. 当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态。
9. 为什么要引入挂起状态?该状态有哪些性质?
a. 引入挂起状态主要是出于4种需要(即引起挂起的原因): 终端用户的请求,父进程
请求,负荷调节的需要,操作系统的需要。
b. 被挂起的进程是处于静止状态,并且不能直接被处理机调度。
17. 为什么进程在进入临界区之前应先执行“进入区”代码?而在退出前又要执行“退出区”代码?
为了实现多个进程对临界资源的互斥访问,必须在临界区之前加一段用于检查临界资源是否正在被访问的代码,如未被访问,该进程可进入临界区对此临界资源进行访问;
如正被访问,则该进程不能进入临界区访问临界资源。
在退出临界区后,执行恢复访问标志的代码为“退出区”,而在退出前执行“退出区”
代码主要是为了使其它进程能再访问此临界资源。
18. 同步机构应遵循哪些基本准则?为什么?
a. 空闲让进、忙则等待、有限等待、让权等待四条准则
b. 为实现进程能互斥地进入到自己的临界区
19. 试从物理概念上说明记录型信号量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链表中的第一个等待进程唤醒。
22. 试写出相应的程序来描述图2-17所示的前驱图。
a. Var a, b, c, d, e, f, g, h; semaphore:= 0, 0, 0, 0, 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
23. 在生产者—消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果将
会有何影响?
如果缺少了signal(full),那么表明从第一个生产者进程开始就没有对信号量full值改变,即使缓冲池存放的产品已满了,但full的值还是0,这样消费者进程在执行wait(full)时会认为缓冲池是空的而取不到产品,那么消费者进程则会一直处于等待状态。
如果缺少了signal(empty),例如在生产者进程向n个缓冲区投满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品时empty 并没有被改变,直到缓冲池中的产品都取走了,empty的值也一直是0,即使目前缓冲池