操作系统OS习题答案

更新时间:2024-05-12 03:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章OS引论

1. 设计现代OS的主要目标是什么?

答:方便性,有效性,可扩充性和开放性。 2. OS的作用可表现为哪几个方面?

答:a. OS作为用户与计算机硬件系统之间的接口;

b. OS作为计算机系统资源的管理者; c. OS作为扩充机器。

3. 试说明推动多道批处理系统形成和发展的主要动力是什么? 答:不断提高计算机资源利用率和系统吞吐量的需要; 4. 何谓脱机I/O和联机I/O?

答:a. 脱机输入输出方式(Off-Line I/O)是为了解决人机矛盾及CPU和I/O设备之间速度不匹配而提出的。它减少了CPU的空闲等待时间,提高了I/O速度.具体内容是将用户程序和数据在一台外围机的控制下,预先从低速输入设备输入到磁带上,当CPU需要这些程序和数据时,在直接从磁带机高速输入到内存,从而大大加快了程序的输入过程,减少了CPU等待输入的时间,这就是脱机输入技术;当程序运行完毕或告一段落,CPU需要输出时,无需直接把计算结果送至低速输出设备,而是高速把结果输出到磁带上,然后在外围机的控制下,把磁带上的计算结果由相应的输出设备输出,这就是脱机输出技术。

b. 若这种输入输出操作在主机控制下进行则称之为联机输入输出方式。 5. 试说明推动分时系统形成和发展的主要动力是什么?

答:用户的需要.即对用户来说,更好的满足了人-机交互,共享主机以及便于用户上机的需求。

6. 试说明实时任务的类型和实时系统的类型。

答:a. 实时任务的类型按任务执行时是否呈现周期性来划分,分为周期性实时任务和非周

期性实时任务;根据对截止时间的要求来划分,分为硬实时任务和软实时任务; b. 通常把要求进行实时控制的系统统称为实时控制系统,把要求对信息进行实时处理的系统成为实时信息处理系统。

7. 实现多道程序应解决哪些问题? 答:a. 处理机管理问题;

b. 内存管理问题; c. I/O设备管理问题;

d. 文件管理问题; e. 作业管理问题.

8. 试比较单道与多道批处理系统的特点及优缺点。

答:a. 单道批处理系统是最早出现的一种OS,它具有自动性,顺序性和单道性的特点;多

道批处理系统则具有调度性,无序性和多道性的特点;

b. 单道批处理系统是在解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾中形成的,旨在提高系统资源利用率和系统吞吐量,但是仍然不能很好的利用系统资源;多道批处理系统是对单道批处理系统的改进,其主要优点是资源利用率高,系统吞吐量大;缺点是平均周转时间长,无交互能力。 9. 实现分时系统的关键问题是什么?应如何解决? 答:a. 关键问题:及时接收,及时处理;

b. 对于及时接收,只需在系统中设置一多路卡,多路卡作用是使主机能同时接收用户

从各个终端上输入的数据;对于及时处理,应使所有的用户作业都直接进入内存,在不长的时间内,能使每个作业都运行一次。 10.为什么要引入实时操作系统?

答:更好地满足实时控制领域和实时信息处理领域的需要。 11. OS具有哪几大特征?它的最基本特征是什么?

答:a. 并发(Concurrence),共享(Sharing),虚拟(Virtual),异步性(Asynchronism).

b. 其中最基本特征是并发和共享.

12 内存管理有哪些主要功能?它们的主要任务是什么?

答:a. 主要功能: 内存分配,内存保护,地址映射和内存扩充等.

b. 内存分配的主要任务是为每道程序分配内存空间,提高存储器利用率,以减少不可用的内存空间,允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。

内存保护的主要任务是确保每道用户程序都在自己的内存空间中运行,互不干扰。地址映射的主要任务是将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。

内存扩充的主要任务是借助虚拟存储技术,从逻辑上去扩充内存容量。

13 处理机管理具有哪些功能?它们的主要任务是什么? 答:a. 进程控制,进程同步,进程通信和调度。

