1、操作系统引论1、多道程序设计:P7答:进一步提高资源的利用率和系统吞吐量,在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业高度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享 CPU 和系统中各种资源。在 OS 中引入多道程序设计技术可带来以下好处:提高 CPU 和利用率、可提高内存和 I/O 设备利用率、增加系统吞吐量。2、进程:P37-P38答:程序的一次执行。进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程是进程实体的运行过程。是系统进行资源
2、分配和调度的一个独立单位。3、作业:P84答:作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程度的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。4、任务:答:从系统资源分配的角度通过进程在系统中运行。5、文件:P204答:文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。6、虚拟存储:P142答: 是指具有请求调入功能和置换功能,能从逻
3、辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速 度,而每位的成本却又接近于外存。可见,虚拟存储技术是一种性能非常优越的存储器管理技术,故被广泛地应用于大、中、小型机器和微型机中。7、接口:P22P23答:用户接口:它是提供给用户使用的接口,用户可通过该接口取得操作系统的服务;程序接口:它是提供给程序员在编程时使用的接口,是用户程序取得操作系统服务的惟一途径。8、进程:P73(同第 2 题)答:9、系统调用:P261答:在操作系统中提供了系统调用,使应用程序可以通过系统调用的方法,间接调用操作系统的相关过程,取得相应的服务。系统调用在本质
4、上是应用程序请求 OS 内核完成某功能时的一种过程调用,但它是一种特殊的过程调用。10、死锁:P103答:是指多个进程的运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。第一章1、设计现代 OS 的主要目标是什么?P1答:其主要目标是有效性、方便性、可扩充性、开放性。2、OS 的作用可表现在哪几个方面?P2-P3答:1、OS 作为用户与计算机硬件系统之间的接口; 2、OS 作为计算机资源的管理者;3、OS 实现了对计算机资源的抽象;3、为什么说 OS 实现了计算机资源的抽象?P4答:完全无软件的计算机系统(即裸机),它向用户提供的是实际硬件接
5、口(物理接口),用户必须对物理接口的实现细节有充分的了解,并利用机器指令进行编程,因此该物理机器必定是难以使用的。为了方便用户使用 I/O 设备,人们在裸机上覆盖上一层 I/O 设 备管理软件。通常把覆盖了上述软件的机器称为扩充机器或虚机器。它向用户(进程)提供了一个对硬件操作的抽象模型,用户更容易地使用计算机便件资源。由该 层软件实现了对计算机硬件操作的第一个层次的抽象。为了方便用户使用文件系统,人们又在第一层软件上再覆盖上一层用于文件的管理软件,同样由它来实现对文 件操作的细节,并向上提供一组对文件进行存取操作的命令,用户可利用这组命令进行文件的存取。此时用户所看到的是一台功能更强、使用更
6、方便的虚机器。该层 软件实现了对硬件资源操作的第二个层次的抽象。OS 是 铺设在计算机硬件上的多层系统软件,它们不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它们实现了对计算机硬件操作的多个层次的抽象。值得说明 的,对一个硬件在底层进行抽象后,在高层还可再次对该资源进行抽象,成为更高层的抽象模型。随着抽象层次的提高,抽象接口所提供的功能就越来越强,用户使 用起来也更加方便。4、试说明推动多道批处理系统形成和发展的主要动力是什么?P4-P5答:为了进一步提高资源的利用率和系统吞吐量,在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业高度程序按一定的
7、算法从后备队列中选择若干个作业调入内存,使它们共享 CPU和系统中各种资源。在 OS 中引入多道程序设计技术可带来以下好处:提高 CPU和利用率、可提高内存和 I/O 设备利用率、增加系统吞吐量。主要动力:1、不断提高计算机资源的利用率;2、方便用户;3、器件的不断更新换代;4、计算机体系结构的不断发展;5、何谓脱机 I/O 和联机 I/O?P6答:由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,该技术是脱机输入/输出方式;反之,在主机的直接控制下进行输入/输出的方式称为联机输入/ 输出)ON-LINE I/O)方式。1、减少了 CPU 的空闲时间
8、;2、提高了 I/O 速度。6、试说明推动分时系统形成和发展的主要动力主什么 ?P9答:分时系统它能很好地将一台计算机提供给多个用户同时使用,提高计算机的利用率。1、人- 机交互;2、共享主机;3、便于用户上机。7、实现分时系统的关键问题是什么 ?应如何解决?P10答:其最关键的问题是如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回给用户。用户可继续键入下一条命令,此即人-机交互。应强调指出,即使有多个用户同时通过自己的键盘键入命令,系统也应能全部地及时接收并处理这些命令。1、及时接收;2、及时处理;8、为什么要引入实时 OS?
9、P11答:实时系统是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。1、应用需求;2、实时任务;9、什么是硬实时任务和软实时任务?试举例说明。P12答:硬实时任务是系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。软实时任务是它也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。举例说明:硬实时任务为订车票、工业;软实时任务为网页更新;10、在 8 位微机和 16 位微机中,占据了统治地位的是什么 操作系统?P13答:在 8 位微机和 16 位微机中,最有代表性的单用户单任务微机操作
10、系统是CP/M 和 MS-MOS。11、试列出 Windows OS 中五个主要版本,并说明它们分别较之前一个版本有何改进。P13答:1、WIN1.0 和 WIN2.0;2、WIN3.1 版本,针对 386 和 486 等 32 位微机开发的,较之以前的操作系统有着重大的改进,引入了友善的图形用户界面,支持多任务和扩展内存的功能,使计算机更好使用,从而成为 386 和 486 等微机的主流操作系统;3、1 WIN95、WIN3.1 有许多重大改进,彩了全 32 位处理技术,并兼容了以前的 16 位应用程序,在该系统中还集成了支持 INTERENET 的网络功能。4、WIN98 把微软公司自己开
11、发的 INTERNET 浏览器整合到系统中,大大方便了用户上网浏览,另一个特点是增加了对多媒体的支持。5、32 位版本的WIN XP。 12、试从交互性、及时性以及可靠性方面,将分时系统与实时系统进行比较。P12答:1、及时性,实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截时间来确定的,一般为秒级到毫秒级,甚至有的要低于 100 微秒。2、交互性,实时信息处理系统虽然也具有交互性,但这里人与系统的交互仅限于访问系统中某些特定的专用服务程序。3、可靠性,分时系统虽然也要求系统可靠,但相比之下,实
12、时系统则要求系统具有高度的可靠性。13、OS 有哪几个特征?其最基本的特征是什么?P14答:OS 有并发、共享、虚拟和异步这四个基本特征。并发特征是操作系统最重要的特征;14、处理机管理有哪些主要功能?它们的主要任务是什么?P18答:主要功能:创建和撤消进程(线程),对诸进程(线程)的运行进行协调,实现进程(线程)之间的信息交换,以及按照一定的算法把处理机分配给进程(线程)。1、进程控制:进程控制的主要功能是为作业创建进程,撤消已结束的进程,以及控制进程在运行过程中的状态转换。2、进程同步:进程同步的主要任务是为多个进程(含线程)的运行进行协调。3、 进程通信:在多道程序环境下,为了加速应用程
13、序的运行,应系统中建立多个进程,并且再为一个进程建立若干个线程,由这些进程(线程)相互合作去完成一个共 同的任务。而在这些进程(线程)之间,又往往需要交换信息。当相互合作的进程(线程)处于同一计算机系统时,通常在它们之间是采用直接通信方式,即由源进 程利用发送命令直接将消息(Message)挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息。4、调度:在后备队列上等待的每个作业都需经过调度才能执行(1)作业调度:作业调度的基本任务是从后备队列中按照一定的算法,选择出若干个作业,为它们分配运行所需的资源(首行是分配内存)。(2)进程调度:进程调度的任务是从进程的就绪队列中
14、,按照一定的算法选 出一个进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。15、内存管理有哪些主要功能?它们的主要任务是什么?P20答:主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及能从逻辑上扩充内存。有内存分配、内存保护、地址眏射和内存扩充等功能。1、内存分配:内存分配的主要任务是为每道程序分配内存空间,使它们“各得其所”;提高存储器的利用率,以减少不可用的内存空间;允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。2、内存保护:内存保护的主要任务是确保每道用户程序都只在自己的内存空间内运行彼此互不干优;绝不允许用户程序访
15、问操作系统的程序和数据;也不允许用户程序转移到非共享的其它用户程序中去执行。3、地址映射:存储器管理必须提供地址映射功能,以将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成。4、内存扩充:存储器管理中的内存扩充任务并非是去扩大物理内存的容量,而是借助于虚拟存储技术,从逻辑上去扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序并发运行。16、设备管理有哪些主要功能?其主要任务是什么?P21答:主要任务是:完成用户进程提出的 I/O 请求;为用户进程分配其所需的 I/O设备;提高 CPU 和 I/O 设备的利用率;提高 I/O 速度
16、;方便用户使用 I/O 设备。有缓冲管理、设备分配和设备处理以及虚拟设备等功能。1、缓冲管理:在 I/O 设备和 CPU 之间引入缓冲,提高 CPU 的利用率,进而提高系统吞吐量。在现代计算机系统中,都无一例外地在内存中设置了缓冲区,而且还可通过增加缓冲区容量的方法来改善系统的性能。对于不同的系统,可以采用不同的缓冲区机制。2、设备分配:设备分配的基本任务是根据用户进程的 I/O 请求、系统的现有资源情况以及按照某种设备的分配策略,为之分配其所需的设备。如果在 I/O 设备和 CPU 之间还存在着设备控制器和 I/O 通道时,还须为分配出去的设备分配相应的控制器和通道。3、设备处理:设备处理程
17、序又称为设备驱动程序。其基本任务是用于实现 CPU 和设备控制器之间的通信,即由 CPU 向设备控制器发出 I/O 命令,要求它完成指定的 I/O 操作;反之,由CPU 接收从控制器发来的中断请求,并给予迅速的响应和相应的处理。17、文件管理有哪些主要功能?其主要任务是什么?P21-P22答:文件管理的主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。为此,文件存储空间的管理、目录管理、文件的读/写管理,以及文件的共享与保护等功能。1、文件存储空间的管理:其主要任务是为每个文件分配必要的外存空间,提高外存的利用率,并能有助于提高文件系统的存、取速度。2、目录管理:目录
18、管理的主要任务是为每个文件建立 其目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取,即用户只须提供文件名便可对该文件进行存取。3、文件的读/ 写管理和保护:文件的读/ 写管理其该功能是根据用户的请求,从外存中读取数据,或将数据写入外存。文件保护其为了防止系统中的文件被非法窃取和破坏,在文件系统中必须提供有效的存取控制功能。18、是什么原因使操作系统具有异步性特征?答:进程是以人们不可预知的速度向前推进,此即进程的异步性。第二章1、什么是前趋图?为什么要引入前趋图?P35答:前趋图是一个有向无循环图,记为 DAG,用于描述进程之间招待的前后关系。可用来简单讲述进程之间的关系。2、试画
19、出下面四语句的前趋图:P36S1:a:=x+y;S2:b:=z+1;S3:c:=a-b;S4:w:=c+1;3、为什么程序并发执行会产生间断性特征?P36-P37答:因程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系。4、程序并发执行时为什么会失去封闭性和可再现性?P37答:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行换去了封闭性,这样,某程序在执行时,必然会受到其它程序的影响。程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。5、在操作系统中为什么要
20、引入进程的概念?它会产生什么样的影响?P37?答:因为使程序能并发执行,且为了对并发执行的程序加以描述和控制,人们引入了“进程”的概念。6、试从动态性、并发性和独立性上比较进程和程序。P37-P38答:动态性进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。并发性这是指多个进程实体同存于内存中,且能在一段时间内同时运行。独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立 PCB 的程序都不能作为一个独立的单位参与运行。7、试说明 PCB 的作用,为什么说 PCB 是进程存在的唯一标志?P41答:进程控制块的作用是一个在多道程序环境下不能独立运
21、行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。-在进程的整个生命期中,系统总是通过 PCB 对进程进行控制的,系统是根据进程的 PCB 而不是任何别的什么而感知到该进程的存在的,所以说,PCB 是进程存在的惟一标志。8、试说明进程在三个基本状态之间转换的典型原因。P38答: 处于就绪状态的进程,在调度程序为之分配了处理机之后,该进程便可执行,相应地,它就由就绪状态转变为执行状态。正在执行的进程也称为当前进程,如果因分 配给它的时间片已完而被暂停执行时,该进程便由执行状态又回复到就绪状态;如果因发生某事件而使进程的执行受阻,使之无法继续执行,该进程将由执行状态
22、转 变为阻塞状态。9. 为什么要引入挂起状态?该状态有哪些性质?a. 引入挂起状态主要是出于 4 种需要(即引起挂起的原因): 终端用户的请求,父进程请求,负荷调节的需要,操作系统的需要。 b. 被挂起的进程是处于静止状态,并且不能直接被处理机调度。11. 试说明进程在三个基本状态之间转换的典型原因. a. 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态变为执行状态. b. 当前进程因发生某事件而无法执行,如访问已被占用的临界资源,就会使进程由执行状态转变为阻塞状态. c. 当前进程因时间片用完而被暂停执行,该进程便由执行状态转变为就绪状态. 12. 为什么要引入挂起
23、状态?该状态具有哪些性质? a. 引入挂起状态处于 5 中需要 : 终端用户的需要,父进程的需要,操作系统的需要,对换的需要和负荷调节的需要. b. 处于挂起状态的进程不能接收处理机调度. 14 试说明引起进程创建的主要事件. 用户登陆;作业调度;提供服务;应用请求; 16 在创建一个进程时,需完成的主要工作是什么? a. 操作系统发现请求创建新进程事件后,调用进程创建原语 Creat(); b. 申请空白 PCB; c. 为新进程分配资源; d. 初始化进程控制块; e. 将新进程插入就绪队列. 17. 为什么进程在进入临界区之前应先执行“进入区 ”代码?而在退出前又要执行“退出区”代码?为
24、了实现多个进程对临界资源的互斥访问,必须在临界区之前加一段用于检查临界资源是否正在被访问的代码,如未被访问,该进程可进入临界区对此临界资源进行访问;如正被访问,则该进程不能进入临界区访问临界资源。在退出临界区后,执行恢复访问标志的代码为“退出区”,而在退出前执行“退出区”代码主要是为了使其它进程能再访问此临界资源。18. 同步机构应遵循哪些基本准则?为什么?a. 空闲让进、忙则等待、有限等待、让权等待四条准则 b. 为实现进程能互斥地进入到自己的临界区19. 试从物理概念上说明记录型信号量 wait 和 signal。Wait(S):当 S.value0 时,表示目前系统中这类资源还有可用的,
25、执行一次wait 操作,意味着进程请求一个单位的该类资源,是系统中可供分配的该类资源减少一个,因此描述为 S.value:=S.value-1;当S.value1) then block(W.L)unlock(W): W:=W-1;if(W0) then wakeup(W.L)例子:Var W:semaphore:=0;beginrepeatlock(W);critical sectionunlock(W);remainder sectionuntil false;end26. 试修改下面生产者消费者问题解法中的错误: producer:beginrepeatproduce an item i
26、n nextp;wait(mutex);wait(full); buffer(in):=nextp;signal(mutex); until false;endconsumer:beginrepeatwait(mutex);wait(empty);nextc:=buffer(out);out:=out+1;signal(mutex); consume item in nextc;until false;end27、试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法。P61答:Var chopstick:arrayo,4 of semaphore;所有信号量均被初始化为 1,第 i 位
27、哲学家的活动可描述为:RepeatWait(chopsticki);Wait(chopstick(i+1) mod 5);.Eat;.Signal(chopsticki);Signal(chopstick(i+1) mod 5)Eat;.Think; Until false;28. 在测量控制系统中的数据采集任务时,把所采集的数据送往一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两任务共享单缓冲区的同步算法。a. Var mutex, empty, full: semaphore:=1, 1, 0;gather:beginrepeatgather data in
28、nextp;wait(empty);wait(mutex);buffer:=nextp;signal(mutex);signal(full);until false;endcompute:beginrepeatwait(full);wait(mutex);nextc:=buffer;signal(mutex);signal(empty);compute data in nextc;until false;endb. Var empty, full: semaphore:=1, 0;gather:beginrepeatgather data in nextp;wait(empty);buffer
29、:=nextp;signal(full);until false;endcompute:beginrepeatwait(full);nextc:=buffer;signal(empty);compute data in nextc;until false;end33. 试比较进程间的低级通信工具与高级通信工具.用户用低级通信工具实现进程通信很不方便,因为其效率低,通信对用户不透明,所有的操作都必须由程序员来实现,而高级通信工具则可弥补这些缺陷,用户可直接利用操作系统所提供的一组通信命令,高效地传送大量的数据。36. 为什么要在 OS 中引入线程?在 OS 中引入进程的目的,是为了使多个程序能并
30、发执行,以提高资源利用率和系统吞吐量。在 OS 中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使 OS 具有更好的并发性。38. 试从调度性,并发性,拥有资源及系统开销方面对进程和线程进行比较.a. 调度性。在传统的操作系统中,拥有资源的基本单位和独立调度、分派的基本单位都是进程,在引入线程的 OS 中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位; b. 并发性。在引入线程的 OS 中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使 OS 具有更好的并发性; c. 拥有资源。无论是传统的操作系统,还是引入了线程的操作系统,进程
31、始终是拥有资源的一个基本单位,而线程除了拥有一点在运行时必不可少的资源外,本身基本不拥有系统资源,但它可以访问其隶属进程的资源;d. 开销。由于创建或撤销进程时,系统都要为之分配和回收资源,如内存空间等,进程切换时所要保存和设置的现场信息也要明显地多于线程,因此,操作系统在创建、撤消和切换进程时所付出的开销将显著地大于线程。第三章1、高级调度与低级调度的主要任务是什么?为什么要引入中级调度?P84 P86 P87答: 高级调度其主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象是作业。低级调度其主要功能是保存处理机的现场信 息;按某种算法先取进程;把处理器
32、分配给进程。中级调度:引入中级调度的主要目的的为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程不 再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。2、何谓作业、作业步和作业流?P84答: 作业:作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程度的运行进行控制。在批处理 系统中,是以作业为基本单位从外存调入内存的。作业步:通常,在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结 果。作业流:若干个作业进入系统后,被依次存放在外存上,这便形
33、成了输入的作业流;在操作系统的控制下,逐个作业进程处理,于是便形成了处理作业流。3、在什么情况下需要使用作业控制块 JCB?其中包含了哪些内容?P85答:为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块。在 JCB 中所包含的内容因系统而异,通常应包含的内容有:作业标识、用户名称、用户帐户、作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业已运行时间)、资源需求(预计运行时间、要求内存大小、要求 I/O 设备的类型和数量等)、进入系统时间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等。4、在作业调度中应如何确定接纳多少个
34、作业和接纳哪些作业?P85答: 作业调度每次要接纳多少个作业进入内存,取决于多道程序度,即允许多少个作业同时在内存中运行。应将哪些作业从外存调入内存,这将取决于所采用的调度算 法。最简单的是先来先服务调度算法,这是把将最早进入外存的作业最先调入内存;较常用的一种算法是短作业优先调度算法,是将外存上最短的作业最先调入内 存;另一个较常的是基于作业优先级的调度算法,该算法是将外存上优先级最高的作业优先调入内存;5、试说明低级调度的主要功能。P86答:1、保存处理机的现场信息:在进程调度进行调度时,道先需要保存当前进程的处理机的现场信息,将它们送入该进程的进程控制块(PCB)中的相应单元。2、按某种
35、算法选取进程:低级调度程序按某种算法如优先数算法、轮转法等,从就绪队列中选取一个进程,把它的状态改为运行状态,并准备把处理机分配给它。3、把处理器分配给进程:由分派程序把处理器分配给进程。此时需为选中的进程恢复处理机现场,即把选中进程的进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中,把处理器的控制权交给该进程,让它从取出的断点处开始继续运行。6、在抢占调度方式中,抢占的原则是什么?P87答:抢占调度方式是 1、优先权原则:通常是对一些重要的和紧急的作业赋予较高的优先权。2、 短作业(进程)优先原则:当新到达的作业(进程)比正在执行的作业(进程)明显的短时,将轻暂停当前长作业(进程
36、)的执行,将处理机分配给新到的短作业 (进程),使之优先执行;或者说,短作业(进程)或以抢占当前较长作业(进程)的处理机。时间片原则:各进程按时间片轮流运行,当一个时间片用完后,便停 止该进程的执行而重新进行调度。9. 在生产者消费者问题中,如果缺少了 signal(full)或 signal(empty),对执行结果会有何影响? 生产者消费者问题可描述如下: var mutex,empty,full: semaphore:=1,n,0; buffer: array0,.,n-1 of item; in,out: integer:=0,0; begin parbegin producer: b
37、egin 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); /*
38、* */ consume the item in nextc; until false; end parend end 可见,生产者可以不断地往缓冲池送消息,如果缓冲池满,就会覆盖原有数据,造成数据混乱.而消费者始终因 wait(full)操作将消费进程直接送入进程链表进行等待,无法访问缓冲池,造成无限等待. 10. 试比较 FCFS 和 SPF 两种进程调度算法相同点:两种调度算法都是既可用于作业调度,也可用于进程调度; 不同点:FCFS 调度算法每次调度都是从后备队列中选择一个或是多个最先进入该队列的作业,将它们调入内存,为它们分配资源,创建进程,然后插入到就绪队列中。该算法有利于长作业/
39、进程,不利于短作业/进程。 SPF 调度算法每次调度都是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存中运行。该算法有利于短作业/进程,不利于长作业/进程。12. 试修改下面生产者消费者问题解法中的错误: 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(mut
40、ex); /* 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 15. 按调度方式可将实时调度算法分为哪几种
41、?按调度方式不同,可分为非抢占调度算法和抢占调度算法两种。18、何谓死锁?产生死锁的原因和必要条件是什么?P103 P103 P105答:所谓死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。产生死锁的原因为竞争资源和进程间推进顺序非法。其必要条件为互斥条件,请求和保持条件,不剥夺条件,环路等待条件。19、解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法使资源利用率高?P105 P106答:预防死锁;解除死锁;20、请详细说明可通过哪些途径预防死锁。P106答:1、 摒弃“请求和保持”条件:在采用这种方法时,系统规定所
42、有进程在开始运行之前,都必须一次性地申请其在整个运行过程所需的全部资源。此时,若系统有足够的 资源分配给某进程,便可把其需要的所有资源分配给该进程,这样,该进程在整个运行期间便不会再提出资源要求,从而摒弃了请求条件。2、 摒弃“不剥夺”条件:在采用这种方法时系统规定,进程是逐个地提出对资源的要求的。当一个已经保持了某些资源的进程,再提出新的资源请求而不能立即得到满 足时,必须释放它已经保持了的所有资源,等以后需要时再重新申请。这意味着某一进程已经占有的资源,在运行进程中会被暂时地释放掉,也可认为是被剥夺了, 从而摒弃了“不剥夺”条件。3、摒弃“环路等待”条件:在这种方法中规定,系统将所有资源按
43、类型进行线性排队,并赋予不同的序号。所有进程对资源的请求必须严格按照资源序号递增的次序提出,这样,在所形成的资源分配图中,不可能再出现环路,因而摒弃了“环路等待”条件。21、在银行家算法的例子中,如果 P0 发出的请求向量由 Request(0,2,0)改为Request(0,1,0),问系统可否将资源分配给它?22. 在银行家算法中,若出现下述资源分配情:Process Allocation Need Available P0 0032 0012 P1 1000 1750 P2 1354 2356 P3 0332 0652 P4 0014 0656 1622 试问: 该状态是否安全? 若进程
44、 P2 提出请求 Request(1,2,2,2)后,系统能否将资源分配给它?该状态是安全的,因为存在一个安全序列。下表为该时刻的安全序列表。资源情况 进程 Work Need Allocation Work+Allocation Finish P0 P3 P4 P1 P2 1 6 2 2 1 6 5 4 1 9 8 7 1 9 9 11 2 9 9 11 0 0 1 2 0 6 5 2 0 6 5 6 1 7 5 0 2 3 5 6 0 0 3 2 0 3 3 3 0 0 1 4 1 0 0 0 1 3 5 4 1 6 5 4 1 9 8 7 1 9 9 11 2 9 9 11 3 12 1
45、4 17 true true true true true 若进程 P2 提出请求 Request(1,2,2,2)后,系统不能将资源分配给它,若分配给进程 P2,系统还剩的资源情况为(0,4,0,0),此时系统中的资源将无法满足任何一个进程的资源请求,从而导致系统进入不安全状态,容易引起死锁的发生。第四章1. 为什么要配置层次式存储器?这是因为: a.设置多个存储器可以使存储器两端的硬件能并行工作。 b.采用多级存储系统,特别是 Cache 技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。 c .在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。增加 CPU 中寄存器的数
46、量,也可大大缓解对存储器的压力。2、可采用哪几种方式将程序装入内存?它们分别适用于何种场合?P119答:1、绝对装入方式:绝对装入方式只能将目标模块装入到内存中事先指定的位置。在多道程序环境下,编译程序不可能预知所编译的目标模块应放在内存的何处,困此,绝对装入方式只适用于单道程序环境。2、可重定位装入方式:在多道程序环境下,所得到的目标模块的起始地址通常是从 0 开始的,程序中的其它地址也都是相对于起始地址计算的。此时应采用可重定位装入方式,根据内存的当前情况,将装入模块装入到内存的适当位置。3、动态运行时装入方式:可重定位装入方式可将装入模块装入到内存中任何允许的位置,故可用于多道程序环境;
47、但这种方式并不允许程序运行时在内存中移动位置。3、何谓静态链接?何谓装入时动太链接和运行时的动态链接?P120答:1、静态链接:在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开,我们把这种事先进行链接的方式称为静态链接方式.2、装入时动态链接:这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。3、运行时动态链接:这是指对某些目标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接。4、在进行程序链接时,应完成哪些工作?答:表态链接、装入时动态链接、运行时动态链接;5、在动态分区分配方式中,应如何将各空闲分
48、区链接成空闲分区链?P123 要画图答: 为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息,以及用于链接各分区所用的前向指针;在分区尾部则设置一后向指 针,通过前、后向链接指针,可将所有的空闲分区链接成一个双向链,为了检索方便,在分区尾部重复设置状态位和分区大小表目。当分区被分配出去以后,把状态 位由“0”改为“1”,此时,前、后向指针已无意义。6、为什么要引入动态重定位?如何实现?P127 P128答:a. 为了在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地 -址,引入了动态重定位.b. 可在系统中增加一个重定位寄存器,
49、用它来装入(存放) 程序在内存中的起始地址,程序在执行时,真 -正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的,从而实现动态重定位.9. 分区存储管理中常采用哪些分配策略?比较它们的优缺点。分区存储管理中常采用的分配策略有:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。 a.首次适应算法的优缺点:保留了高址部分的大空闲区,有利于后到来的大型作业的分配;低址部分不断被划分,留下许多难以利用的、小的空闲区,且每次分区分配查找时都是从低址部分开始,会增加查找时的系统开销。 b.循环首次适应算法的优缺点:使内存中的空闲分区分布得更为均匀,减少了查找时的系统开销;缺乏大的空闲分区,从而导致不能装入大型作业。 c .最佳适应算法的优缺点:每次分配给文件的都是最适合该文件大小的分区;内存中留下许多难以利用的小的空闲区。 d.最坏适应算法的优缺点:给文件分配分区后剩下的的空闲区不至于太小,产生碎片的几率最小,对中小型文件分配分区操作有利;使存储器中缺乏大的空闲区,对大型文件的分区分配不利。10. 在系统中引入对换后可带来哪些好处?能将内存中暂时不