当前位置:文档之家› 进程同步与死锁习题答案

进程同步与死锁习题答案

进程同步与死锁习题答案
进程同步与死锁习题答案

第 4 章进程同步与死锁

(1) 什么是进程同步?什么是进程互斥?

解:

同步是进程间的直接制约关系,这种制约主要源于进程间的合作。进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。

进程互斥是进程间的间接制约关系,当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待,进程的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行,这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。互斥是一种特殊的同步方式。

(2) 进程执行时为什么要设置进入区和退出区?

解:

为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为“进入区”代码;在退出临界区后,必须执行“退出区”代码,用于恢复未被访问标志。

(3) 同步机构需要遵循的基本准则是什么?请简要说明。

解:

同步机制都应遵循下面的4 条准则:

1. 空闲让进。当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。

2. 忙则等待。当有一个进程在临界区时,其它欲进入临界区的进程必须等待,以保证进程互斥地访问临界

资源。

3. 有限等待。对要求访问临界资源的进程,应保证进程能在有限时间内进入临界区,以免陷入“饥饿”状

态。

4. 让权等待。当进程不能进入临界区时,应立即放弃占用CPU ,以使其它进程有机

会得到CPU 的使用权,以免陷入“饥饿”状态。

(4) 整型信号量是否能完全遵循同步机构的四条基本准则?为什么?

解:不能。在整型信号量机制中,未遵循“让权等待”的准则。

(5) 在生产者-消费者问题中,若缺少了V(full) 或V(empty) ,对进程的执行有什么影响?解:

如果缺少了V(full) ,那么表明从第一个生产者进程开始就没有对信号量full 值改变,即使缓冲池存放的产品已满了,但full 的值还是0,这样消费者进程在执行P(full) 时会认为缓冲池是空的而取不到产品,那么消费者进程则会一直处于等待状态。

如果缺少了V(empty) ,例如在生产者进程向n 个缓冲区放满产品后消费者进程才开始从中取产品,这时empty=0 ,full=n ,那么每当消费者进程取走一个产品时empty 并没有被改变,直到缓冲池中的产品都取走了,empty 的值也一直是0,即使目前缓冲池有n 个空缓冲区,生产者进程要想再往缓冲池中投放产品会因申请不到空缓冲区而被阻塞。

(6) 在生产者-消费者问题中,若将P(full) 和P(empty) 交换位置,或将V(full) 或V(empty) 交换位置,对进程执行有什么影响?

解:

对full 和empty 信号量的P、V 操作应分别出现在合作进程中,这样做的目的是能正确表征各进程对临界资源的使用情况,保证正确的进程通信联络。

(7) 利用信号量写出不会出现死锁的哲学家进餐问题的算法。

解:

对哲学家按顺序从0到4编号,哲学家i左边的筷子的编号为i,哲学家右边的筷子的编号为( i+1) %5。semaphore chopstick[5]={1};

//定义信号量数组chopstick[5] ,由于侉子是临街资源(互斥) ,故设置初值均为1。

Pi(){

//i 号哲学家的进程

do{

if(i<(i+1)%5)

{

wait(chopstick[i]); wait(chopstick[(i+1)%5]);

}

else

{ wait(chopstick[(i+1)%5]); wait(chopstick[i]);

}

eat

signal(chopstick[i]); signal(chopstick[(i+1)%5]); think

}while(1);

}

(8) 利用AND 型信号量和管程解决生产者-消费者问题。解:利用AND 信号量解决生产者-消费者问题的算法

描述如下:var mutex,empty,full: semaphore:=1,n,0;

buffer: array[0,...,n-1] of item;

in out: integer := 0, 0;

begin

parbegin producer: begin repeat produce an item in nextp; Swait(empty, mutex); buffer(in) := nextp; in := (in+1) mod n; Ssignal(mutex, full); until false;

end consumer: begin repeat Swait(full, mutex); nextc := buffer(out); out := (out+1) mod n;

Ssignal(mutex, empty); consume the item in nextc; until false;

end

parend

end

利用管程机制解决生产者-消费者问题,首先需要建立一个管程ProducerConsumer,其

中包含两个过程insert(item)和consumer(item)。生产者-消费者同步问题可以用伪代码描述如下:monitor ProducerConsumer

condition full,empty;

int count;

void insert(int item)

{

if (count==N) wait(full); insert(item);

count=count+1;

if (count==1) signal(empty);

}

int remover()

{

if (count==0) wait(empty); remove=remove_item; count=count-1;

if (count==N-1) signal(full);

}

count=0;

end monitor

void producer()

{

while (true)

{

item=produce_item;

ProducerConsumer.insert(item);

}

}

void consumer()

{

while (true)

{

item=ProducerConsumer.remove;

consume(item)

}

}

(9) 进程的高级通信机制有哪些?请简要说明。

解:进程的高级通信机制分为三大类:共享存储系统、消息传递系统和管道通信系统。

1. 共享存储器系统:在共享存储器系统中,相互通信的进程通过共享某些数据结构或共享存储区实现进程

之间的通信。该系统又可进一步细分为两种方式:基于共享数据结构的通信方式和基于共享存储区的通

信方式。

2. 消息传递系统:消息传递机制可以实现不同主机间多个CPU 上进程的通信。这种方式需要使用两条原语

send 和receive 来发送和接收格式化的消息(message)。

3. 管道通信系统:管道通信是一种以文件系统为基础实现的适用于在进程之间实现大量数据传送的通信方

式。

(10) 什么是死锁?产生死锁的原因和必要条件是什么?

解:所谓死锁是指在一个进程集合中的所有进程都在等待只能由该集合中的其它一个进程才能引发的事件而无限期地僵持下去的局面。

产生死锁的原因可以归结为两点:1)竞争资源,2)各进程之间的推进顺序不当。产生死锁的必要条件有四个:1)互斥条件,2)不剥夺条件,3)请求和保持条件,4) 环路条件。

(11) 死锁的预防策略有哪些?请简要说明。

解:

死锁的预防策略有三,说明如下:

1. 摒弃请求和保持条件:为摒弃请求和保持条件,系统中需要使用静态资源分配法,该方法规定每一个进程

在开始运行前都必须一次性地申请其在整个运行过程中所需的全部资源。此时,若系统有足够的资源,

就把进程需要的全部资源一次性地分配给它;若不能全部满足进程的资源请求,则一个资源也不分给

它,即使有部分资源处于空闲状态也不分配给该进程。这样,当一个进程申请某个资源时,它不能占

有其它任何资源,在进程运行过程中也不会再提出资源请求。这种方法破坏了请求和保持条件,从而避

免死锁的发生。

2. 摒弃不剥夺条件:要摒弃“不剥夺条件” ,可以使用如下策略:进程在需要资源时才提出请求,并且进

程是逐个地申请所需资源,如果一个进程已经拥有了部分资源,然后又申请另一个资源而不可得时,其

现有资源必须全部释放。在这种方法中,进程只能在获得其原有资源和所申请的新资源时才能继续执

行。

