答案
1. 答:①为了从变化角度动态地分析研究可以并发执行的程序,真实的反应系统的独立性、
并发性、动态性和相互制约,操作系统中不得不引入进程的概念。 ②为了防止操作系统及其关键的数据结构受到用户程序破坏,将处理机分为核心态和用户态。对进程进行创建、撤销以及在某些进程状态之间的转换控制。
2. 答:①运行状态→就绪状态:此进程根据自身的情况插入到就绪队列的适当位置,系统
收回处理及转入进程调度程序重新进行调度。 ②运行状态→阻塞状态:一个进程从运行状态道阻塞状态后。系统会调用进程调度程序重新选择一个进程投入运行。 3.
(1) 答:为支持多进程的并发执行,系统必须建立的数据结构式PCB,不同状态进程的
PCB用链表组织起来,形成就绪队列、阻塞队列。
(2) 答:阻塞原句、唤醒原句、挂起原句、激活原句
(3) 答:创建原句:建立进程的PCB,并将进程投入就绪队列。 撤销原句:删除进程的PCB,并将进程在其队列中摘除。
阻塞原句:将进程PCB中进程的状态从运行状态改为阻塞状态,并将进程投入阻塞队列。
唤醒原句:将进程PCB中进程的状态从阻塞状态改为就绪状态,并将进程从则色队列摘下,投入到就绪队列中。
4. 答:进程控制块(PCB)是为了描述进程的动态变化而设置的一个与进程相联系的数据
结构,用于记录系统管理进程所需信息。PCB是进程存在的唯一标识,操作系统通过PCB得知进程的寻在。
为了进程管理,进程控制块包括以下几方面。
(1) 进程的描述信息,包括进程标识符、进程名等。 (2) 进程的当前状况。 (3) 当前队列链接指针。 (4) 进程的家族关系。
为了中断处理,进程控制块的内容应该包括处理机状态信息和各种寄存器的内容,如通用寄存器、指令计数器、程序状态字(PSW)寄存器及栈指针等。 为了内存管理的需要,进程控制块的内容应该包括进程使用的信号量、消息队列指针等。
为了设备管理,进程控制块的内容应该包括进程占有资源的情况。
5. 答:就绪队列中有10个进程,这10个进程轮换执行,每隔进程的运行时间是300ms,
切换另一个进程所花费的总时间是10ms,隐刺系统化在进程切换上的时间开销占系统整个时间的比例是:10//(300+10)=3.2%.
6. 答:线程是进程内的一个相对独立的运行单元,是操作系统调度和分派的单位。线程只
拥有一点必不可少的资源(一组寄存器和栈),但可以和铜属于一个进程的其他线程共享进程拥有的资源。
线程是进程的一部分,是进程内的一个实体;一个进程可以有多个线程,但至少必须有一个线程。 7.
(1) 答:1表示新进程创建后,进入高优先级就绪队列;3表示进程因请求I/O活等待某
件事儿阻塞;4表示进程运行的时间片到;6表示进程I/O完成或等待的时间到达;7表示进程运行完成而退出。
(2) 答:3→2是因果变迁,当一个进程从运行态变为阻塞态时,此时CPU空闲,系统首
先到高优先级队列中选择一个进程投入运行。
4→5是因果变迁,当一个进程运行完毕时,此时CPU空闲,系统首先到高优先级队列中选择进程,但如果高优先级队列为空,则从低优先队列中选择一个进程投入运行。
7→2 是因果变迁,当一个进程运行完毕时,CPU空闲,系统首先到高优先级队列中选择一个进程投入运行。
3→6不是因果变迁。一个进程阻塞时由于自身的原因而发生的,和另一个进程等待的时间到达没有因果关系。
(3) 答:当进程调度时,首先从高优先级就绪队列选择一个进程,赋予它的时间片为
100ms。如果高优先级就绪队列为控,则从低优先级就绪队列选择进程,但赋予该进程的时间片为500ms。
这种策略一方面照顾了短进程,一个进程如果在100ms运行完毕它将退出系统,更主要的是照顾了I/O量大的进程,进程因I/O进入阻塞队列,当I/O完成后它就进入了高优先级就绪队列,在高优先级就绪队列等待的进程总是优于低优先级就绪队列的进程。而对于计算量较大的进程,它的计算如果在100ms的时间内不能完成,它将进入低优先级就绪队列,在这个队列的进程被选中的机会要少,只有当高优先级就绪队列为空,才从低优先级就绪队列选择进程,但对于计算量大的进程,系统给予的适当照顾时间片增大为500ms。
8.
(1) 答:是。若系统中没有运行进程,系统会马上选择一个就绪进程队列中的进程投入
运行。只有在就绪队列为空时,CPU才会空闲。
(2) 答:不一定。当系统中所有进程分别等待各自希望发生的事件时,它们都处于阻塞
状态,此时系统中既没有运行进程,也没有就绪进程。这种情况出现时,如果各个进程没有相互等待关系,只要等待的时间发生了,进程就会从等待状态转化为就绪状态。但如果处于阻塞状态的进程相互等待彼此占有的资源,系统就有可能发生死锁。
(3) 答:不一定。因为高优先级的进程有可能处于等待状态,进程调度程序只能从就绪
队列中挑选一个进程投入运行。被选中进程的优先级在就绪队列中是最高的,但在整个系统中它不一定是最高的,等待队列中进程的优先级有可能高于就绪队列中所有进程的优先级。
9.
(1) 答: P1和P2并发执行的条件是,当且仅当
R(P1)∩W(P2) ∪R(P2) ∩W(P1) ∪W(P1)∩W(P2)={}
(2)
S2 S1 S3
(3) 答:R(S1)={x},W(S2)={a},R(S2)={a},W(S2)={b},R(S3)={a},W(S3)={c}
所以W(S1) ∩R(S2)={a}, 因此S1和S2不能并发执行。
W(S1)∩R(S2)={a}, 因此S1和S3也不能并发执行。
而R(S2) ∩W(S3) ∪R(S3) ∩W(S2) ∪W(S2) ∩W(S3)={}, 因此S2和S3可以并发执行。
第三章 进程同步与通信
思考与练习题
1. 一下进程之间存在相互制约关系吗?若存在,是什么制约关系?为什么?
(1) 几个同学去图书馆借同一本书。 (2) 篮球比赛中两队同学争抢篮板球。
(3) 果汁流水线生产中捣碎、消毒、灌装、装箱等各道工序。 (4) 商品的入库出库。 (5) 工人做工与农民种粮。
2. 在操作系统中引入管程的目的是什么?条件变量的作用是什么? 3. 说明P、V操作为什么要设计成原语。
4. 设有一个售票大厅,可容纳200人购票。如果厅内不足200人则允许进入,超过则在厅
外等候;售票员某时只能给一个购票者服务,购票者买完票后就离开。试问: (1) 购票者之间是同步关系还是互斥关系? (2) 用P、V操作描述购票者的工作过程。
5. 进程之间的关系如图3-16所示,试用P、V操作描述它们之间的同步。
6. 有4个进程P1、P2、P3、P4共享一个缓冲区,进程P1向缓冲区存入消息,进程P2、
P3、P4从缓冲区中去消息,要求发送者必须等三个进程都去过本消息后才能发送下调消息。缓冲区内每次只能容纳一个消息,用P、V操作描述四个进程存取消息的情况。 7. 分析生产者——消费者问题中多个P操作颠倒引起的后果。 8. 读者——写者问题中写者优先的实现。
9. 写一个用信号量解决哲学家进餐问题不产生锁死的算法。 10. 一个文件可有若干个不同的进程所共享,每个进程具有唯一的编号。假定文件可
有满足下列限制的若干个不同的进程同时访问,并发访问该文件的哪些进程的编号的总和不得大于n,设计一个协调对该文件访问的管程。 11. 用管程解决读者——写者问题,并采用公平原则。
答案
1. (1) (2) (3) (4)
答:存在互斥关系,因为同一本书只能借给一个同学。
答:存在互斥关系,因为篮球只有一个,两队只能有一个队抢到球
答:存在同步关系,因为最后一道工序的开始依赖于前一道工序的完成。
答:存在同步关系,因为商品若没有入库就无法出库,若商品没有出库,装满了库房,也就无法再入库。
(5) 答:工人与农民之间没有相互制约关系。
2. 答:引入管程的目的是为了实现进程之间的同步和互斥。优于使用信号量在解决同步和
互斥问题时要设置多个信号量,并使用大量的P、V操作,其中P操作的排列次序不当,还会引起系统死锁,因此引入另外一种同步机制。 3. 答:用信号量S表示共享资源,其初值为1表示有一个资源。设有两个进程申请该资源,
若其中一个进程先执行P操作。P操作中的减1操作有3跳及其指令组成:去S送寄存器R;R-1送S。若P操作不用原语实现,在执行了前述三条指令中的2条,即还未执行R送S时(此时S值仍为1),进程被剥夺CPU,另一个进程执行也要执行P操作,执行后S的值为0,导致信号量的值错误。正确的结果是两个进程执行完P操作后,信号量S的值为-1,进程阻塞。 4.
(1) 答:购票者之间是互斥关系。 (2)
答: semaphore empty=200; semaphore mutex=1; void buyer() { P(empty); P(mutex); 购票; V(mutex); V(empty); } 5. 答:
semaphore a,b,c,d,e,f,g=0,0,0,0,0,0,0;
void P1() void P2() void P3() void P4() void P5() void P6() { S1; { P(a); { P(b); { P(c); { P(d); { P(e) V(a); S2; S3; S4; S5; P(f) V(b); V(e); V(c); V(f); V(g); P(g) } } V(d); } } S6; } }