操作系统复习资料

2. 什么是操作系统?请举例说明操作系统在计算机系统中的重要地位。
答:操作系统是计算机系统中的一个系统软件,是一些程序模块的集合。
它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源,合理的组织计算机的工
作流程,控制程序的执行并向用户提供各种服务功能,使得用户能够灵活、方便、有效的
使用计算机,使整个计算机系统能安全高效地运行

5.操作系统的基本特征是什么?说明他们之间的关系。
答:1.并发性
2.共享性
3.随机性

11.现有一下应用计算机的场合,请为其选择适当的操作系统。1)航天航空,核变研究;
2)国家统计局数据处理中心;3)学校学生上机学习编程4)高炉炉温控制;5)民航定
票系统,6)发送电子邮件(在两个地区之间)
答:1)航天航空,核变研究:嵌入式操作系统
2)分布式操作系统
3)个人计算机操作系统
4)实时操作系统
5)批处理操作系统
6)网络操作系统。

第2章作业
2、为了支持操作系统,现代处理器一般都提供哪两种工作状态,以隔离操作系统和普通程序?两种状态各有什么特点?
答:现代处理器的工作状态分为管态和目态;
管态一般指操作系统管理程序运行的状态,具有较高的特权优先级,又称特权态,系统态;
目态一般指用户程序运行时的状态,具有较低的优先级,又称普通态,用户态;
当处理器处于管态时,全部指令都可以执行(包括特权指令),可以使用所有资源,并具有改变处理器状态的能力;当处理器处于目态时,就只有非特权指令可以执行。


3、什么是分级的存储体系结构?它主要解决了什么问题?
答:层次化的存储体系结构如下所示:
寄存器
高速缓存
主存储器
硬磁盘存储器
磁带机 | 光盘存储器
当沿着层次下降时,每比特的价格将下降,容量将增大,速度将变慢而处理器的访问频率将下降。较小、较贵而快速的存储设备有较大、教便宜而慢速的存储设备作后盾,它们通过访问频率的控制来提高存储系统的效能。
这种结构主要解决了存储设备容量、速度和成本之间的矛盾,提高存储系统效能。


14、时钟对操作系统有什么重要作用?
答:(1)在多道程序运行的环境中,它可以为系统发现一个陷入死循环的作业,从而防止机时的浪费;
(2)在分时系统中,用间隔时钟来实现作业间按时间片轮转;
(3)在实时系统中,按要求的时间间隔输出正确的时间信号给一个实时的控制设备
(4)定时唤醒那些要求延迟执行的各个外部事件
(5)记录用

户使用各种设备的时间和记录某外部事件发生的时间间隔
(6)记录用户和系统所需要的绝对时间






第3章作业
4、假设有三个作业,它们的进入时间及估计运行时间如下:
作业号 进入时刻 估计运行时间
1 10:00 60分钟
2 10:10 60分钟
3 10:25 15分钟
在单道批处理方式下,采用先来先服务算法和最短作业优先算法进行作业调度。请给出它们的调度顺序,并分别计算出作业平均周转时间和带权平均周转时间。请对计算结果进行解释。
答:(1)先来先服务算法的调度顺序:1->2->3
作业平均周转时间:
带权平均周转时间:
(2)最短作业优先算法的调度顺序:1->3->2
作业平均周转时间:
带权平均周转时间:


9、作业调度的主要功能是什么?常用的作业调度算法有哪几种?作业调度与进程调度有什么区别?各在什么情况下调用它们?如何评价一个作业调度算法的性能?确定调度算法的原则是什么?
答:作业调度程序本身通常作为一个进程在系统中执行;它在系统初始化时被创建。它的主要功能是审查系统能否满足用户作业的资源要求以及按照一定的算法选取作业。
常见的批处理作业调度算法:先来先服务算法(FCFS:First Come First Serve);短作业优先算法(SJF:Shortest Job First);最高响应比优先算法(HRN:Highest Response Ratio Next);基于优先数调度算法(HPF:Highest Priority First);均衡调度算法。
作业调度按一定的算法从磁盘上的“输入井”中选择资源能得到满足的作业装入内存,使作业有机会去占用处理器执行。但是,一个作业能否占用处理器?什么时间能够占用处理器?必须由进程调度来决定。所以,作业调度选中了一个作业且把它装入内存时,就应为该作业创建一个进程,若有多个作业被装入内存,则内存中同时存在多个进程,这些进程的初始状态为就绪状态,然后,由进程调度来选择当前可占用处理器的进程,进程运行中由于某种原因状态发生变化,当它让出处理器时,进程调度就再选另一个作业的进程运行。由此可见,作业调度与进程调度相互配合才能实现多道作业的并行执行。
调度算法性能的衡量:在一个以批处理为主的系统中为了吸引更多的用户来处理作业,系统总是力求缩短用户作业的周转时间。因此,通常用作业的平均周转时间或平均带权周转时间的长短来衡量调度性能的优劣。前者用来衡量不同调度算法对同一作业流的调度性能,而后者可用来比较某种调度算法对不同作业流的调度性能。
确定调度算法的原则:

(1)选择的调度算法应与系统的整个设计目标保持一致。例如,批处理系统应注重提高计算机效率,尽量增加系统的平均吞吐量(指单位时间内平均算题个数);而分时系统应保证用户所能忍受的响应时间;实时系统的调度策略是在保证及时响应和处理与时间有关的事件的前提下,才能考虑系统资源的使用效率。
(2)注意系统资源的均衡使用,使“I/O繁忙”的作业与“CPU繁忙”的作业搭配起来运行。
(3)应保证提交的作业在规定的截止时间内完成,而且应设法缩短作业的平均周转时间。


12、系统调用的作用是什么?请阐述系统调用的工作原理和实现过程。
所谓系统调用,就是用户在程序中调用操作系统所提供的一些子功能。这是一种特殊的过程调用,这种调用通常是由特殊的机器指令实现的。系统调用是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,动态请求和释放系统资源,调用系统中已有的系统功能来完成与计算机硬件部分相关的工作以及控制程序的执行速度等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关的功能。
由于操作系统的特殊性,应用程序不能采用一般的过程调用方式来调用这些功能过程,而是利用一种系统调用命令去调用所需的操作系统功能过程。由于在运行系统调用时,由于调用和被调用过程工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程,而要通常都是通过软中断机制切换系统状态。并且在执行完响应的系统调用处理程序后不是返回调用过程继续执行,而是将引起新的调度。
为了提供系统调用功能,操作系统内必须有事先编制好的实现这些功能的子程序或过程。显然,这些程序或过程是操作系统程序模块的一部分,且不能直接被用户程序调用。
还需要陷入(TRAP)或异常处理机构。当用户使用操作系统调用时,产生一条相应的指令,处理机在执行到该指令时发生相应的中断,并发出有关的信号给该处理机构;该处理机构在收到了处理机发来的信号后,启动相关的处理程序去完成该系统调用所要求的功能。
把由于系统调用引起处理机中断的指令称为陷入或异常指令(或称访管指令)。在操作系统中,每个系统调用都对应一个事先给定的功能号,每个系统调用至少应该有一个参数,即通过eax寄存器传递来的系统调用号。
为了实现系统调用,系统设计人员还必须为实现各种系统调用功能的子程序编造入口地址表,每个入口地址都与相应的系统程序名对应起来。然后,陷入处理程序把陷入指令中所包含的功能号与该入口地

址表中的有关项对应起来,从而由系统调用功能号驱动有关子程序执行。
由于在系统调用处理结束之后,用户程序还需利用系统调用的返回结果继续执行,因此,在进入系统调用处理之前,陷入处理机构还需保存处理机现场。再者,在系统调用处理结束之后,还要恢复处理机现场。在操作系统中,处理机的现场一般被保护在特定的内存区或寄存器中。
有关系统调用的另一个问题是参数传递过程问题。不同的系统调用需要传递给系统子程序以不同的参数,而且,系统调用的执行结果也要以参数形式返回给用户程序。几种常用的实现方法。一种是由陷入指令自带参数。一般来说,一条陷入指令的长度总是有限的,而且,该指令还要携带一个系统调用的功能号,从而,陷入指令只能自带极有限的几个参数进入系统内部。另一种方法是通过有关通用寄存器来传递参数。显然,这些寄存器应是系统程序和用户程序都能访问的。不过,由于寄存器长度也是较短的,从而无法传递较多的参数。因此,较多的系统中,大多在内存中开辟专用堆栈区来传递参数。
另外,在系统发生访管中断或陷入中断时,不让用户程序直接访问系统程序,反映在处理机硬件状态的处理机状态字PSW中的相应位要从用户执行模式转换为系统执行模式。这一转换在发生访管中断时由硬件自动实现。