3.

摒弃环路等待条件:为确保环路等待条件不成立,

可以在系统中实行资源有序分配

策略,即系统中的所有资源按类型被赋予一个唯一的编号, 每个进程只能按编号的

升序申请资源。

(12)某系统中有A 、B 、C 、D 四类资源,且其总数量都是 8个。某时刻系统中有 5个进程, 判断下列资源状态是否安全?若进程 P 2申请资源(1,1,1,1),能否为其分配?

解:

现在对该时刻的状态进行安全分析:

由于Available 向量为(3,4,4,1),所以 Work 向量初始化为(3,4,4,1) 此时的Work 小于任意的

Need[i]向量,所以系统处于不安全状态

由于 Request2(1,1,1,1)

表所示:

然后进行安全性检测:

此时Available 向量为(2,3,3,0),所以 Work 向量初始化为(2,3,3,0),此时的 Work 小 于任意的Need[i]向量,所以系统处于不安全状态,所以不可以为

P2分配资源

(13)三个进程P1、P2、P3都需要5个同类资源才能正常执行直到终止,且这些进程只有在 需要设备时才申请,

则该系统中不会发生死锁的最小资源数量是多少?请说明理由。

解:

系统中不会发生死锁的最小资源数量是

13,这样可以保证当每一个进程都占有 4个资

源的时候,有一个进程可以获得最后一个资源后被运行, 运行完毕后释放资源, 于是其余进

程也能顺利运行完,所以不会死锁。

(14)在解决死锁问题的几个方法中,哪种方法最易于实现,哪种方法使资源的利用率最高? 解:

预防死锁这个方法实现简单,效果突出;避免死锁这种方法系统吞吐量和资源利用率较

m 个同类资源的系统,如果对于i=1,2,3,…,n,有Need[i]>0 m+n ,试

证明系统不会产生死锁。

解: 进程还需要的资源数量, Allocation[i] 表示第 i 个进程已经分配到的资源数量, Available 为系 统剩余的资源数,其中i=1,2,3,…,n 。

(15)考虑由n 个进程共享的具有

并且所有进程的最大需求量之和小于

本题中只有一种资源,不妨设 Max[i]为第i 个进程的资源总共需要量, Need[i]为第i 个

假设此系统可以发生死锁。

系统剩余的资源数量为Available(Available>=0 ),由假设,因为系统处于死锁状态,所

以Available 个资源无法分配出去,所以每个进程的Need[i] 都大于Available ,

即Need[i]>=Available+1

所以刀Need[i]>=n*(Available+1)=n*Available+n, ①因为剩下的资源数是Available,所以已经分配出去的资源数为m -Available;

即刀Allocatio n[i]=m -Available ②由①式和②式可以得到:

刀Need[i] + 刀Allocation[i]>=n*Available+n+ m -Available= (n-1) *Available+m+n ③

又因为n>=1,所以(n-1) >=0,又因为Available>=0,所以(n-1) *Available>=0 ④ 由③式和④式可以得到刀Need[i] +刀Allocati on [i]>=0+m+n=m+n ⑤根据题意知:刀Max[i]

死锁。

(16) 某车站售票厅,在任何时刻最多可以容纳20 名购票者进入,当售票厅中少于20 名购票者时,厅外的购票者可立即进入,否则需要在外面等待。若把一个购票者看作一个进程,请回答以下问题:

①用信号量管理这些并发进程时,应该怎样定义信号量,写出信号量的初值以及信号量的各取值的含义。

②根据所定义的信号量,写出相应的程序来保证进程能够正确地并发执行。

③如果购票者最多为n 个人,试写出信号量取值的可能变化范围(最大值和最小值)。解:

①定义信号量S,初值为20,当s > 0时,它表示可以继续进入购票厅的人数,当s = 0 时表示厅内已有20人正在购票,当s < 0时| s |表示正等待进入的人数。

②semaphore S=20;

begin parbegin procedure:begin repeat wait(s); Enter and buy ticket; signal(s); until false;

end parend end

③最大值为20,最小值为20-n

(17) 在测量控制系统中的数据采集任务时,把所采集的数据送往一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两个任务共享单缓冲区的同步算法。

解:

semaphore mutex = 1; semaphore full = 0; semaphore empty = 1; begin

parbegin collect:

begin repeat collect data in nextp; wait(empty); wait(mutex); buffer:=nextp; signal(mutex); signal(full); until false; end compute:

begin repeat wait(full); wait(mutex); nextc:=buffer; signal(mutex); signal(empty); compute data in nextc; until false; end parend end

(18) 桌上有一空盘,允许存放一只水果。爸爸可以向盘中放苹果,也可以向盘中放桔子, 儿子专等着吃盘中的桔子,

女儿专等着吃盘中的苹果。 规定当盘空时一次只能放一只水果供 吃者用,请用信号量实现爸爸、儿子和女儿 3 个并发进程的同步。

解:

(19) 设某系统中有 3个进程Get 、Process 和Put ,共用两个缓冲区 bufferl 和buffer2。假设 buffer1 中最多可以放 11 个信息,现在已经放入了两个信息; buffer2 最多可以放 5个信息。

本题中应设置三个信号量 S 、S o 、S a ,信号量S 表示盘中是否为空,其初值为 1; S o 表

示盘中是否有桔子,其初值为 0; S a 表示盘中是否有苹果,其初值为

0。同步描述如下:

爸爸 : P(S);

将水果放入盘中

儿子: P(S o ); 从盘子中取出桔子

女儿: P(S a );

从盘子中取出苹果

if (放入的是桔子 ) v(S o ); V (S ); V (S );

else v(S a );

吃桔子 吃苹果;

Get进程负责不断地将输入信息送入bufferl中,Process进程负责从bufferl中取出信息进行

处理,并将处理结果送到buffer2中,Put进程负责从buffer2中读取结果并输出。试用信号

量机制实现它们的同步与互斥。

解:

semap hore empt y仁9; //bufferl 空的数量

sem aphore full 仁2; //bufferl 满的数量

semaphore empty2=5; //buffer2 空的数量semap hore full2=0; 〃buffer2 满的数量

in 1,in2,out1,out2:integer := 2,0,1,0;

Get(){

while(1){

wait(empty1)

in 1=(i n1+1)mod11

sig nal(full1)

}

}

Process () { while(1){ wait(full1) out仁(out1+1)mod11 sig nal(empty1) sig nal(empty2) in 2=(i n2+1)mod5 sig nal(full2)

}

}

Put(){

while(1){

wait(full2)

out2=(out2+1)mod5

sig nal(empty2)

}

}

(20) 某寺庙有大、小和尚若干,另有一水缸。由小和尚挑水入缸供大和尚饮用。水缸可以

容10桶水,水取自同一井。水井很窄,每次只能容一个水桶取水。水桶总数为3。每次入、

取缸水仅为1桶,且不可同时进行。试给出取水、入水的同步算法。

解:

semaphore well=1; //保证互斥地访问水井的信号量

semaphore vat=1; //保证互斥地访问水缸的信- 号量