b. 进程控制的主要任务是为作业创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换。进程同步的主要任务是对诸进程的运行进行调节。进程通信的任务是实现在相互合作进程之间的信息交换。调度分为作业调度和进程调度.作业调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为它们分配必要的资源;而进程调度的任务是从进程的就绪队列中,按照一定的算法选出一新进程,把处理机分配给它,并为它设置运行现场,是进程投入运行。

14 设备管理有哪些主要功能?其主要任务是什么?

答:a. 主要功能: 缓冲管理,设备分配和设备处理,以及虚拟设备等。

b. 主要任务: 完成用户提出的I/O请求,为用户分配I/O设备;提高CPU和I/O设备的利用率;提高I/O速度;以及方便用户使用I/O设备。

15 文件管理有哪些主要功能?其主要任务是什么?

答:a. 主要功能: 对文件存储空间的管理,目录管理,文件的读,写管理以及文件的共享和

保护;

b. 主要任务: 对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。 16 试在交互性,及时性和可靠性方面,将分时系统与实时系统进行比较。

答:a. 分时系统是一种通用系统,主要用于运行终端用户程序,因而它具有较强的交互能

力;而实时系统虽然也有交互能力,但其交互能力不及前者。

b. 实时信息系统对实用性的要求与分时系统类似,都是以人所能接收的等待时间来确定;而实时控制系统的及时性则是以控制对象所要求的开始截止时间和完成截止时间来确定的。

c. 实时系统对系统的可靠性要求要比分时系统对系统的可靠性要求高。 17 是什么原因使操作系统具有异步性特征?

答:a. 程序执行结果是不确定的,即程序是不可再现的。

b. 每个程序在何时执行,多个程序间的执行顺序以及完成每道程序所需的时间都是不确定的,即不可预知性。

18 试说明在MS-DOS 3.X以前的版本中,其局限性表现在哪几个方面? 答:a. 在寻址范围上,DOS只有1MB,远远不能满足用户需要.

b. DOS试单用户单任务操作系统,不支持多任务并发执行,与实际应用相矛盾. 19 MS-DOS由哪几部分组成?每部分的主要功能是什么? 略.

20 为什么Microsoft在开发OS/2时,选中了80286芯片?

答:设计OS/2的主要目标之一是既能充分发挥80286处理器的能力,又能运行在8086处理器环境下开发的程序.因为在80286内部提供了两种工作方式: 实方式和保护方式,使得Intel 80286处理器不仅提供了多任务并发执行的硬件支持,而且还能运行所有在8086下编写的程序。

21 OS/2的主要功能是什么? 答:a. 多任务.

b. 进程管理. c. 存储器管理. d. 文件管理.

e. 应用程序接口API. f. 表示管理。

22 多处理机OS有哪几种模式?各有何优缺点?

答:a. 2种模式: 非对称多处理模式(Asymmetric Multiprocessing Model)和对称多处理模式

(Symmetric Multiprocesing Model)。

b. 前者易于实现,但资源利用率低。后者优点是允许多个进程同时运行,缺点是必须小心控制I/O,以保证能将数据送至适当的处理器,同时还必须注意使各CPU的负载平衡。

23 试说明网络OS的主要功能。 答:a. 网络通信;

b. 资源管理; c. 网络服务; d. 网络管理; e. 互操作能力.

24 试比较网络OS和分布式OS。 答:a. 网络OS是基于由一些互联的自主计算机系统组成的计算机网络,以计算机技术和通

信技术高度发展为基础,能实现相互通信和相互合作功能的系统.分布式OS是指多个分散的处理单元,经互联网络连接而形成的系统。

b. 在分布性上,两者都具有分布处理功能,但网络OS的控制功能大多集中在某个(些)主机或网络服务器中,即集中式,而分布式OS则是较均匀地分布在系统的各个站点上,是完全分布式的。在并行性上,分布式OS的任务分配程序可将多个任务分配到多个处理单元上而实现并行,网络OS中通常无任务分配功能,每个用户的任务通常在自己(本地)的计算机上处理。在透明性上,两者都具透明性,但网络OS指在操作实现上的透明性,而分布式OS则在系统内部的细节上实现了很好的隐藏,即具有物理上的透明性。在共享性上,分布式OS是比较完全的实现共享,而网络OS共享的资源大多是在主机或网络服务器中。在健壮性上,分布式系统由于处理和控制功能是分布的,还拥有容错技术实现系统重构,因而具有很强的健壮性;而网络OS的控制功能大多集中在主机或服务器中,是系统具有潜在的不可靠性,健壮性差。

