第2章进程管理解答
一、单项选择题
[解答]
1.d。.
2.c。进程的实体由PCB、程序与数据3部分组成。
3.b。
4.b。允许3个进程同时进入互斥段的互斥信号量初值设为3。
5.d。并发进程之间可能存在同步与互斥关系,也可能不存在任何关系。6.a。
7.c。由于互斥信号量的初值是1,则极端情况是一个进程访问临界资源而其余N-1个进程处于等待状态,即信号量的值为-(N-1)
8.d。当资源总数为4,并发进程为2,每个进程的最大需求是3时,可能够出现每个进程都占用2个资源而又申请第3个资源的死锁状态。
9.a。先来先服务、响应比高者优先和均衡调度算法都属于作业调度算法。10.b。进程从执行态变成就绪态通常有两种情况:(1)分时操作系统下时间片到;(2)剥夺式进程调度方式下有更高优先级的进程进入就绪状态。
11.b。
12.c。
13.d。如果存在就绪进程且处理机空闲时,进程调度程序就必然选中一个就绪进程使之投入运行;所以d错误。
14.d。 a~c概念都不完全。
15.d。 a~c都会引进操作系统选择新进程运行,仅d不会。
16.a 17. a 18。d 19。d 20。b 21。a 22。d 23。d 24。a 25.b 26.c 27。b 28。d 29。c 30。B
二、填空题[解答]
1.线性表链接表(或队列) 2.删除剥夺
3.因为PCB是进程存在的唯一标志,故填PCB 4.资源竞、进程推进顺序不当
5.非剥夺条件逐次请求条件环路条件 6.就绪运行
7.进程中访问临界资源的那段程序代码
8.当出现死琐的极端情况时,处于等待的进程数为n,故填n
9.可用资源的数目,因请求该资源而被阻塞的进程数目
10.剥夺式调度总是将优先级高的进程(不包括等待队列上的进程)投入运行,故填
“剥夺式”11.P V
12.当信号量知小于零时,其绝对值为被阻塞的进程个数,故填4
13.互斥、同步、条件变量14. —2~2 15.临界区(或互斥段) 16.程序数据 PCB. 17.银行家算法 18.同步 19.运行态进程调度 20.创建消亡
21.资源分配独立运行调度 22.临界区 P操作 V操作
23.引起进程调度的原因进程调度算法的选择就绪队列的组织.
三、问答题
1.操作系统中为什么要引入进程的概念?为了实现并发进程间的合作和协调工作,以及
保证系统的安全,操作系统在进程管理方面应做哪些工作?
[解答]在多道程序环境下,程序的并发执行代替了程序的顺序执行,并发执行破坏了程序的封闭性和可再现性,使得程序和计算不再一一对应。此外,并发执行又导致了资源共享和资源竞争,这造成了各并发执行的程序间可能存在相互制约的关系。因此,并发执行的程序已不再处于一个封闭的系统中,从而出现了许多新的特征,即独立性、并发性、动态性以及并发程序相互间的制约性。程序这个静态概念已经无法真实地反映并发程序执行的特征,所以我们需要一个能够描述并发程序执行过程且用来共享资源的基本单位——进程,即“可以并发执行的程序在一个数据集合上的一次执行过程。”
操作系统对进程管理方面应做的工作如下。
(1)进程控制:系统必须设置一套控制机构来实现进程创建、进程撤消以及进程在运行过程中的状态转换。
(2)进程同步:系统必须设置同步机制来实现对所有进程的运行进行调节,协调的方式包括继承的互斥和进程的同步。
(3)进程通信:多道程序环境下可能需要诸进程合作完成一个任务,这些进程相互间需要通过交换信息来协调各自工作的进度。因此系统必须具有进程之间通信(交换信息)的能力。(4)进程调度:系统必须能够在处理机空闲中,按一定算法从就绪进程队列中选择一个就绪进程,把处理机分配它,并为之设置运行的现场使其投入运行。
2.试比较进程和程序的区别。
[解答]进程和程序的区别如下:
(1)程序是指令的有序集合,是一个静态的概念,其本身没有任何运行的含义,进程是程序在处理机上的一次执行过程,是一个动态的概念。
(2)程序作为软件资料可长期保存,而进程则是有生命期的,因创建而产生、因调度而执行、因得不到资源而暂停、因撤消而消亡。
(3)程序是记录在介质上指令的有序集合,而进程则由程序、数据和进程控制块3部分组成。
(4)进程与程序之间无一一对应关系。不同的进程可以包含同一个程序,同一个程序在执行中也可以产生多个进程。
(5)进程是一个独立运行的单位,也是系统进行资源分配和调度的独立单位,而程序无此概念。
3.进程和线程的主要区别是什么?
[解答]进程和线程的主要区别如下:
(1)线程是进程的一个组成部分。一个进程可以有多个线程,而且至少有一个可执行线程。
(2)进程是资源分配的基本单位,它拥有自己的地址空间和各种资料。线程是处理机调度的基本单位,它只能和其他线程共享进程的资源,而本身并不具有任何资源。
(3)进程的多个线程都在进程的地址空间内活动。这样,在以线程为单位进行独立机调度和切换时,由于不发生资源变化特别是地址空间的变化,因此切换时间较短。而以进程为单位进行处理机调度和切换时,由于涉及到资源转移及现场保护等问题,将导致切换时间变长和资源利用率降低。
(4)线程和进程一样,都有自己的状态和相应的同步机制。但是,由于线程没有自己单独的程序数据空间,因而不能像进程的程序和数据那样交换到外存去。
(5)进程的调度和控制大多由操作系统的内核完成,而线程的控制既可以由操作系统的内核完成,也可以由用户控制完成。
4.进程之间存在哪几种相互制约的关系?各是什么原因引起的?下列活动分别属于哪种
制约关系?
(1)若干同学去图书借书;
(2)两队举行篮球比赛;
(3)流水线生产的各道工序;
(4)商品生产和社会消费;
[解答]进程之间的制约关系分为直接制约(即同步)和间接制约关系(即互斥)。同步是因合作进程之间协调彼此的工作而控制自己的执行速度,即因相互合作、相互等待而产生的制约关系;而互斥是进程之间竞争临界资源而禁止两个以上的进程同时进入临界区所发生的制约关系。
(1)属于互斥关系,因为一本书只能借给一个同学。
(2)属于互斥关系,篮球只有一个,两队都要争夺。
(3)属于同步关系,各道工序的开始都依赖前一道工序的完成。
(4)属于同步关系,商品没有生产出来则消费无法进行,商品没有消费完则无须再生产。
6. 进程基本状态变迁如图3-8所示。问:
(1)在什么情况下将发生下述状态的因果变迁?
a .2 1 b. 3 2 c. 4 1 d.. 3 1
(2)在什么情况下,下述状态变迁不会立即引起其他变迁?
a .1
b . 2 c. 3 d . 4
4
图3-8 进程基本状态变迁图
[解答]
(1)各种状态因果变迁发生的情况如下:
a.正运行的进程因时间片到变为就绪状态的变迁2,必然引起一个就绪进程被调度执行的变迁1。
b. 3 2不可能产生。
c.当一进程从等待状态变为就绪状态的变迁4,在该进程的优先级最高且系统采用抢占式调度时,就会引起该进程又被调度执行的变迁1。
d.正在运行的进程因请求资源未得到满足而变为等待状态的变迁3,必然引起一个就绪进程被调度执行的变迁1。
(2)不引起其他变迁的情况如下:
a.由就绪状态变为运行状态的变迁1不会引起其他变迁。
b.变迁2必然引起变迁1。
c.仅当无就绪进程时,变迁3不会引起变迁1。
非抢占式调度下或从等待状态变为就绪状态时的进程优先级较低,则不引起变迁1,d.非抢占式调度下或从等待状态变为就绪状态时的进程优先级较低,则不引起变迁1,当然也不引起其他变迁。
7. 下述程序是解决两个进程互斥访问临界区问题的一种方法,试从“互斥”、“有空即进”、“有限等待”3个方面讨论它的正确性,如果它是正确的,则证明之;如果它不正确,请说明理由。
Program sample;
V ar c1 ,c2 :integer ;
Procedure p1 ; /*第一个进程p1*/
Begin
Repeat
一个线程可以包含多个进程Other section 1;
Repeat
C1 :=1-c2
Until c2 <>0;
Critical section ;/*临界区*/
C1 :=1
Until false
End
Procedure p2 ;
Begin
Repeat
Other section 2;
Repeat
C2 :=1-c1
Until c1 <>0;
Critical section ;/*临界区*/
C2 :=1
Until false
End ;
Begin
C1 :=1;
C2 :=1;
Cobegin
P1 ;
P2 ;
Coend
End
[解答]
(1)从“互斥”方面讨论。已知c1、c2的初值为1,假若进程p1执行到c1:=1-c2时进程p2也同时执行c2:=1-c2。这样,c1和c2的值都变为0,接着再各自
循环执行到c1:=1-c2和c2:=1-c1时就变为1。此时进程p1和p2将同时进
入临界区,从而破坏了“互斥”条件。
(2)从“有空即进”方面讨论。假定初始临界区为空,进程p1执行了c1:=1-c2,由于c2的初值为1 ,这使得c1的值变为0,但c2值仍为1,这保证了进程
p1进入临界区。当进程p1的情况也类似。因此,该程序满足“有空即进”的
原则。
(3)从“有限等待”方面讨论。由(2)可知,假定进程p1正在临界区执行,进程p2申请进入临界区,则因进程p1会在有限时间内执行完临界区代码并退出临
界区,然后将执行c1:=1,这使得进程p2因c1的值变为1而立即即进入临
界区。因此,该程序满足“有限等待”的原则。
8. 产生死锁的必要条件是什么?解决死锁问题常用哪几种措施?
【解答】产生死锁的必要条件如下:
(1)互斥条件:进程对所需要的资源进行排它性控制,即在一段时间内某资源为一进程所独占。
(2)请求和保持条件:进程因请求资源阻塞时,对已分配它的资源保持不放。
(3)不剥夺条件:进程所获得的资源在未使用完之前,不能被其他进程强占,而只能由该进程自己释放。
(4)环路条件:在发生死锁时,进程――资源图必构成一环路,即前一个进程保持着后一个进程所需要的资源。
解决死锁问题常用的措施有:
(1)死锁的预防;
(2)死锁的检测与解除。
9.要使一个系统不发生死锁,一般可采用哪些方法?简述它们的实现原理。
【解答】要使一个系统不发生死锁,一般可采用如下方法:
(1)死锁检测:当系统为进程分配资源时,若未彩任何限制性措施,则必须保存有关资源的请求和分配信息,并采用某种算法根据这些信息来检测系统是否已进
入死锁状态。
(2)死锁解除:当死锁出现常采用撤消某些进程或剥夺某些进程资源的方法来解除死锁。
(3)死锁避免:该方法把系统的状态分为安全和不安全两种,并保证系统始终处于安全状态,从而避免死锁的发生。最有代表性的算法是Dijkstra的银行家算法。
(4)死锁预防:通过破坏死锁的4个必要条件中的2~4条件之一来预防死锁的出现,即:
①破坏“请求和保持”条件;
②破坏“不剥夺”条件;
③破坏“环路等待”条件。
10.Dijkstra 1965年提出的银行家算法其主要思想是什么?它能够用来解决实际中的死锁问题吗?为什么?
【解答】银行家算法是解决死锁的一种策略,其主要思想是:在每次实施资源分配之前,先进行试探分配,并对这种试探分配进行安全性计算,即查这种试探分配中是否存在某种顺序,按此顺序进行资源分配和使回收使全部进程都能够正常运行结束。如果存在这种顺序,则正式实施这次资源分配,否则就拒绝此次资源分配。
银行家算法虽然具有很好的理论意义,但在实际系统中却难以实施,其原因一是难以事先获得进程申请的最大资源数;二是在运行过程中进程的个数是不断变化的,原先预计将发
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论