1..一个单CPU 的操作系统共有n 个进程,不考虑进程状态过渡时的情况,也不考虑空转进
程(1)给出运行进程的个数;(2)给出就绪进程的个数;(3)给出等待进程的个数。
解:1.运行进程的个数可能是0,也可能是1;
2,就绪的进程的个数可能是0,也可能是n-1
3.等待进程的个数可能是0,也可能是n


2、引入多道程序设计技术的起因和目的是什么?多道程序系统的特征是什么?
答:为了提高计算机系统中各种资源的利用效率,缩短作业的周转时间,在现代计算机中广泛采用多道程序技术,使多种硬件资源能并行工作。
多道程序同时在系统中存在并且运行,这时的工作环境与单道程序的运行条件相比,大不相同。首先,每个用户程序都需要一定的资源,如内存、设备、CPU时间等,因此系统中的软、硬件资源不再是单个程序独占,而是由几道程序所共享。这样,共享资源的状态就由多道程序的活动共同决定。
此外,系统中各部分的工作方式不再是单纯串行的,而是并发执行的。所谓并发执行,如果是单CPU,则这些并发程序按给定的时间片交替地在处理机上执行,其执行的时间是重叠的;如果是多CPU,则这些并发程序在各自处理机上运行。

5.PCB 的作用是什么?他是怎么

样描述进程的动态本质的?
答:PCB 称为进程控制块(Process Control Block),为了便于系统控制和描述进程的活动
过程,在操作系统核心中为进程定义一个专门的数据结构,就是PCB。
系统利用PCB 来描述进程的基本情况以及进程的运行变化过程。PCB 是进程存在的唯一标
志。当系统创建一个进程时,为进程设置一个PCB,再利用PCB 对进程进行控制和管理;撤
销进程时,-系统收回它的PCB,进程也随之消亡。

6.进程的三个基本状态转换如图(见书),图中1,2,3,4 表示某种类型的状态变迁,请
分别回答下列问题:
1)什么“事件”引起某一种类型的状态变迁
答:运行中的进程因为中断的发生,或者需要等待某种事件的发生,变迁到等待状态
等待状态的进程,应为所等待的事件发生了,变迁到就绪态
CPU 为空的时候,就绪态的进程就变迁到运行状态
运行的进程因为调度程序,变迁到就绪状态
2)系统中常常由于某一进程的状态变迁引起另一进程也产生状态变迁,试判断在下述情
况下,如果有的话,将发生什么因果变迁?
3 ->1 2. ->1 4->1 3->4
如果有处于就绪态的进程(3->1)
如果有处于就绪态的进程(2->1)
CPU 为空(4->1)
等待事件发生(3->4)
3)在什么情况下,下述变迁中哪些将不立即引起其他变迁?
1 2 3 4
当1 发生,并不引起其他变迁
当2 发生,如果有进程处于就绪态,引起1 发生
当3 发生, 如果有进程处于就绪态,引起1 发生
当4 发生,如果CPU 为空,那么引起1 发生
4)引起进程状态变迁的根本原因是什么?
答: 原因:自身的进展情况和外界环境条件的变化。自身的逻辑,中断和进程调度程序
等!
根据进程的动态性,进程在其生命周期内,需要经历一系列离散状态。

9、说明下列活动是属于哪种制约关系?
(1)若干同学去图书馆借书;
(2)两队进行篮球比赛;
(3)流水线生产中的各道工序;
(4)商品生产和社会消费;
答:(1)互斥; (2)互斥; (3)同步; (4)同步


12.同步机制应该遵循哪些原则?为什么?
答:1.它的描述能力应该足够强,既能解决各种进程间的同步互斥问题;
2.其次,应该容易实现并效率高
3.第三,使用方便


13.设有无穷多个信息,输入进程把信息逐个写入缓冲区,输入进程逐个地从缓冲区中取
出信息。在下述情况下:1)缓冲区是环形的,最多可以容纳n 个信息;2)缓冲区是无穷大
的。
试分别回答下列问题?
1)输入,输出两进程读,写缓冲区需要什么条件?
2)用P,V 操作写出输入,输出两进程的同步算法,并给出信号量含义以及初值
3)指出信号量的值的变化范围和其值的含义