第二章

1. 试画出下面条语句的前趋图:

S1: a=5-x; S2: b=a*x; S3: c=4*x; S4: d=b+c; S5: e=d+3. S1->S2->S4->S5 ......../ ......S3

2. 试利用Bernstein条件证明上题中的S2和S3语句是可以并发执行的,而S3和S4语句是不能并发执行的? 证明:

R(S2)={x,a}, W(S2)={b}, R(S3)={x}, W(S3)={c};

可见,S2与S3的读集与写集两两不相交,S2与S3的读集之间也不相交,因而,他们满足Bernstein条件,S2与S3语句是可以并发执行的。

同理可证S3和S4不能满足Bernstein条件,是不能并发执行的。 3. 程序并发执行为什么会产生间断性?

答:因为程序在并发执行过程中存在相互制约性。 4. 程序并发执行为何会失去封闭性和可再现性? 答:因为程序并发执行时,多个程序共享系统中的各种资源,资源状态需要多个程序来改变,即存在资源共享性使程序失去封闭性;而失去了封闭性导致程序失去可再现性。 5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响?

答:为了使程序在多道程序环境下能并发执行,并能对并发执行的程序加以控制和描述,而

引入了进程概念。

影响: 使程序的并发执行得以实行。

6. 试从动态性,并发性和独立性上比较进程和程序?

答:a. 动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资

源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,是静态实体。

b. 并发性是进程的重要特征,同时也是OS的重要特征.引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。

c. 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位.而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行。

7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标志?

答:a. PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构.PCB中记录了操

作系统所需的用于描述进程情况及控制进程运行所需的全部信息.因而它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程。

b. 在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志。

8. 试说明进程在三个基本状态之间转换的典型原因。

答:a. 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态

变为执行状态。

b. 当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执

行状态转变为阻塞状态。

c. 当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态。 9. 为什么要引入挂起状态?该状态具有哪些性质?

答:a. 引入挂起状态处于5种需要: 终端用户的需要,父进程的需要,操作系统的需要,对

换的需要和负荷调节的需要。

b. 处于挂起状态的进程不能接收处理机调度。

10 在进行进程切换时,所要保存的处理机状态信息主要有哪些? 答:a. 进程当前暂存信息;

b. 下一条指令地址信息; c. 进程状态信息;

d. 过程和系统调用参数及调用地址信息. 11 试说明引起进程创建的主要事件。 答:a. 用户登录;

b. 作业调度; c. 提供服务; d. 应用请求.

12 试说明引起进程撤消的主要事件。 答:a. 正常结束;

b. 异常结束; c. 外界干预;

13 在创建一个进程时,需完成的主要工作是什么?

答:a. 操作系统发现请求创建新进程事件后,调用进程创建原语Creat();

b. 申请空白PCB; c. 为新进程分配资源; d. 初始化进程控制块; e. 将新进程插入就绪队列.

14 在撤消一个进程时,需完成的主要工作是什么? 答:a. OS调用进程终止原语;

b. 根据被终止进程的标志符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;

c. 若被终止进程正处于执行状态,应立即中止该进程的执行,并设置调度标志为真; d. 若该进程还有子孙进程,还应将其所有子孙进程予以终止;

e. 将该进程所拥有的全部资源,或者归还给其父进程,或者归还给系统;

f. 将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。 15 试说明引起进程阻塞或被唤醒的主要事件是什么? 答:a. 请求系统服务;

b. 启动某种操作; c. 新数据尚未到达; d. 无新工作可做。

16 试从调度性,并发性,拥有资源及系统开销几个方面,对进程和线程进行比较。

答:a. 在引入线程的OS中,把线程作为调度和分派的基本单位,而把进程作为资源拥有的

