福建工程学院2016.6操作系统期末例题+课后习题精选
- 格式:docx
- 大小:187.39 KB
- 文档页数:23
一、选择题:
1、以下(才)项功能不是操作系统具备的主要功能。
(A)内存管理(B)中断处理(C)文档编辑(D)CPU调度
二、判断题:
2、SPOOLing系统实现设备管理的虚拟技术,即:将独占设备改造为共享设备,它由专
门负责I/O的常驻内存的进程以及输入、输出井组成。
(t )
三、名词解释:
1、进程:
四、简答:
为什么要引入缓冲技术,其基本实现思想是什么?
缓冲技术是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。
(1分)在操作系统的设备管理中,引入缓冲技术的主要原因可归结为以下几点。
缓解CPU和I/O设备间速度不匹配的矛盾。
减少对CPU的中断频率。
提高CPU和I/O设备之间的并行性。
(2分)
缓冲技术的实现思想是在CPU和外设之间设立缓冲,用以暂存CPU和外设之间交换的数据,从而缓和CPU与外设速度不匹配所产生的矛盾。
缓冲的实现方法有两种:一种实现方法是采用硬件缓冲器,但由于这种方法成本太高,除一些关键部位外,一般情况下不采用硬件缓冲器;另一种实现方法是在内存划出一块存储区,专门用来临时存放输入/输出数据,这个区域称为缓冲区。
(3分)
五、综合:
1、某系统中有A、B、C、D四类资源,且其总数量都是8个。
某时刻系统中有5个进程,状态如下图:
问:1
2)若进程P2申请资源(1,1,1,1),能否为其分配?请说明现在对该时刻的状态进行安全分析:
由于Available向量为(3,4,4,1),所以Work向量初始化为(3,4,4,1)
此时的Work小于任意的Need[i]向量,所以系统处于不安全状态
由于Request2(1,1,1,1)<Available(3,4,4,1)且Request2(1,1,1,1)<Need2(1,1,1,2)
所以先试着把P2所申请的资源分配给它,Available变为(2,3,3,0)得到系统状态如下表所示:(4分)
然后进行安全性检测:
此时Available向量为(2,3,3,0),所以Work向量初始化为(2,3,3,0),此时的Work小于任意的Need[i]向量,所以系统处于不安全状态,所以不可以为P2分配资源。
(3分)
第一章
(1) 试说明什么是操作系统,它具有什么特征?其最基本特征和主要功能是什么?
解:
操作系统就是一组管理与控制计算机软硬件资源并对各项任务进行合理化调度,且附加了各种便于用户操作的工具的软件层次。
现代操作系统都具有并发、共享、虚拟和异步特性,其中并发性是操作系统的最基本特征,也是最重要的特征,其它三个特性均基于并发性而存在。
处理机管理,存储器管理,文件管理,设备管理,人机接口。
答案:操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。
(3分) 操作系统的主要功能包括:存储器管理、处理机管理、设备管理、文件管理以及用户接口管理。
(5分)
(2) 设计现代操作系统的主要目标是什么?
解:现代操作系统的设计目标是有效性、方便性、开放性、可扩展性等特性。
其中有效性指的是OS应能有效地提高系统资源利用率和系统吞吐量。
4) 试说明实时操作系统和分时操作系统在交互性、及时性和可靠性方面的异同。
解:
●交互性:分时系统能够使用户和系统进行人-机对话。
实时系统也具有交互性,但人与系统的交互仅限于访
问系统中某些特定的专用服务程序。
●及时性:分时系统的响应时间是以人能够接受的等待时间为标准,而实时控制系统对响应时间要求比较严
格,它是以控制过程或信息处理中所能接受的延迟为标准。
●可靠性:实时系统要求系统可靠性要比分时系统高。
在实时系统中往往采用多级容错措施来保证系统的安
全及数据的安全。
(8) 处理机管理有哪些主要功能?请简要描述。
解:
处理机的管理功能主要体现在创建、撤销进程,并按照一定的算法为其分配所需资源,同时还要管理和控制各用户的多个进程协调运行,确保各个进程可以正确的通信。
在多道程序OS中,这些管理功能最终通过对进程的控制和管理来实现,而在具有线程机制的OS中,这些功能的实现还依赖于对线程的管理和控制。
(9) 存储器管理有哪些主要功能?请简要描述。
解:
操作系统所管理的存储器包括内存、外存等,因此存储器管理的主要任务就是将各种存储器件统一管理,保证多道程序的良好运行环境,同时还要兼顾内存利用率、逻辑上扩充内存的需求以及用户的感受,提供优良的控制、存取功能,为用户提供操控存储器的手段。
为实现上述要求,存储器管理应具有内存分配、内存回收、内存保护、地址映射和虚拟内存等功能。
(10) 文件管理有哪些主要功能?请简要描述。
解:
其主要功能就是管理外存上的静态文件,提供存取、共享和保护文件的手段,以方便用户使用,同时禁止无权限用户对他人资源的误访问或有权限用户对资源的误操作。
文件管理机制还要能有效管理外存空闲区域,根据文件的大小为其分配和回收空闲区。
为了满足用户对响应时间的要求,文件管理机制还应实现目录管理,以便快速地定位文件。
文件管理机制能有效保护文件安全,提高资源利用率,为用户提供快速检索和使用文件的手段,是OS不可或缺的组成部分。
(11) 设备管理有哪些主要功能?请简要描述。
解:
设备管理的主要作用是使用统一的方式控制、管理和访问种类繁多的外围设备。
设备管理功能主要体现在:接收、分析和处理用户提出的I/O请求,为用户分配所需I/O设备,同时还要做到尽量提高CPU和I/O设备利用率、I/O处理效率,为用户提供操控I/O设备的便捷界面和手段。
根据设备管理模块的功能要求,可以将其功能分为设备分配、缓冲管理、设备处理、虚拟设备等。
第二章
(1) 请说明系统生成和系统引导的过程。
解:
系统的生成过程:当裸机启动后,会运行一个特殊的程序来自动进行系统的生成(安装),生成系统之前需要先对硬件平台状况进行检查,或者从指定文件处读取硬件系统的配置信息,以便根据硬件选择合适的操作系统模块组,比较重要的信息通常有:CPU类型、内存大小、当前关联设备的类型和数量以及操作系统的重要功能选项和参数。
按照这些信息的指示,系统生成程序就可以正确地生成所需的操作系统。
系统引导的过程:系统引导指的是将操作系统内核装入内存并启动系统的过程。
主要包括初始引导、内核初始化、全系统初始化。
(2) 操作系统具有哪些接口?这些接口的作用是什么?
解:
操作系统为用户提供的接口有图形接口、命令接口和程序接口几种形式。
操作系统包括三种类型的用户接口:命令接口(具体又可分为联机命令接口与脱机命令接口)、程序接口及图形化用户接口。
其中,命令接口和图形化用户接口支持用户直接通过终端来使用计算机系统,而程序接口则提供给用户在编制程序时使用。
(4) 系统调用的用途是什么?
解:
通常,在操作系统内核设置有一组用于实现各种系统功能的子程序(过程),并将它们提供给用户程序调用。
每当用户在程序中需要操作系统提供某种服务时,便可利用一条系统调用命令,去调用所需的系统过程。
这即所谓的系统调用。
第三章
原语是由若干个机器指令构成的完成某种特定功能的一段程序1)创建原语,创建一个就绪状态的进程,使进程从创建状态变迁为就绪状态;(2)撤销原语,使进程从执行状态变迁为完成状态;(3)阻塞原语,使进程从运行状态变迁为阻塞状态;(4)唤醒原语,使进程从阻塞状态变迁为就绪状态
(2)什么是进程?为什么要在操作系统中引入进程?
解:
进程是可并发执行且具有独立功能的程序在一个数据集合上的运行过程,它是操作系统进行资源分配和调度的基本单位。
“进程”概念是人们为了使程序能够并发执行,并且能对并发的程序加以描述和控制而引入的。
(3)试从并发性、独立性、动态性上比较程序和进程的不同。
解:
●并发性是进程的重要特征,同时也是OS 的重要特征。
引入进程的目的正是为了使其程序能和其它进程的程
序并发执行,而程序是不能并发执行的。
●独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。
而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行。
●动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由
撤销而消亡,因而进程有一定的生命期;而程序只是一组有序指令的集合,是静态实体。
(4) 什么是PCB?它具有什么作用?为什么说PCB是进程存在的唯一标识?
解:
进程控制块(Process Control Block,PCB)是操作系统为了管理进程而设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程。
它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其
它进程并发执行的进程.
因为系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。
进程与PCB是一一对应的。
31、什么是进程?什么是线程?进程与线程有何区别?
答:
(1)进程是具有独立功能程序在某个数据集合上的一次执行过程。
(2分)
(2)线程是进程内的一个执行实体或执行单元。
(2分)
(3)进程和线程的区别:(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。
一个进程的线程在另一个进程内是不可见的。
(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。
(2分)
(5)进程有哪些基本状态?这些状态具有什么特征?
解:
进程的三种基本状态分别是:就绪状态、运行状态、阻塞状态。
●就绪状态:进程已获取到除CPU之外的所有必要资源,只要再得到CPU,就可以马上投入运行。
●运行状态:处于就绪状态的进程被调度程序选中后将得到CPU控制权,此时该进程就可以使用处理器进行
数据运算和处理。
●阻塞状态:当一个进程正在等待某个事件的发生(如等待I/O的完成)而暂停执行,这时,即使分配有CPU
时间,它也无法执行。
(6)为什么要引入挂起状态?该状态有什么特性?
解:
引入挂起状态时为了满足四种需要:调节系统负荷的需要、用户的需要、父进程的需要、系统的需要。
挂起状态的特点:交换到磁盘上的进程,不让其参与进程调度,以达到平衡系统负荷的目的。
(7)说明进程基本状态的转换关系及引起这些状态间转换的典型原因。
解:处于就绪状态的进程,在调度程序为之分配了处理器之后,就可以投入运行。
同时,进程的状态也由就绪状态转变为运行状态;在采用时间片机制的操作系统中,分配给当前进程的时间片用完之后,它会暂停执行,其状态也由运行状态转换到就绪状态;如果由于某事件发生(比如进程需要访问某I/O设备,而该设备正在被别的进程访问)而使进程运行受阻,不能再继续向下执行时,它的状态会由运行状态转变为阻塞状态;当进程期望的某事件发生时(比如需要访问的I/O设备已可用),进程将从阻塞状态转变为就绪状态
(14)什么是线程?请比较它与进程的异同。
解:
线程是进程中的一个实体,是被系统独立分配和调度的基本单位。
线程基本上不拥有资源,只需要一些必不可少的资源(如程序计数器、一组寄存器和栈)。
线程是代替进程成为独立调度和分派的基本单位,进程则仍是拥有资源的基本单位。
并发粒度不同。
除了不同进程的线程之外,同一个进程里的不同线程之间也可以并发执行,所以线程拥有更好的并发性。
拥有资源数量不同。
进程是拥有资源的基本单位,线程基本上不拥有系统资源,它可以访问自己所在的进程的资源。
管理开销不同。
进程切换用的时间开销相对要多于线程。
进程间通信很麻烦,而同一进程的线程则通过共享进程的资源很方便地通信和同步,同步开销小得多。
1、说明作业调度,中级调度和进程调度的区别,并分析下述问题应由哪一级调度程序负责。
(1) 在可获得处理机时,应将它分给哪个就绪进程;
(2) 在短期繁重负载下,应将哪个进程暂时挂起。
答: (1) 作业调度用于决定把外存中处于后备队列中的哪些作业调入内存,并为它们创建进程,分配资源,然后将新创建进程插入就绪队列;中级调度负责将内存中暂时不具备运行条件的进程换到外存交换区存放,但内存空闲时,又
将外存中具备运行条件的进程重新换入内存;进程调度决定将处理机分配给就绪进程队列的哪个进程。
(4分)(2)进程调度、中级调度(2分)
2、一个多道程序系统,有一个作业序列,作业的提交时间及运行时间在下表中所列。
当第一个作业进入系统后开始调度,假定作业都是仅作计算。
请列出在分别采用计算时间短的优先算法管理作业时各个作业的开始时间、完成时间和周转时间。
注意:忽略系统开销。
作业号到达输入井时刻需计算时间
1 10∶00 2小时
2 10∶10 1小时
3 10∶20 0.5小时
4 10∶30 0.2小时
(15)处理器调度的层次有哪些?各层次的主要工作是什么?
解:
处理器调度的层次分为三级调度:高级调度、中级调度和低级调度。
●高级调度:它需要做出两个决定,一个是要从驻留在外存后备队列中调入多少个作业,二是要调入哪几个
作业;然后为被选中的作业创建进程,并分配必要的系统资源,如内存、外设等,然后把新创建的进程放
入就绪队列中,等待被调度执行。
●中级调度:中级调度主要涉及进程在内存和外存之间的交换。
当系统中的内存使用情况紧张时,中级调度
把内存中暂时不能运行的进程调到外存中等待,等内存有足够的空闲空间时,再由中级调度决定将外存上
的某些具备了运行条件的就绪进程调入内存,把其状态修改为就绪状态并挂在就绪队列中,等待进程调度。
●低级调度:按照一定的算法从就绪队列中选择一个进程,然后将处理器分配给它。
执行低级调度功能的程
序称作进程调度程序,由它实现处理器在进程间的切换。
(21)在一个单道批处理系统中,一组作业的到达时间和运行时间如下表所示。
试计算使用先来先服务、短作业优先、高响应比优先算法时的平均周转时间和平均带权周转时间。
解:
用T表示周转时间,用W表示带权周转时间
FCFS的T =(1.0+1.0+0.7+0.7)/ 4 = 0.85 W =(1.0+2.0+3.5+7.0)/ 4 =3.375
(22) Linux进程有几个状态,简述各状态的转换条件。
解:1)运行状态2) 可中断睡眠状态 3)不可中断睡眠状态4)暂停状态 5)跟踪状态 6)僵死状态 7)退出状态
第四章
(1) 什么是进程同步?什么是进程互斥?
解:
同步是进程间的直接制约关系,这种制约主要源于进程间的合作。
进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。
进程互斥是进程间的间接制约关系,当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待,进程的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行,这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。
互斥是一种特殊的同步方式。
(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;
inout: 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)
}
}
(10) 什么是死锁?产生死锁的原因和必要条件是什么?
解:
所谓死锁是指在一个进程集合中的所有进程都在等待只能由该集合中的其它一个进程才能引发的事件而无限期地僵持下去的局面。
(2分)
产生死锁的原因可以归结为两点:1)竞争资源, 2)各进程之间的推进顺序不当。
(2分)
产生死锁的必要条件有四个:1)互斥条件, 2)不剥夺条件, 3)请求和保持条件, 4)环路条件。
(2分)18) 桌上有一空盘,允许存放一只水果。
爸爸可以向盘中放苹果,也可以向盘中放桔子,儿子专等着吃盘中的桔子,女儿专等着吃盘中的苹果。
规定当盘空时一次只能放一只水果供吃者用,请用信号量实现爸爸、儿子和女儿3个并发进程的同步。
解:
本题中应设置三个信号量S、So、Sa,信号量S表示盘中是否为空,其初值为1;So表示盘中是否有桔子,其初值为0;Sa表示盘中是否有苹果,其初值为0。
同步描述如下:
爸爸: P(S); 儿子:P(So); 女儿:P(Sa);
将水果放入盘中从盘子中取出桔子从盘子中取出苹果
if (放入的是桔子) v(So);V(S);V(S);
else v(Sa);吃桔子吃苹果;
(19) 设某系统中有3个进程Get、Process和Put,共用两个缓冲区buffer1和buffer2。
假设buffer1中最多可以放11个信息,现在已经放入了两个信息;buffer2最多可以放5个信息。
Get进程负责不断地将输入信息送入buffer1中,Process进程负责从buffer1中取出信息进行处理,并将处理结果送到buffer2中,Put进程负责从buffer2中读取结果并输出。
试用信号量机制实现它们的同步与互斥。
解:
semaphore empty1=9; //buffer1空的数量
semaphore full1=2; //buffer1满的数量
semaphore empty2=5; //buffer2空的数量
semaphore full2=0; //buffer2满的数量
in1,in2,out1,out2:integer := 2,0,1,0;
Get(){
while(1){
wait(empty1)
in1=(in1+1)mod11
signal(full1)
}
}
Process(){
while(1){
wait(full1) out1=(out1+1)mod11 signal(empty1)
signal(empty2)
in2=(in2+1)mod5 signal(full2)
}
}
Put(){
while(1){
wait(full2) out2=(out2+1)mod5 signal(empty2)
}
}
答:
semaphore
empty1=9;//空buf1的数目
full1=2; //有数据的buf1的数目empty2=5; //空buf2的数目
full1=0; //有数据的buf2的数目 mutex1=mutex2=1; //互斥信号量int main(){
Cobegin //并发开始
GET();
PRO();
PUT();
Coend //并发结束
return 0; } (3分)
//GET进程
void GET(){
while(1)
{
…
wait(empty1);
wait(mutex1);
将信息送入buf1;
signal(mutex1);
signal(full1);
…
}
} (3分) //PRO进程
void PRO(){
while(1)
{
wait(full1);
wait(mutex1);
从buf1中取出信息; signal(mutex1); signal (empty1); wait(empty2); wait(mutex2);
将信息送入buf2; signal(mutex2); signal(full2);
}
} (4分)
//PUT进程
void PUT(){
while(1)
{
wait(full2);
wait(mutex2);
从buf2中取出信息; signal(mutex2); signal (empty2); } (3分)
(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);
pour water to the vat
signal(vat);
signal(full);
signal(pail);
}
}
(21) 在银行家算法中,若出现下述资源分配情况:
Process Allocation Need Available
P0 0 0 3 2 0 0 1 2 1 6 2 2
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 0 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
试问:
①该状态是否安全?
②若进程 P2 提出请求 Request( 1, 2, 2, 2 )后,系统能否将资源分配给它?
解:
现在对该时刻的状态进行安全分析:
由于Available向量为(1,6,2,2),所以Work向量初始化为(1,6,2,2)该时刻的安全性检查表如下:
如表所示,存在安全序列<P0,P3,P4,P2,P1>,所以该时刻处于安全状态。
由于Request2(1,2,2,2)<Available(1,6,2,2)且Request2(1,2,2,2)<Need2(2,3,5,6),所以先试着把P2所申请的资源分配给它,Available变为(0,4,0,0)
然后进行安全性检测,此时Available为(0,4,0,0),所以Work初始化为(0,4,0,0)。
此时的Work小于任意的Need[i]向量,所以系统处于不安全状态,即认为不能分配资源(0,2,0)给P2。
(22) 设系统中仅有一类数量为M的独占型资源,系统中有N个进程竞争该类资源,其中各进程对该类资源的最大需求量为W。
当M、N、W分别取下列值时,试判断哪些情形可能会发生死锁,为什么?
(1)M=2,N=2,W=1;(2)M=3,N=2,W=2;
(3)M=3,N=2,W=3;(4)M=5,N=3,W=2;
解:
不会发生死锁。
因为两个进程需要的最多资源量都是1个,而系统拥有的资源量正好是2个,两个进程都能顺利运行完,所以不会死锁。
不会发生死锁。
因为2个进程需要的最多的资源量都是2个,而系统拥有的资源量是3个,所以总会有1个进程得到2个资源后被运行,运行完毕后释放资源,于是另一个进程也能顺利运行完,所以不会死锁。
会发生死锁。
当一个进程占有1个资源,另一个进程占有2个资源时,2个进程都要再申请资源,但是系统已经没有资源了,所以就发生死锁了。
不会发生死锁。
因为三个进程需要的资源最大数量都是2个,而系统有5个资源,所以至少有2个进程可以拿到足够的资源运行,运行完后再释放资源,最后一个进程也能得到运行,所以不会死锁。
第五章
(1) 存储管理的任务和功能是什么?
解:
存储管理的主要任务是:
1.支持多道程序的并发执行,使多道程序能共享存储资源,在互不干扰的环境中并发执行。
2.方便用户,使用户减少甚至摆脱对存储器的管理,使用户从存储器的分配、保护和共享等繁琐事物中解脱出
来。
3.提高存储器的利用率和系统吞吐量。
4.从逻辑上扩充内存空间,支持大程序能在小的内存空间运行或允许更多的进程并发执行。
为了完成上述任务,现代操作系统的存储管理应具有以下功能:
1. 存储空间的分配和回收。
2. 地址转换,实现逻辑地址到物理地址的映射。
3. 主存空间的共享。
4. 主存空间的保护。
5. 主存储空间的扩充。
6. 对换,对换的主要任务是实现在内存和外存之间的全部或部分进程的对换,即将内存中处于阻塞状态的进程调。