答:
一:当缓冲区的大小为n 时
1)当缓冲区信息为空的时候,输出进程无法读,处于等待状态,当缓冲区信息为满的时
候无法写,都某个缓冲区单位进行读写的时候,要互斥
2)
空的信号量empty 初值为n, 满的信号量为full 初值为0, 对缓冲区单元的互斥信号
量为mutex,j,k 为缓冲区单位地址,初值为0
写进程
P(empty)
P(mutex)
向Buffer[i]写入信息
V(mutex)
V(full)
j:=(j+1)mod n

读进程
P(full)
P(mutex)
从Buffer[k]中读信息
V(mutex)
V(empty)
k:=(k+1)mod
empty 表示还有多少缓冲区单元为空,如果empty=0,表示缓冲区满,系统调用写进程时
,写进程处于等待态
full 表示缓冲区都多少有信心的单元,如果full=0, 表示缓冲区空,系统调用写进程时
,读进程处于等待态
mutex 表示对于缓冲区单元的互斥信号量,当mutex=1 时,开锁,mutex=0 时,闭锁
二.当缓冲区大小为无穷大时
1)同上
2)
空的信号量empty 不用设, 满的信号量为full 初值为0, 对缓冲区单元的互斥信号量
为mutex,j,k 为缓冲区单位地址,初值为0
写进程
P(mutex)
向Buffer[i]写入信息
V(mutex)
V(full)
j:=(j+1)mod n