基本单位;

b. 在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使OS具有更好的并发性;

c. 进程始终是拥有资源的一个独立单位,线程自己不拥有系统资源,但它可以访问其隶属进程的资源;

d. 在创建,撤消和切换进程方面,进程的开销远远大于线程的开销。 17 什么是用户级线程和内核级线程?并对它们进行比较。

答:a. 内核级线程是依赖于内核的,它存在于用户进程和系统进程中,它们的创建,撤消

和切换都由内核实现;用户级线程仅存在于用户级中,它们的创建,撤消和切换不利用系统调用来实现,因而与内核无关,内核并不知道用户级线程的存在。

b. 内核级线程的调度和切换与进程十分相似,调度方式采用抢占式和非抢占式,调度算法采用时间轮转法和优先权算法等,当由线程调度选中一个线程后,再将处理器分配给它;而用户级线程通常发生在一个应用程序的诸线程之间,无需终端进入OS内核,切换规则也较简单,因而,用户级线程的切换速度较快。用户级线程调用系统调用和调度另一个进程执行时,内核把它们看作是整个进程的行为,内核级线程调用是以线程为单位,内核把系统调用看作是该线程的行为。对于用户级线程调用,进程的执行速度随着所含线程数目的增加而降低,对于内核级线程则相反。 18 在Solaris OS中,设置了哪几种线程?轻型线程的作用是什么? 答:a. 用户级线程,内核级线程和轻型线程;

b. 作用: 由LWP实现了在内核与用户级线程之间的隔离,从而使用户级线程与内核无关。

19 在Solaris OS中,用户级线程是通过什么方式来访问内核的?

答:通过LWP来访问内核. LWP可为内核所识别,但不能识别用户级线程,通过建立用户

级线程与LWP之间的连接,可以实现用户级线程与内核的通信。

第三章

1. 什么是临界资源和临界区?

答:a. 一次仅允许一个进程使用的资源成为临界资源。

b. 在每个进程中,访问临界资源的那段程序称为临界区。

2. 为什么进程在进入临界区之前,应先执行\进入区\代码,在退出临界区后又执行\退出区\代码? 答:为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问

的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为\进入区\代码;在退出临界区后,必须执行\退出区\代码,用于恢复未被访问标志。

3. 同步机构应遵循哪些基本准则?为什么? 答:a. 空闲让进.

b. 忙则等待. c. 有限等待. d. 让权等待.

4. 试从物理概念上来说明记录型信号量和wait和signal操作? (有待讨论).

5. 你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条准则? 答:a. 在整型信号量机制中,未遵循\让权等待\的准则。

b. 记录型信号量机制完全遵循了同步机构的\空闲让进,忙则等待,有限等待,让权等待\四条准则。

6. 在生产者-消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有何影响?

生产者-消费者问题可描述如下:

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; . .

wait(empty); wait(mutex);

buffer(in):=nextp; in:=(in+1) mod n; signal(mutex);

/* ************** */ signal(full);

/* ************** */ until false; end

consumer: begin repeat wait(full); wait(mutex);

nextc:=buffer(out); out:=(out+1) mod n; signal(mutex);

/* ************** */ signal(empty);

/* ************** */ consume the item in nextc; until false; end parend end

可见,生产者可以不断地往缓冲池送消息,如果缓冲池满,就会覆盖原有数据,造成数据混乱.而消费者始终因wait(full)操作将消费进程直接送入进程链表进行等待,无法访问缓冲池,造成无限等待。

7. 在生产者-消费者问题中,如果将两个wait操作即wait(full)和wait(mutex)互换位置;或者是将signal(mutex)与signal(full)互换位置结果会如何? 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; . .

wait(empty); wait(mutex);

buffer(in):=nextp; in:=(in+1) mod n;

/* ***************** */ signal(full); signal(mutex);

/* ***************** */ until false; end

consumer: begin repeat

/* **************** */ wait(mutex); wait(full);

/* **************** */ nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty);

consume the item in nextc; until false; end parend end