semaphore empty=10; //表示水缸中剩余的空间能容纳的水的桶数

semaphore full=0; // 表示水缸中水的桶数semaphore pail=3; // 保证互斥地访问临界资源水桶的信号量// 大和尚进程big_monk(){

while(1){ wait(full); wait(pail); wait(vat); use pail to get water from vat signal(vat);

signal(empty); drink water in the pail signal(pail);

}

}

// 小和尚进程little_monk(){

while(1){ wait(empty);\ wait(pail); wait(well); use pail to get water from well signal(well);

wait(vat);

第3章死锁习题及答案

第三章死锁习题 一、填空题 1.进程的“同步”和“互斥”反映了进程间①和②的关系。 【答案】①直接制约、②间接制约 【解析】进程的同步是指在异步环境下的并发进程因直接制约而互相发送消息,进行相互合作、相互等待,使得各进程按一定的速度执行的过程;而进程的互斥是由并发进程同时共享公有资源而造成的对并发进程执行速度的间接制约。 2.死锁产生的原因是①和②。 【答案】①系统资源不足、②进程推进路径非法 【解析】死锁产生的根本原因是系统的资源不足而引发了并发进程之间的资源竞争。由于资源总是有限的,我们不可能为所有要求资源的进程无限地提供资源。而另一个原因是操作系统应用的动态分配系统各种资源的策略不当,造成并发进程联合推进的路径进入进程相互封锁的危险区。所以,采用适当的资源分配算法,来达到消除死锁的目的是操作系统主要研究的课题之一。 3.产生死锁的四个必要条件是①、②、③、④。 【答案】①互斥条件、②非抢占条件、③占有且等待资源条件、④循环等待条件 【解析】 互斥条件:进程对它所需的资源进行排它性控制,即在一段时间内,某资源为一进程所独占。 非抢占条件:进程所获得的资源在未使用完毕之前,不能被其它进程强行夺走,即只能由获得资源的进程自己释放。 占有且等待资源条件:进程每次申请它所需的一部分资源,在等待新资源的同时,继续占有已分配到的资源, 循环等待条件:存在一进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。 4.在操作系统中,信号量是表示①的物理实体,它是一个与②有关的整型变量,其值仅能由③原语来改变。 【答案】①资源,②队列,③P-V 【解析】信号量的概念和P-V原语是荷兰科学家E.W.Dijkstra提出来的。信号量是一个特殊的整型量,它与一个初始状态为空的队列相联系。信号量代表了资源的实体,操作系统利用它的状态对并发进程共享资源进行管理。信号量的值只能由P-V原语来改变。 5.每执行一次P原语,信号量的数值S减1。如果S>=0,该进程①;若S<0,则②该进程,并把它插入该③对应的④队列中。 【答案】①继续执行,②阻塞(等待),③信号量,④阻塞(等待) 【解析】从物理概念上讲,S>0时的数值表示某类资源可用的数量。执行一次P原语,意味着请求分配一个单位的资源,因此描述为S=S-1。当S<0时,表示已无资源,这时请求资源的进程将被阻塞,把它排在信号量S的等待队列中。此时,S的绝对值等于信号量队列上的阻塞的进程数目。 6.每执行一次V原语,信号量的数值S加1。如果①,Q进程继续执行;如果S<=0,则从对应的②队列中移出一个进程R,该进程状态变为③。 【答案】①S>0,②等待,③就绪 【解析】执行一次V原语,意味着释放一个单位的资源。因此,描述为S=S+1。当S<0时,表示信号量请求队列中仍然有因请求该资源而被阻塞的进程。因此,应将信号量对应的阻塞队列中的第一个进程唤醒,使之转至就绪队列。 7.利用信号量实现进程的①,应为临界区设置一个信号量mutex。其初值为②,表示该资源尚未使用,临界区应置于③和④原语之间。

操作系统第3章练习题

第3章处理机调度与死锁 3.1 典型例题解析 【例1】(1)3个进程共享4个同种类型的资源,每个进程最大需要2个资源,请问系统是否会因为竞争该资源而死锁?(2)n个进程共享m个同类资源,若每个进程都需要用该类资源,而且各进程对该类资源的最大需求量之和小于m+n。说明该系统不会因竞争该类资源而阻塞。(3)在(2)中,如果没有“每个进程都需要用该类资源”的限制,情况又会如何?(西北工业大学2000年考题) 答:(1)该系统不会因为竞争该类资源而死锁。因为,必有一个进程可获得2个资源,故能顺利完成,并释放出其所占用的2个资源给其他进程使用,使它们也顺利完成。 (2)用Max(i)表示第i个进程的最大资源需求量,need(i)表示第i个进程还需要的资源量,alloc(i)表示第i个进程已分配的资源量。由题中所给条件可知: need(i)>0(对所有的i) max(1)+…max(i)+…+max(n)

进程调度与死锁部分练习题

第三章进程调度与死锁练习题 (一)单项选择题 1.为了根据进程的紧迫性做进程调度,应采用(B )。 A.先来先服务调度算法 B. 优先数调度算法 C.时间片轮转调度法 D.分级调度算法 2.采用时间片轮转法调度是为了( A)。 A.多个终端都能得到系统的及时响应 B.先来先服务 C. 优先数高的进程先使用处理器 D.紧急事件优先处理 3.采用优先数调度算法时,对那些具有相同优先数的进程再按( A )的次序分配处理器。 A 先来先服务 B. 时间片轮转 C. 运行时间长短 D.使用外围设备多少 4. 当一进程运行时,系统强行将其撤下,让另一个更高优先数的进程占用处理器,这种调度方式是( B )。 A. 非抢占方式 B.抢占方式 C. 中断方式 D.查询方式 5.( B)必定会引起进程切换。 A.一个进程被创建后进入就绪态 B.一个进程从运行态变成阻塞态 C.一个进程从阻塞态变成就绪态 6.( B)只考虑用户估计的计算机时间,可能使计算时间长的作业等待太久。 A.先来先服务算法 B.计算时间短的作业优先算法 C.响应比最高者优先算法 D.优先数算法 7.先来先服务算法以( A )去选作业,可能会使计算时间短的作业等待时间过长。A.进入的先后次序 B.计算时间的长短 C.响应比的高低 D.优先数的大小8.可以证明,采用( C )能使平均等待时间最小。 A.优先数调度算法 B.均衡调度算法 C.计算时间短的作业优先算法 D.响应比最高者优先算法

9.在进行作业调度时.要想兼顾作业等待时间和计算时间,应选取(D )。 A均衡调度算法 B.优先数调度算法 C.先来先服务算法 D.响应比最高者优先算法 10.作业调度算法提到的响应比是指( B )。 A.作业计算时间与等待时间之比 B.作业等待时间与计算时间之比 C.系统调度时间与作业等待时间之比 D.作业等待时间与系统调度时间之比 11.作业调度选择一个作业装入主存后,该作业能否占用处理器必须由( D )来决定。 A.设备管理 B.作业控制 C.驱动调度 D.进程调度 12.系统出现死锁的根本原因是( D )。 A.作业调度不当 B.系统中进程太多 C.资源的独占性 D.资源竞争和进程推进顺序都不得当 13.死锁的防止是根据( C )采取措施实现的。 A.配置足够的系统资源 B.使进程的推进顺序合理 C.破坏产生死锁的四个必要条件之一 D.防止系统进入不安全状态 14.采用按序分配资源的策略可以防止死锁.这是利用了使( B)条件不成立。 A.互斥使用资源 B.循环等待资源 C.不可抢夺资源 D.占有并等待资源 15.可抢夺的资源分配策略可预防死锁,但它只适用于(D )。 A.打印机 B.磁带机 C.绘图仪 D.主存空间和处理器 16.进程调度算法中的( A )属于抢夺式的分配处理器的策略。 A.时间片轮转算法 B.非抢占式优先数算法 C.先来先服务算法 D.分级调度算法 17.用银行家算法避免死锁时,检测到(C )时才分配资源。 A.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量

第2章 调度与死锁自测题

4.4 调度与死锁自测题 4.4.1 基本题 一、判断题(正确的在括号中记√,错误的记×) 1.死锁就是循环等待。 ( ) 2.最适合分时系统的进程调度算法是优先数法。() 3.不存在只涉及一个进程的死锁。 ( ) 4. 在分时系统中当用户数一定时,影响响应时间的主要因素是调度算法。( ) 5.若系统中每一资源类只有一个,只要系统存在任何环路,系统状态就是不安全的。 ( ) 6.多级反馈调度算法属于抢占调度方式。() 7.死锁是多个进程为竞争系统资源或彼此间通信而引起的一种临时性的阻塞现象。 ( ) 8.在引入线程的系统中进程程调度负责CPU的分配工作。() 9.当进程数大于资源数时,进程竞争资源一定会产生死锁。() 10.实时调度的关键是保证满足实时任务对截止时间的要求。() 1. Χ 2. Χ 3.√ 4. Χ 5.√ 6. √ 7. Χ 8. Χ 9. Χ 10. √ 二、选择题 1.在三种基本类型的操作系统中,都设置了进程调度,在批处理系统中还应设置______调度。 A.作业 B.进程 C.中级 D.多处理机 2.下列算法中,_______只能采用非抢占调度方式。 A.高优先权优先法 B.时间片轮转法 C.FCFS调度算法 D.短作业优先算法 3.下面关于优先权大小的论述中,正确的论述是_____________。 A.计算型作业的优先权,应高于I/O型作业的优先权。 B.用户进程的优先权,应高于系统进程的优先权。 C.资源要求多的作业,其优先权应高于资源要求少的作业。 D.在动态优先权时,随着进程执行时间的增加,其优先权降低。 4.最适合分时系统的进程调度算法是______。 A、FCFS B、SSJF C、优先数法 D、轮转法 5.在分时系统中当用户数一定时,影响响应时间的主要因素是_____。 A、时间片 B、调度算法 C、存储分配方式 D、作业的大小 6.采用“按序分配”策略,可以破坏死锁产生的条件是______。 A、互斥 B、请求和保持 C、非剥夺 D、环路等待 7.下述解决死锁的方法中,属于死锁预防策略的是____________。 A.银行家算法 B.资源有序分配法 C.资源分配图化简法 D.撤消进程法 8.从下面关于安全状态和非安全状态的论述中,正确的论述是________。 A.安全状态是没有死锁的状态,非去全状态是有死锁的状态。 B.安全状态是可能有死锁的状态,非安全状态也是可能有死锁的状态。 C.安全状态是可能没有死锁的状态,非安全状态是有死锁的状态。 D.安全状态是没有死锁的状态,非安全状态是可能有死锁的状态。 9.关于产生死锁的现象,下面的描述最准确是__________。 A.每个进程共享某一个资源 B.每个进程竞争某一个资源 C.每个进程等待着某一个不能得到且不可释放的资源

《操作系统原理》5资源管理(死锁)习题

第五章死锁练习题 (一)单项选择题 1.系统出现死锁的根本原因是( )。 A.作业调度不当B.系统中进程太多C.资源的独占性D.资源管理和进程推进顺序都不得当 2.死锁的防止是根据( )采取措施实现的。 A.配置足够的系统资源B.使进程的推进顺序合理 C.破坏产生死锁的四个必要条件之一D.防止系统进入不安全状态 3.采用按序分配资源的策略可以防止死锁.这是利用了使( )条件不成立。 A.互斥使用资源B循环等待资源C.不可抢夺资源D.占有并等待资源 4.可抢夺的资源分配策略可预防死锁,但它只适用于( )。 A.打印机B.磁带机C.绘图仪D.主存空间和处理器 5.进程调度算法中的( )属于抢夺式的分配处理器的策略。 A.时间片轮转算法B.非抢占式优先数算法C.先来先服务算法D.分级调度算法 6.用银行家算法避免死锁时,检测到( )时才分配资源。 A.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量 C.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需的最大资源量 D进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需的最大资源量 7.实际的操作系统要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用( )策略。 A死锁的防止B.死锁的避免C.死锁的检测D.死锁的防止、避免和检测的混合 (二)填空题 1.若系统中存在一种进程,它们中的每一个进程都占有了某种资源而又都在等待其中另一个进程所占用的资源。这种等待永远不能结束,则说明出现了______。 2.如果操作系统对______或没有顾及进程______可能出现的情况,则就可能形成死锁。 3.系统出现死锁的四个必要条件是:互斥使用资源,______,不可抢夺资源和______。 4.如果进程申请一个某类资源时,可以把该类资源中的任意一个空闲资源分配给进程,则说该类资源中的所有资源是______。 5.如果资源分配图中无环路,则系统中______发生。 6.为了防止死锁的发生,只要采用分配策略使四个必要条件中的______。 7.使占有并等待资源的条件不成立而防止死锁常用两种方法:______和______. 8静态分配资源也称______,要求每—个进程在______就申请它需要的全部资源。 9.释放已占资源的分配策略是仅当进程______时才允许它去申请资源。 10.抢夺式分配资源约定,如果一个进程已经占有了某些资源又要申请新资源,而新资源不能满足必须等待时、系统可以______该进程已占有的资源。 11.目前抢夺式的分配策略只适用于______和______。 12.对资源采用______的策略可以使循环等待资源的条件不成立。 13.如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于______。14.只要能保持系统处于安全状态就可______的发生。 15.______是一种古典的安全状态测试方法。 16.要实现______,只要当进程提出资源申请时,系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。

计算机操作系统习题答案

计算机操作系统习题答 案 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

第一章操作系统概论 1.单项选择题 ⑴ B; ⑵ B; ⑶ C; ⑷ B; ⑸ C; ⑹ B; ⑺ B;⑻ D;⑼ A;⑽ B; 2.填空题 ⑴操作系统是计算机系统中的一个最基本的系统软件,它管理和控制计算机系统中的各种系统资源; ⑵如果一个操作系统兼有批处理、分时和实时操作系统三者或其中两者的功能,这样的操作系统称为多功能(元)操作系统; ⑶没有配置任何软件的计算机称为裸机; ⑷在主机控制下进行的输入/输出操作称为联机操作; ⑸如果操作系统具有很强交互性,可同时供多个用户使用,系统响应比较及时,则属于分时操作系统类型;如果OS可靠,响应及时但仅有简单的交互能力,则属于实时操作系统类型;如果OS在用户递交作业后,不提供交互能力,它所追求的是计算机资源的高利用率,大吞吐量和作业流程的自动化,则属于批处理操作系统类型; ⑹操作系统的基本特征是:并发、共享、虚拟和不确定性; ⑺实时操作系统按应用的不同分为过程控制和信息处理两种; ⑻在单处理机系统中,多道程序运行的特点是多道、宏观上并行和微观上串行。 第二章进程与线程 1.单项选择题

⑴ B;⑵ B;⑶ A C B D; ⑷ C; ⑸ C; ⑹ D; ⑺ C; ⑻ A; ⑼ C; ⑽ B; ⑾ D; ⑿ A; ⒀ D; ⒁ C; ⒂ A; 2.填空题 ⑴进程的基本状态有执行、就绪和等待(睡眠、阻塞); ⑵进程的基本特征是动态性、并发性、独立性、异步性及结构性; ⑶进程由控制块(PCB)、程序、数据三部分组成,其中PCB是进程存在的唯一标志。而程序部分也可以为其他进程共享; ⑷进程是一个程序对某个数据集的一次执行; ⑸程序并发执行与顺序执行时相比产生了一些新特征,分别是间断性、失去封闭性和不可再现性; ⑹设系统中有n(n>2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况: ①没有运行进程,有2个就绪进程,n个进程处于等待状态; ②有一个运行进程,没有就绪进程,n-1个进程处于等待状态; ③有1个运行进程,有1个等待进程,n-2个进程处于等待状态; ④有1个运行进程,n-1个就绪进程,没有进程处于等待状态; 上述情况中不可能发生的情况是①; ⑺在操作系统中引入线程的主要目的是进一步开发和利用程序内部的并行性; ⑻在一个单处理系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有4个,最少0个;

第三章处理机调度与死锁 (2)

考点一调度的基本概念和基本准则 一、单项选择题 1.假设就绪队列中有10个进程,系统将时间片设为200ms,CPU进行进程切换要花费10ms。则系统开销所占的比率约为()。 A.1% B.5% C.10% D.20% 2.下面关于进程的叙述不正确的是()。 A.进程申请CPU得不到满足时,其状态变为就绪状态 B.在单CUP系统中,任一时刻有一个进程处于运行状态 C.优先级是进行进程调度的重要证据,一旦确定不能改变 D.进程获得处理机而运行的是通过调度实现的 二、综合应用题 1.分析调度的三种形式:短期调度、中期调度和长期调度的差别。 2.引起进程调度的原因有哪些? 3.高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 4.选择调度方式和调度算法时,应遵循的准则是什么? 5.下列问题应由哪一些调度程序负责? (1)发生时间片中断后,决定将处理机分给哪一个就绪进程? (2)在短期繁重负荷情况下,应将哪个进程挂起? (3)一个作业运行结束后,从后备作业队列中选具备能够装入内存的作业。 6.CPU调度算法决定了进程执行的顺序。若有n 个进程需要调度,有多少种可能的调度算法顺序? 7.有些系统如MS-DOS没有提供并发处理手段。引入并发处理会导致操作系统设计的复杂性。试分析引入并发处理后导致的操作系统设计的三个主要的复杂性。 8.说明抢占式调度与非抢占式调度的区别。为什么说计算中心不适合采用非抢占式调度? 考点二典型调度算法 一、单项选择题 1.以下哪一种说法对剥夺式系统来讲结论正确()。 A.若系统采用轮转法调度进程,则系统采用的是剥夺式调度。 B.若现行进程要等待某一事件时引起调度,则该系统是剥夺式调度。 C.实时系统通常采用剥夺式调度。 D.在剥夺式系统中,进程的周转时间较之非剥夺式系统可预见。 2.既考虑作业的等待时间又考虑作业的执行时间的调度算法是()。 A.相应比高者优先 B.端作业优先 C.优先级调度 D.先来先服务 3.关于作业优先权大小的论述中,正确的论述是()。 A.计算型作业的优先级,应高于I/O型作业的优先权。 B.用户进程的优先权,应高于系统进程的优先权。 C.长作业的优先权,应高于短作业的优先权。 D.资源要求多的作业,其优先权应高于资源要求少的作业。 E.在动态优先权中,随着作业等待时间的增加,其优先权将随之下降。 F.在动态优先权中,随着进程执行时间的增加,其优先权降低。 二、综合应用题 1.设有一组进程,它们需要占用CPU的时间及优先级如下所示:

死锁进程实验报告

死锁进程实验报告 一、实验目的: 观察死锁发生的现象,了解死锁发生的原因。掌握如何判断死锁发生的方法。二、实验分析: 死锁现象是操作系统各个进程竞争系统中有限的资源引起的。如果随机给进程分配资源,就可能发生死锁, 因此就应有办法检测死锁的发生。本次实验中采用“银行家算法”判断死锁的发生。 三、实验设计: 本实验设计一个3个并发进程共享3种系统资源且每种系统资源有10个的系统。系统能显示各种进程的进展情况以及检察是否有错误和死锁现象产生。 四、算法说明: “银行家算法”。按每个进程的申请数量给各个进程试探性分配资源,看能否找个一个序列使各个进程都能正常运行结束。若能,则不会发生死锁;若不能,则会发生死锁。 五、程序使用说明: 一、本程序用于检测错误和是否会发生死锁。系统有3个进程竞争3种系统资源,每种资源有10个。 二、输入各个进程的最大需求资源数目数组max[3]和已经得到的资源数目组 [3],系统计算出各个进程还应申请的资源数目数组need[3]。 三、若进程最大需求数大于系统资源数(10),则出错;若进程申请的资源数目大于其需要的最大资源数目,则出错。 /*死锁实验源程序*/ include

include typedef struct { int state; int max[3]; int alloc[3]; int need[3]; }Pc; int whefinish(Pc *p) { if((p[0].state&&p[1].state&&p[2].state)==1) return 1; else return 0; } inpalloc(Pc *P,int *q1,int *q2) { int m,n; for(m=0;m<3;m++) for(n=0;n<3;n++) {

操作系统调度与死锁理论题答案

第三章处理机调度与死锁 1.高级调度与低级调度的主要任务是什么为什么要引入中级调度 (1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。(2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU。 (3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。 2. 处理机调度算法的共同目标是什么批处理系统的调度目标又是什么 共同目标:资源利用率,公平性,平衡性,策略强制执行。 批处理系统的调度目标:平均周转时间短,系统吞吐量高,处理机利用率高。 6.为什么要引入高响应比优先调度算法它有何优点 在批处理系统中,FCFS算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而SJF算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而

改善了处理机调度的性能。 7.试说明低级调度的主要功能。 保存处理机的现场信息、按某种算法选取进程、把处理机分配给进程。 12.试比较FCFS和SJF两种进程调度算法。 相同点:两种调度算法都可用于作业调度与进程调度 不同点:FCFS调度算法每次都从后备队列中选择一个或多个最先进入该队列的作业,将它们调入内存、分配资源、创建进程、插入到就绪队列。该算法有利于长作业/进程,不利于短作业/进程。 SJF算法每次调度都从后备队列中选择一个或若干个运行时间最短的作业,调入内存中运行。该算法有利于短作业/进程,不利于长作业/进程。 13.在时间片轮转法中,应如何确定时间片的大小 时间片应略大于一次典型的交互需要的时间。一般因考虑三个因素:系统对相应时间的要求、就绪队列中进程的数目和系统的处理能力。 20.按调度方式可将实时调度算法分为哪几种 非抢占式和抢占式。非抢占式又分为非抢占式轮转调度算法和非抢占式优先调度算法,抢占式又分为基于时钟中断的抢占式优先级调度算法和立即抢占的优先级调度算法。

李建伟版实用操作系统第二版最新习题 3 进程同步与通信

李建伟版实用操作系统第二版最新习题 3 进程同步与通信 一、选择题 题号1 2 3 4 5 6 7 8 9 10 答案A D D C B C A B A A 题号11 12 答案D C 二、综合题 1、答:临界资源也称独占资源、互斥资源,它是指某段时间内只充许一个进程使用的资源。比如打印机等硬件资源,以及只能互斥使用的变量、表格、队列等软件资源。各个进程中访问临界资源的、必须互斥执行的程序代码段称为临界区,各进程中访问同一临界资源的程序代码段必须互斥执行。 为防止两个进程同时进入临界区,可采用软件解决方法或同步机构来协调它们。但是,不论是软件算法还是同步机构都应遵循下述准则: ①空闲让进。②忙则等待。③有限等待。④让权等待。 2、答:忙等待意味着一个进程正在等待满足一个没有闲置处理器的严格循环的条件。因为只有一个CPU 为多个进程服务,因此这种等待浪费了CPU 的时钟。 其他类型的等待:与忙等待需要占用处理器不同,另外一种等待则允许放弃处理器。如进程阻塞自己并且等待在合适的时间被唤醒。忙等可以采用更为有效的办法来避免。例如:执行请求(类似于中断)机制以及PV 信号量机制,均可避免“忙等待”现象的发生。 3、答: 在生产者—消费者问题中,Producer 进程中P(empty)和P(mutex)互换先后次序。先 执行P(mutex),假设成功,生产者进程获得对缓冲区的访问权,但如果此时缓冲池已满,没有空缓冲区可供其使用,后续的P(empty)原语没有通过,Producer 阻塞在信号量empty 上,而此时mutex 已被改为0,没有恢复成初值1。切换到消费者进程后,Consumer 进程执行P(full)成功,但其执行P(mutex)时由于Producer 正在访问缓冲区,所以不成功,阻塞在信号量mutex 上。生产者进程和消费者进程两者均无法继续执行,相互等待对方释放资源,会产生死锁。 在生产者和消费者进程中,V 操作的次序无关紧要,不会出现死锁现象。 4、答:

第三章习题(处理机调度与死锁)

一、单项选择题 1.在为多道程序所提供的可共享的系统资源不足时,可能出现死锁。但是,不适当的 c 也可能产生死锁。 A.进程优先权 B.资源的线性分配 C.进程推进顺序 D. 分配队列优先权 2.采用资源剥夺法可解除死锁,还可以采用 b 方法解除死锁。 A.执行并行操作 B.撤消进程 C.拒绝分配新资源 D.修改信号量 3.产生死锁的四个必要条件是:互斥、 b 、循环等待和不剥夺。 A. 请求与阻塞 B.请求与保持 C. 请求与释放 D.释放与阻塞 4.发生死锁的必要条件有四个,要防止死锁的发生,可以破坏这四个必要条件,但破坏 a 条件是不太实际的。 A. 互斥 B.不可抢占 C. 部分分配 D.循环等待 5.在分时操作系统中,进程调度经常采用 c 算法。 A.先来先服务 B.最高优先权 C.时间片轮转 D.随机 6.资源的按序分配策略可以破坏 D 条件。 A. 互斥使用资源 B.占有且等待资源 C.非抢夺资源 D. 循环等待资源 7.在 C 的情况下,系统出现死锁。 A. 计算机系统发生了重大故障 B.有多个封锁的进程同时存在 C.若干进程因竞争资源而无休止地相互等待他方释放已占有的资源 D.资源数大大小于进程数或进程同时申请的资源数大大超过资源总数 8.银行家算法是一种 B 算法。 A.死锁解除 B.死锁避免 C.死锁预防 D. 死锁检测 9.当进程数大于资源数时,进程竞争资源 B 会产生死锁。 A.一定 B.不一定 10. B 优先权是在创建进程时确定的,确定之后在整个进程运行期间不再改变。 A.先来先服务 B.静态 C.动态 D.短作业 11. 某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是 B A.9 B.10 C.11 D.12 答:B 13.当检测出发生死锁时,可以通过撤消一个进程解除死锁。上述描述是 B 。 A. 正确的 B.错误的 14.在下列解决死锁的方法中,属于死锁预防策略的是 B 。 A. 银行家算法 B. 资源有序分配法 C.死锁检测法 D.资源分配图化简法 15.以下叙述中正确的是 B 。 A. 调度原语主要是按照一定的算法,从阻塞队列中选择一个进程,将处理机分配 给它。 B.预防死锁的发生可以通过破坏产生死锁的四个必要条件之一来实现,但破坏互斥条件的可能性不大。 C.进程进入临界区时要执行开锁原语。 D.既考虑作业等待时间,又考虑作业执行时间的调度算法是先来先服务算法。

进程同步与互斥练习

进程同步与互斥 练习题 选择题 .任何两个并发进程之间存在着()地关系. .各自完全独立 .拥有共享变量 .必须互斥 .可能相互制约文档收集自网络,仅用于个人学习 .并发进程执行地相对速度是(). .由进程地程序结构决定地 .由进程自己来控制地 .在进程被创建时确定地 .与进程调度策略有关地文档收集自网络,仅用于个人学习 .并发进程执行时可能会出现“与时间有关地错误”,这种错误是由于并发进程()引起地. .使用共享资源 .执行地顺序性 .要求计算时间地长短 .程序地长度文档收集自网络,仅用于个人学习 .并发进程中与共享变量有关地程序段称为(). .共享子程序 .临界区 .管理区 .公共数据区文档收集自网络,仅用于个人学习 .用来实现进程同步与互斥地操作实际上是由()过程组成地. .一个可被中断地 .一个不可被中断地 .两个可被中断地 . 两个不可被中断地文档收集自网络,仅用于个人学习 .进程从运行态变为等待态可能由于(). .执行了操作 .执行了操作 .时间片用完 .有高优先级进程就绪文档收集自网络,仅用于个人学习 .用操作管理互斥使用地资源时,信号量地初值应定义为(). .任意正整数 . . .文档收集自网络,仅用于个人学习 .用、操作管理临界区时,互斥信号量地初值应定义为( ). .任意值 . . . .现有个具有相关临界区地并发进程,如果某进程调用操作后变为等待状态,则调用操作时

信号量地值必定为(). .≤ . . .文档收集自网络,仅用于个人学习 .用操作管理临界区时把信号量地初值定义为,现已有一个进程在临界区,但有个进程在等待进人临界区,这时信号量地值为(). . . . .文档收集自网络,仅用于个人学习 .用操作唤醒一个等待进程时,被唤醒进程地状态应变成()状态. .执行 .就绪 .运行 .收容文档收集自网络,仅用于个人学习 .进程间地同步是指进程间在逻辑上地相互( )关系. .联接.制约文档收集自网络,仅用于个人学习 .继续.调用 多项选择题 .有关并发进程地下列叙述中,()是正确地. .任何时刻允许多个进程在同一上运行 .进程执行地速度完全由进程自己控制 .并发进程在访问共享资源时可能出现与时间有关地错误 .同步是指并发进程中存在地一种制约关系 .各自独立地并发进程在执行时不会相互影响文档收集自网络,仅用于个人学习.一个正在运行地进程调用()后,若地值为(),则该进程可以继续运行. .> .< .≠ .≥ .≤ 文档收集自网络,仅用于个人学习 判断题 .有交往地并发进程一定共享某些资源. () .如果不能控制并发进程执行地相对速度,则它们在共享资源时一定会出现与时间有关地错误. () .并发进程地执行结果只取决于进程本身,不受外界影响. () .多道程序设计必然导致进程地并发执行. () 有个进程共享同一临界资源,若使用信号量机制实现对资源地互斥访问,则信号量值地变化范围是. 文档收集自网络,仅用于个人学习 对于两个并发进程,设互斥信号量为,若,则 表示没有进程进入临界区表示有一个进程进入临界区 表示有一个进程进入临界区,另一个进程等待进入 表示有两个进程进入临界区

处理机调度与死锁作业题

第三章处理机调度与死锁作业 一、判断题 1、先来先服务(FCFS)算法是一种简单的调度算法,但其效率比较高。(错) 2、FCFS调度算法对短作业有利。(错) 3、时间片的大小对轮转法(RR)的性能有很大的影响,时间片太短,会导致系统开销大大增加。(对) 二、选择题 1、在进行作业调度时,要想兼顾作业等待时间和作业执行时间,应选取(C)。 A.轮转法 B.先进先出调度算法 C.响应比高优先算法 D.短作业优先调度 2、若系统中有五台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许(D)个进程参于竞争,而不会发生死锁。 A、5 B、2 C、3 D、4 解析:由于系统资源总共只有5台,若有5个进程参与竞争,每个进程在拥有一台打印机后,由于都需要两台打印机,所有进程都不能向前推进,假设又都不愿意放弃已申请到的打印机,系统便进入死锁状态,若有4个进程参与竞争,每个进程拥有一台打印机后,任意一个进程在获得剩余的一台打印机后就可以运行,在该进程运行完后,释放拥有的两台打印机,其他3个进程就可以顺利推进,完成各自任务。 3、在进程资源图中( C )是发生死锁的必要条件。 A.互斥 B.可剥夺件 C.环路 D.同步 三、填空题 1、在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,计算时间短的作业将得到优先调度;当各个作业要求运行的时间相同时,等待时间长的作业得到优先调度。 2、分时系统采用的调度方法是时间片轮转调度算法。在分时系统中,当用户数目为100时,为保证响应时间不超过2秒,此时时间片最大应为20ms。 3、有三个同时到达的作业J1,J2和J3,它们的执行时间分别是T1,T2和T3,且T1

进程调度、死锁

进程调度、死锁 试验一:进程调度 一、实验目的 进程是操作系统中最基本、最重要的概念,进程调度又是操作系统的核心模块。本实验要求学生独立地用 C 或 C++语言编写一个简单的进程管理程序,其主要部分是进程调度。调度算法可由学生自行选择,如基于动态优先级的调度算法或多级反馈队列调度算法。 通过本实验可加深学生对进程各种状态的转化和各种调度算法的理解,提高系统程序设计能力。 二、实验题目 以链式结构组成空闲 PCB 栈,以双向链式结构组成进程的就绪队列和睡眠队列,模拟UNIX 的进程管理程序,实现以下操作(可用键盘命令或由产生的随机数决定操作和参数)。 1( 创建一个新进程:如 pid=newp(pri,size,time),申请空闲 PCB 和所需内存, 填写 PCB的各项初始数据,将该 PCB 送入就绪队列。 2( 调度和执行:自己设计优先调度算法,在就绪队列中选择一个优先级最高的进程,使其运行若干个单位时间。要求在运行期间进程的 p_cpu、p_pri 和 p_time 要变化,并在适当的时机重新调度。 3( 进程睡眠:进程运行时可调用自编的睡眠函数,主动进入睡眠状态,并转调度程序。也可由操作使进程强迫挂起,睡眠适当时间。进程睡眠时要在 PCB 中记录睡眠原因和优先数。 4( 进程的唤醒:根据睡眠原因,将相应的进程从睡眠队列中调出,转入就绪

队列。如该进程优先级比现运行进程优先级高,转调度程序。 5( 进程的终止:如一个进程运行完作业所需的时间,或者用操作杀死该进程,该进程就终止,释放所占用的内存和 PCB 资源,转调度程序。 三、设计思路和流程图 1、设计思路 将程序主要分为两部分:排序、分派。排队:事先将系统中所有就绪的进程按照一定的方式排成一个队列;分派:把由所选定的进程,从就绪队列取出该进程,然后上下文切换。 2、流程图 开始 输入进程 对进程排序 选择运行时间最短的进程 否运行完毕 是 结束 四、主要数据结构及其说明 float arrivetime 到达时间 float servicetime 运行时间 float starttime 开始时间 float finishtime 完成时间 五、源程序并附上注释 //最短进程优先调度算法、 #include #include #include using namespace std;

操作系统考研资料:第四章 处理机调度学习指导材料

第四章处理机调度与死锁 4.1 知识点汇总 1、处理机调度级别 ⑴调度:选出待分派的作业或进程 ⑵处理机调度:分配处理机 ⑶三级调度:高级调度(作业调度)、中级调度(内存对换)、低级调度(进程调度) 2、作业状态 ⑴作业状态分为四种:提交、后备、执行和完成。 ⑵作业状态变迁图: 图4-1 作业状态及变迁 1

3、作业调度和调度的功能 ⑴. 作业调度的任务 后备状态→执行状态执行状态→完成状态 ⑵作业调度的功能 ①记录系统中各个作业的情况 ②按照某种调度算法从后备作业队列中挑选作业 ③为选中的作业分配内存和外设等资源 ④为选中的作业建立相应的进程 ⑤作业结束后进行善后处理工作 4、进程调度和调度的功能 1). 进程调度:后备状态→执行状态 2). 进程调度时机:任务完成后、等待资源时、运行到时了、发现重调标志 3). 进程调度的功能:保存现场、挑选进程、恢复现场 5、两级调度模型作业调度和进程调度的区别 2

6、评价调度算法的指标 调度性能评价准则:CPU利用率、吞吐量、周转时间、就绪等待时间和响应时间 (1)吞吐量:单位时间内CPU完成作业的数量 (2)周转时间: 1) 周转时间=完成时刻-提交时刻 2) 平均周转时间=周转时间/n 3) 带权周转时间=周转时间/实际运行时间 4) 平均带权周转时间=带权周转时间/n 7、作业与进程调度算法 (1)先来先服务(FCFS) 调度算法的实现思想:按作业(进程)到来的先后次序进行调度,即先来的先得到运行。用于作业调度:从作业对列(按时间先后为序)中选择队头的一个或几个作业运行。用于 3

进程调度:从就绪队列中选择一个最先进入该队列的进程投入运行。例如设有三个作业,编号为1,2,3。各作业分别对应一个进程。各作业依次到达,相差一个时间单位。 ①图示出采用FCFS方式调度时这三个作业的执行顺序 ②算出各作业的周转时间和带权周转时间 (2)时间片轮转(RR) 4

进程同步及死锁之欧阳光明创编

附件(四) 欧阳光明(2021.03.07) 深圳大学实验报告课程名称:操作系统 实验项目名称:进程(线程)同步及死锁学院:计算机与软件学院 专业:计算机科学与技术 指导教师: 报告人:学号:班级: 实验时间:2015/10/23 实验报告提交时间:2015/11/13 教务处制

二、方法、步骤: 设计解决哲学家就餐问题的并发线程。 假定有6个哲学家,围着圆桌交替地进行思考和进餐;每次进餐时,必须同时拿到左右两边的两只筷子才能进餐;进餐后,再放下筷子思考。 这是一个典型的同时需要两个资源的例子,如果申请资源顺序不当,可能会引起死锁。 本实验设计6个哲学家共享一个相同的线程Philosopher,既完成线程同步,又预防死锁发生。实验中采用了3种预防死锁的方法(摒弃‘环路等待’条件,摒弃‘请求和保持’条件,摒弃‘不剥夺’条件),要预防死锁,只采用其中的任何一种方法即可。 三.实验过程及内容:(其中:提供有简短说明的程序代码。要求:程序运行正确、符合设计要求。) 1.创建工程,注意勾选Win32 Application,点击确定 2.勾选第三个选项

3.创建菜单,有Eat、About、Exit 4.在进程(线程)同步及死锁.cpp中编写代码,此时代码有“摒弃‘环路等待’条件”、“摒弃‘请求和保持’条件”、“摒弃‘不剥夺’条件”三种代码,当检测其中一个时须将其余两个加以注释,一一检测其对死锁的影响。 运行结果: 运行前:

运行后: 5.在运行时可知,在分别“摒弃‘环路等待’条件”和“摒弃‘不剥夺’条件”的代码时不会出现死锁,而使用“摒弃‘请求和保持’条件”时会产生死锁,在理论正确前提下,此种情况说明了代码出现错误。 6.代码解释及修改⑴摒弃‘环路等待’条件 R1=ThreadID; R2=(ThreadID+1)%6; if (ThreadID == 0) { R1= (ThreadID+1) % 6; R2= ThreadID; } 依据摒弃‘环路等待’条件,要有至少一位哲学家与其他哲学家拿筷子顺序不同,则使第0位(ThreadID = 0)哲学家从右边开始拿筷子,其他哲学家相反。 ⑵摒弃‘不剥夺’条件 Wait(Mutex); if (ChopstickUsed[R2]) { Signal(Mutex); goto ReleaseChopstick;//将左筷子放弃掉 } Signal(Mutex); 若分配给的哲学家拿不到右筷子,则将他拿到的左筷子收回。 ⑶摒弃‘请求和保持’条件 原代码: Wait(Mutex); if((ChopstickUsed[R1])||(ChopstickUsed[R2])) { Signal(Mutex); goto LoopAgain;//思考

进程同步与死锁习题答案

第 4 章进程同步与死锁 (1) 什么是进程同步?什么是进程互斥? 解: 同步是进程间的直接制约关系,这种制约主要源于进程间的合作。进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。 进程互斥是进程间的间接制约关系,当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待,进程的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行,这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。互斥是一种特殊的同步方式。 (2) 进程执行时为什么要设置进入区和退出区? 解: 为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为“进入区”代码;在退出临界区后,必须执行“退出区”代码,用于恢复未被访问标志。 (3) 同步机构需要遵循的基本准则是什么?请简要说明。 解: 同步机制都应遵循下面的4 条准则: 1. 空闲让进。当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。 2. 忙则等待。当有一个进程在临界区时,其它欲进入临界区的进程必须等待,以保证进程互斥地访问临界 资源。 3. 有限等待。对要求访问临界资源的进程,应保证进程能在有限时间内进入临界区,以免陷入“饥饿”状 态。 4. 让权等待。当进程不能进入临界区时,应立即放弃占用CPU ,以使其它进程有机 会得到CPU 的使用权,以免陷入“饥饿”状态。 (4) 整型信号量是否能完全遵循同步机构的四条基本准则?为什么? 解:不能。在整型信号量机制中,未遵循“让权等待”的准则。 (5) 在生产者-消费者问题中,若缺少了V(full) 或V(empty) ,对进程的执行有什么影响?解: 如果缺少了V(full) ,那么表明从第一个生产者进程开始就没有对信号量full 值改变,即使缓冲池存放的产品已满了,但full 的值还是0,这样消费者进程在执行P(full) 时会认为缓冲池是空的而取不到产品,那么消费者进程则会一直处于等待状态。 如果缺少了V(empty) ,例如在生产者进程向n 个缓冲区放满产品后消费者进程才开始从中取产品,这时empty=0 ,full=n ,那么每当消费者进程取走一个产品时empty 并没有被改变,直到缓冲池中的产品都取走了,empty 的值也一直是0,即使目前缓冲池有n 个空缓冲区,生产者进程要想再往缓冲池中投放产品会因申请不到空缓冲区而被阻塞。 (6) 在生产者-消费者问题中,若将P(full) 和P(empty) 交换位置,或将V(full) 或V(empty) 交换位置,对进程执行有什么影响? 解: 对full 和empty 信号量的P、V 操作应分别出现在合作进程中,这样做的目的是能正确表征各进程对临界资源的使用情况,保证正确的进程通信联络。 (7) 利用信号量写出不会出现死锁的哲学家进餐问题的算法。

相关主题
文本预览
相关文档 最新文档