读进程
P(full)
P(mutex)
从Buffer[k]中读信息
V(mutex)
k:=(k+1)mod n
full 表示缓冲区都多少有信心的单元,如果full=0, 表示缓冲区空,系统调用写进程
时,读进程处于等待态
mutex 表示对于缓冲区单元的互斥信号量,当mutex=1 时,开锁,mutex=0 时,闭锁
17、有K个进程共享一个临界区,对于下述情况,请说明信号量的初值、含义,并用P、V操作写出有关的互斥算法。
(1)一次只允许一个进程进入临界区;
(2)一次允许m个进程进入临界区(m答:<1>.信号量说明:
mutex,初值为1,记录可进入临界区的进程数;
互斥算法; 
P(mutex);
进入临界区;
V(mutex);
结束;

<2>.信号量说明:
 mutex,初值为m,记录可进入临界区的进程数;
互斥算法; 
P(mutex);
进入临界区;
V(mutex);
结束;

21、某银行有人民币储蓄业务,由 n个柜员负责。每个顾客进入银行后先取一个号,并且等着叫号。当一个柜台人员空闲下来,就叫下一个号。试用P,V操作正确编写柜台人员和顾客进程的程序。
答:


31.试述进程调度得主要任务,为什么说它把一台物理机变成了多台逻辑上的处理机
答:处理机调度的任务是控制协调进程对CPU 的竞争即按一定的调度算法从就绪队列中选
中一个进程,把CPU 的使用权交给被选中的进程
多个进程虽然在微观上仍然是顺序执行,但是在宏观上,仿佛是并发执行


第5章习题答案
什么是碎片?试述各种多道程序系

统存储管理方案中碎片是如何出现的?
答:经过一段时间的分配回收后,内存中存在很多很小的空闲块。它们每一个都很小,不
足以满足分配要求;但其总和满足分配要求。这些空闲块被称为碎片

10、有一个操作系统采用段式存储管理方案,用户区内存为512K,分配时截取空闲块的前半部分(小地址部分)。初始时内存全部空闲。系统执行如下申请、释放操作序列。
申请300K,申请100K,释放300K,申请150K,申请50K,申请90K
(1)若采用首先适应算法,空闲块表中有哪些空块(指出大小,地址);
(2)若采用最佳适应算法,空闲块表中有哪些空块(指出大小,地址);
(3)若随后又申请80K,针对上述两种情况说明结果?其结果说明了什么问题?
答:操作系统采用段式存储。执行申请释放序列后,结果如下:
a、如果采用首先适应算法,空闲块表中的空块有
地址 大小
290k 10k
400k 112k
b、如果采用最佳适应算法,空闲块表中的空块有
地址 大小
240k 60k
450k 62k
c、若继续申请80k
如果之前采用首先适应算法,则直接分配起始地址为400k的连续80k空间
如果之前采用最佳适应算法,则需要首先采用拼接技术对空闲空间进行合并,然后在合并后的空闲空间中分配连续80k空间。
在上述情况中采用最佳适应算法却导致后来的内存直接分配失败而不得不进行内存空间整理。这说明最佳适应算法并不是所有时候都能够保持大块连续的空闲空间。

26、有一个虚拟存储系统。分配给某进程3页内存,开始时内存为空,页面访问序列如下:
6,5,4,3,2,1,5,4,3,6,5,4,3,2,1,6,5
(1)若采用先进先出页面置换算法(FIFO),缺页次数为多少?
(2)若采用最近最少使用页面置换算法(LRU),缺页次数为多少?
(3)若采用最佳页面置换算法算法呢?
答:
(1):17次
(2):17次
(3)11次

何谓系统的“抖动”现象?当系统发生“抖动”时,你认为应该采取什么措施来加以克服?
答:在虚存中,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多,此时系统效率急剧下降,甚至导致系统崩溃。这种现象为颠簸(或抖动)。
颠簸或抖动产生的最主要的原因是页面置换算法不合理,分配给进程的物理页面数太少。可以考虑改进页面的置换算法。另一方面,程序员编写程序的同时,如果能根据机器寻址的特点,来调整访存指令的执行顺序(例如对大矩阵的操作是先行后列还是先列后行,等)也可以避免抖动的发生。


某采用页式虚拟存储管理的系统,接收了一个共7页的作业,作业执行时依次访问的页为1,2,3,4,2,1,5,6

,2,1,2,3,7,6,3,2,1,2,3,6。若采用最近最少用(LRU)调度算法,作业在得到两块主存空间和四块主存空间时各会产生多少次缺页中断?如果采用先进先出(FIFO)调度算法又会有怎样的结果?
解:
(1)LRU、两块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
页1: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
页2: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3
× × × × × × × × × × 2 × × × × × × 2 × ×
缺页中断18次

(2)LRU、四块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
页1: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
页2: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3
页3: 1 2 3 4 2 1 5 6 6 1 2 3 7 6 3 3 1 2
页4: 1 1 3 4 2 1 5 5 6 1 2 2 7 6 6 6 1
× × × × 2 1 × × 2 1 2 × × × 3 2 × 2 3 6
缺页中断10次

(3)FIFO、两块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
页1: 1 2 3 4 2 1 5 6 2 1 1 3 7 6 3 2 1 1 3 6
页2: 1 2 3 4 2 1 5 6 2 2 1 3 7 6 3 2 2 1 3
× × × × × × × × × × 2 × × × × × × 2 × ×
缺页中断18次

(4)FIFO、四块主存空间:
LRU: 1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6
页1: 1 2 3 4 4 4 5 6 2 1 1 3 7 6 6 2 1 1 3 3
页2: 1 2 3 3 3 4 5 6 2 2 1 3 7 7 6 2 2 1 1
页3: 1 2 2 2 3 4 5 6 6 2 1 3 3 7 6 6 2 2
页4: 1 1 1 2 3 4 5 5 6 2 1 1 3 7 7 6 6
× × × × 2 1 × × × × 2 × × × 3 × × 2 × 6
缺页中断14次





文件管理作业
5、假定一个UNIX磁盘块能存放1024个磁盘地址。用直接盘块指针的文件的最大尺寸是多少?一重间接盘块指针呢?二重间接盘块指针呢?三重呢?
答:文件的最大尺寸(单位:磁盘块)分别为:
直接磁盘块指针方法:1024
一重索引方法:10242
两重索引方法:10243
三重索引方法:10244
或按I节点的方式理解:
直接盘块指针:12
一重索引方法:12+1024
二重索引方法:12+1024+10242
三重索引方法:12+1024+10242+10243


10、在UNIX系统中,采用I节点方式给出一个文件所在磁盘块的块号。假设每个磁盘块大小为1024字节,并且每个间接盘块能容纳256个块号,试问:
(1)如果进程要读取某文件的字节偏移量为8192,应该如何找到它所在磁盘块?
(2)如果想要存取某文件的字节偏移量为640000,又将如何?
答:(1)偏移量为8192,处理方式如下:
① 读入I节点到内存;(这里I节点可以看作一个指针数组)
②根据I节点的第9个指针即可找到相应的磁盘

块。
(2)偏移量为640000,因为前面12个指针所能寻址的范围是1024*12-1=12287;第13个指针指向一个索引表,增加的寻址范围是262144,仍然小于640000;第14个指针增加的寻址范围是67108864,已经超过了640000,因此过程如下:
① 读入I节点到内存
②根据第14个指针找到了2级索引表,然后根据它的第2个表项找到1级索引表,此时,1级索引表的第102个表项的指向的磁盘块即为所求。(这个索引项所指磁盘块的始址恰好为12287+262144*2+1024*101+1=640000)


13、在实现文件系统时,为加快文件目录的检索速度,可利用“文件控制块分解法”。 假设目录文件存放在磁盘上,每个盘块512 字节。文件控制块占64 字节,其中文件名占8字节,文件控制块分解后,第一部分占有10字节(包括文件名和文件内部号),第二部分占56字节(包括文件内部号和文件其他信息)。
(1)假设某一目录文件共有256个文件控制块,试分别给出采用分解法前和分解法后,查找该目录文件的一个文件控制块的平均访盘次数。
答:
1)
分解前,每一块可以存放512/64=8个文件控制块,256个文件需要32个块,所以平均需要访盘(1+32)/2=16.5次
分解前,每一块可以存放512/10=51个文件控制块第一部分,256个文件需要256/51=6个块,再加上读取文件控制块的第二部分,平均访盘(1+6)/2+1=4.5次