a. wait(full)和wait(mutex)互换位置后,因为mutex在这儿是全局变量,执行完wait(mutex),则mutex 赋值为0,倘若full也为0,则该生产者进程就会转入进程链表进行等待,而生产

者进程会因全局变量mutex为0而进行等待,使full始终为0,这样就形成了死锁。 b. 而signal(mutex)与signal(full)互换位置后,从逻辑上来说应该是一样的。

8. 我们为某临界区设置一把锁W,当W=1时,表示关锁;W=0时,表示锁已打开.试写出开锁原语和关锁原语,并利用它们去实现互斥。 开锁原语: unlock(W): W=0; 关锁原语: lock(W);

if(W==1) do no_op; W=1;

利用开关锁原语实现互斥: var W: semaphore:=0; begin parbegin process : begin repeat lock(W);

critical section unlock(W);

remainder section until false; end parend

9. 试修改下面生产者-消费者问题解法中的错误: producer: begin repeat . .

producer an item in nextp; wait(mutex);

wait(full); /* 应为wait(empty),而且还应该在wait(mutex)的前面 */ buffer(in):=nextp;

/* 缓冲池数组游标应前移: in:=(in+1) mod n; */ signal(mutex); /* signal(full); */ until false; end

consumer: begin repeat

wait(mutex);

wait(empty); /* 应为wait(full),而且还应该在wait(mutex)的前面 */ nextc:=buffer(out);

out:=out+1; /* 考虑循环,应改为: out:=(out+1) mod n; */ signal(mutex);

/* signal(empty); */ consumer item in nextc; until false; end

10 试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法.

设初始值为1的信号量c[I]表示I号筷子被拿(I=1,2,3,4,...,2n),其中n为自然数。 send(I): Begin

if I mod 2==1 then {

P(c[I]);

P(c[I-1 mod 5]); Eat;

V(c[I-1 mod 5]); V(c[I]); } else {

P(c[I-1 mod 5]); P(c[I]); Eat; V(c[I]);

V(c[I-1 mod 5]); } End

11 在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲的同步算法。 int mutex=1; int empty=n; int full=0; int in=0; int out=0; main() {

cobegin send(); obtain(); coend }

send()

{

while(1) { . .

collect data in nextp; . .

wait(empty); wait(mutex); buffer(in)=nextp; in=(in+1) mod n; signal(mutex); signal(full); }

}//send obtain() {

while(1) {

wait(full); wait(mutex);

nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty);

culculate the data in nextc; }//while }//obtain

12 画图说明管程由哪几部分组成?为什么要引入条件变量?

答:管程由三部分组成:局部于管程的共享变量说明;对该数据结构进行操作的一组过程;

对局部于管程的数据设置初始值的语句.。(图见P80) 因为调用wait原语后,使进程等待的原因有多种,为了区别它们,引入了条件变量。 13 如何利用管程来解决生产者-消费者问题? (见P82)

14 什么是AND信号量?试利用AND信号量写出生产者-消费者问题的解法。

答:为解决并行所带来的死锁问题,在wait操作中引入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; . .

wait(empty);

wait(s1,s2,s3,...,sn); //s1,s2,...,sn为执行生产者进程除empty外其余的条件 wait(mutex);

buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full);

signal(s1,s2,s3,...,sn); until false; end

consumer: begin repeat wait(full);

wait(k1,k2,k3,...,kn); //k1,k2,...,kn为执行消费者进程除full外其余的条件 wait(mutex);

nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty);

signal(k1,k2,k3,...,kn); consume the item in nextc; until false; end parend end

15 在单处理机环境下,进程间有哪几种通信方式? 答:a. 共享存储器系统通信方式;

b. 消息传递系统通信方式; c. 管道通信方式.

16 试比较进程间的低级通信工具与高级通信工具。

答:用户用低级通信工具实现进程通信很不方便,因为其效率低,通信对用户不透明,所有

的操作都必须由程序员来实现。而高级通信工具则可弥补这些缺陷,用户可直接利用操作系统所提供的一组通信命令,高效地传送大量的数据。 17 消息队列通信机制应有哪几方面功能? 略

18 试比较消息队列与管道通信机制。