27、假设一个活动头磁盘有200道,编号从0-199。当前磁头正在143道上服务,并且刚刚完成了125道的请求。现有如下访盘请求序列(磁道号):
86,147,91,177,94,150,102,175,130
试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数)。
(1)最短寻道时间优先(SSTF)磁盘调度算法。
(2)扫描法(SCAN)磁盘调度算法(假设沿磁头移动方向不再有访问请求时, 磁头沿相反方向移动。)
答:
(1)SSTF
磁头移动顺序:143,147,150,130,102,94,91,86,175,177
移动总量:首先划分分成三段(143~150,150~86,86~177),然后计算,移动总量为(150-143)+(150-86)+(177-86)=162
(2)SCAN
磁头移动顺序:143,147,150,175,177,130,102,94,91,86
移动总量:只需要划分成两段(143~177,177~86),移动总量为(177-143)+(177-86)=125
总结:SCAN通过减少方向改变的次数减少了磁头移动的总量。


第8章作业
题目:
1、死锁的四个必要条件是彼此独立的吗?试给出最少的必要条件。 解:
不时彼此独立的,第四个(循环等待条件)的条件蕴含了前三个条件的成立(互斥条件、不可剥夺条件、请求和保持条件)。最少的必要条件只有第四条,循环等待条件。


9、设系统有三种类型的资源,数量

为(4,2,2)。系统中有进程P1、P2、P3按如下顺序请求资源;
进程P1申请(2,2,1) 进程P2申请(1,0,1) 进程P1申请(0,0,1) 进程P3申请(2,0,0) 该系统按照死锁预防中破坏“不可剥夺”条件的方案二,对上述申请序列,给出资源分配过程。指出哪些进程需要等待资源,哪些资源被剥夺。进程可能进入无限等待状态吗?
解:
(1)资源分配过程:
① P1申请(2,2,1),给P1分配(2,2,1),可用资源(2,0,1)
② P2申请(1,0,1),给P2分配(1,0,1),可用资源(1,0,0)
③ P1再申请(0,0,1),资源不够分配,但缺少的资源也没有被等待进程占有,因此P1等待,可用资源不变
④ P3申请(2,0,0),资源不够分配,但缺少的资源被等待的进程P1占有,因此根据死锁预防中破坏“不可剥夺”条件的方案二,从已给P1分配的资源中剥夺走(1,0,0)给P3,满足P3要求,P1剩余(1,2,1)继续等待,可用资源(1,0,0)

(2)这种方法会导致某些进程无限期的等待
因为被阻塞进程的资源可以被剥夺,所以被阻塞进程所拥有的资源数量在其被唤醒之前只可能减少。若系统中不断出现其他进程申请资源,这些进程申请的资源与被阻塞进程申请或拥有的资源类型相同且不被阻塞,则系统无法保证被阻塞进程一定能获得所需要的全部资源。本例中如果再创建的进程总是只申请第1和第3类资源,总是占有系统所剩下的第1和第3类资源的全部且不阻塞,那么进程P1将会无限期等待。



相关文档
最新文档