答:a. 所谓管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文

件,又称pipe文件。管道通信是属于共享存储器系统的。

b. 消息队列通信机制属于消息传递系统通信机制,存在通信链路,有消息的格式,有若干缓冲队列,采用独特的发送原语和接收原语。 (详见P89-90)

第四章

1. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?

答:a. 作业调度又称宏观调度或高级调度,其主要任务是按一定的原则对外存上处于后备

状态的作业进行选择,给选中的作业分配内存,输入输出设备等必要的资源,并建立相应的进程,以使该作业的进程获得竞争处理机的权利。

b. 进程调度又称微观调度或低级调度,其主要任务是按照某种策略和方法选取一个处于就绪状态的进程,将处理机分配给它。

c. 为了提高内存利用率和系统吞吐量,引入了中级调度. 2. 在作业调度中需做出哪两个决定? 答:a. 接纳多少个作业;

b. 接纳哪些作业.

3. 在剥夺调度方式中,有哪些剥夺原则? 答:a. 时间片原则;

b. 优先权原则;

c. 短作业(进程)优先原则.

4. 在OS中引起进程调度的主要因素有哪些? (有待讨论)

5. 选择调度方式和调度算法时,应遵循的准则是什么?

答:a. 面向用户的准则有周转时间短,响应时间快,截止时间的保证,以及优先权准则。

b. 面向系统的准则有系统吞吐量高,处理机利用率好,各类资源的平衡利用。 6. 在批处理系统,分时系统和实时系统中,各采用哪几种进程(作业)调度算法? (有待讨论)

7. 为什么说多级反馈队列能较好地满足各种用户的需要?

答:a. 对于终端型作业用户,由于终端型作业用户所提交的作业,大都属于交互型作业,

系统只要能使这些作业(进程)在第一队列所规定的时间片内完成,便可使终端型作业用户都感到满意。

b. 对于短批处理作业用户,很短的批处理型作业如果仅在第一队列中执行一个时间片即可完成,便可获得与终端型作业一样的相应时间.对于稍长的作业,通常也只需在第二队列和第三队列中各执行一个时间片即可完成,其周转时间仍然很短。 c. 对于长批处理作业用户,用户也不必担心其作业长期得不到处理。 8. 在按时间片轮转调度算法中,在确定时间片的大小时,应考虑哪些因素? 答:a. 系统对相应时间的要求;

b. 就绪队列中进程的数目; c. 系统的处理能力。

9. 为实现实时调度,对实时系统提出了哪些要求? 答:a. 要提供必要的调度信息;

b. 在调度方式上要具体情况具体分析; c. 要具有快速响应外部中断的能力; d. 快速任务分派。

10 目前常用的调度方式和算法,能否应用到实时系统中?

答:a. 对于时间片轮转调度算法,是一种常用于分时系统的调度算法;

b. 对于非抢占式优先权调度算法,可用于要求不太严格的实时控制系统中;

c. 对于基于时钟中断抢占的优先权调度算法,有很好的响应效果,可用于大多数的实时系统中;

d. 对于立即抢占(Immediate Preemption)的优先权调度,要求操作系统具有快速响应外部时间的能力。

11 在多处理机系统中,比较有代表性的线程调度方式有哪几种? 答:a. 自调度方式;

b. 成组调度;

c. 专用处理机分配调度方式。 12 试比较自调度和成组调度?

答:a. 自调度方式是系统中有一个公共的线程或进程的就绪队列,所有的处理机在空闲时,

都可自己从该队列中取出一个进程或线程运行;

b. 成组调度是由系统将一组相关的进程或线程,同时分配到一组处理机上运行,进程或线程与处理机一一对应;

c. 在一般情况下,成组调度的性能优于自调度,因为自调度存在瓶颈,低效,线程切换频繁等问题,而成组调度可减少线程的切换和调度的开销,因而目前得到了广泛的认可。

13 在OS/2中采用哪种调度方式和调度算法?

答:在OS/2中采用的是抢占式调度方式,多优先级的抢占式调度算法。 14 何谓死锁?产生死锁的原因和必要条件是什么?

答:a. 死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永

远不能再向前推进;

b. 产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法;

c. 必要条件是: 互斥条件,请求和保持条件,不剥夺条件和环路等待条件。

15 在解决死锁问题的几个方法中,哪种方法最容易实现?哪种方法使资源的利用率最高? 答:a. 解决死锁可归纳为四种方法: 预防死锁,避免死锁,检测死锁和解除死锁;

b. 其中,预防死锁是最容易实现的; c. 避免死锁使资源的利用率最高。 16 请详细说明可通过哪些途径预防死锁?

答:a. 摈弃\请求和保持\条件,就是如果系统有足够的资源,便一次性地把进程所需的所有

资源分配给它;

b. 摈弃\不剥夺\条件,就是已经保持了资源的进程,当它提出新的资源请求而不能立即得到满足时,必须释放它已经保持的所有资源,待以后需要时再重新申请; c. 摈弃\环路等待\条件,就是将所有资源按类型排序标号,所有进程对资源的请求必须严格按序号递增的次序提出。

17 在银行家算法的例子中,如果P0发出的请求向量由Request0(0,2,0)改为Request0(0,1,0),问系统可否将资源分配给它? 可以。

首先,Request0(0,1,0)<=Need0(7,4,3), Request0(0,1,0)<=Available(2,3,0);

分配后可修改得一资源数据表(表略),进行安全性检查,可以找到一个安全序列{P1,P4,P3,P2,P0},或{P1,P4,P3,P0,P2},因此,系统是安全的,可以立即将资源分配给P0。

第五章

1. 可采用哪几种方式将程序装入内存?它们分别适用于何种场合?

答:a. 首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的

目标模块和所需的库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存;

b. 装入模块的方式有: 绝对装入方式,可重定位方式和动态运行时装入方式; c. 绝对装入方式适用于单道程序环境下; d. 可重定位方式适用于多道程序环境下;

e. 动态运行时装入方式也适用于多道程序环境下。 2. 何谓静态链接及装入时动态链接和运行时的动态链接?

答:a. 静态链接是指事先进行链接形成一个完整的装入模块,以后不再拆开的链接方式;

b. 装入时动态链接是指目标模块在装入内存时,边装入边链接的链接方式; c. 运行时的动态链接是将某些目标模块的链接推迟到执行时才进行。 3. 在进行程序链接时,应完成哪些工作? 答:a. 对相对地址进行修改;

b. 变换外部调用符号.

4. 在动态分区分配方式中,可利用哪些分区分配算法? 答:a. 首次适应算法;

b. 循环首次适应算法; c. 最佳适应算法。

5. 在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?

答:应在每个分区的起始地址部分,设置一些用于控制分区分配的信息,以及用于链接各分

区的前向指针;在分区尾部则设置一后向指针,通过前,后向指针将所有的分区链接成一个双向链。

6. 为什么要引入动态重定位?如何实现?

答:a. 为了在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地

址转换成物理地址,引入了动态重定位。

b. 可在系统中增加一个重定位寄存器,用它来装入(存放)程序在内存中的起始地址,程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的,从而实现动态重定位。

7. 试用类Pascal语言来描述首次适应算法进行内存分配的过程。 (略)

8. 在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?

答:a. 回收区与插入点的前一个分区相邻接,此时可将回收区与插入点的前一分区合并,

不再为回收分区分配新表项,而只修改前邻接分区的大小;

b. 回收分区与插入点的后一分区相邻接,此时合并两区,然后用回收区的首址作为新空闲区的首址,大小为两者之和;

c. 回收区同时与插入点的前后两个分区邻接,此时将三个分区合并,使用前邻接分区的首址,大小为三区之和,取消后邻接分区的表项;

d. 回收区没有邻接空闲分区,则应为回收区单独建立一个新表项,填写回收区的首址和大小,并根据其首址,插入到空闲链中的适当位置。 9. 在系统中引入对换后带有哪些好处?

答:能将内存中暂时不运行的进程或暂时不用的程序和数据,换到外存上,以腾出足够的内

本文来源:https://www.bwwdw.com/article/k56g.html

Top