操作系统原理与实践教程(第二版)习题答案

更新时间:2024-02-02 12:35:01 阅读量: 教育文库 文档下载

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

第1章 操作系统概论

(1) 试说明什么是操作系统,它具有什么特征?其最基本特征是什么?

解:

操作系统就是一组管理与控制计算机软硬件资源并对各项任务进行合理化调度,且附加了各种便于用户操作的工具的软件层次。

现代操作系统都具有并发、共享、虚拟和异步特性,其中并发性是操作系统的最基本特征,也是最重要的特征,其它三个特性均基于并发性而存在。 (2) 设计现代操作系统的主要目标是什么?

解:

现代操作系统的设计目标是有效性、方便性、开放性、可扩展性等特性。其中有效性指的是OS应能有效地提高系统资源利用率和系统吞吐量。方便性指的是配置了OS后的计算机应该更容易使用。这两个性质是操作系统最重要的设计目标。开放性指的是OS应遵循世界标准规范,如开放系统互连OSI国际标准。可扩展性指的是OS应提供良好的系统结构,使得新设备、新功能和新模块能方便地加载到当前系统中,同时也要提供修改老模块的可能,这种对系统软硬件组成以及功能的扩充保证称为可扩展性。 (3) 操作系统的作用体现在哪些方面?

解:

现代操作系统的主要任务就是维护一个优良的运行环境,以便多道程序能够有序地、高效地获得执行,而在运行的同时,还要尽可能地提高资源利用率和系统响应速度,并保证用户操作的方便性。因此操作系统的基本功能应包括处理器管理、存储器管理、设备管理和文件管理。此外,为了给用户提供一个统一、方便、有效的使用系统能力的手段,现代操作系统还需要提供一个友好的人机接口。在互联网不断发展的今天,操作系统中通常还具备基本的网络服务功能和信息安全防护等方面的支持。

(4) 试说明实时操作系统和分时操作系统在交互性、及时性和可靠性方面的异同。

解:

? 交互性:分时系统能够使用户和系统进行人-机对话。实时系统也具有交互性,

但人与系统的交互仅限于访问系统中某些特定的专用服务程序。

? 及时性:分时系统的响应时间是以人能够接受的等待时间为标准,而实时控制系

统对响应时间要求比较严格,它是以控制过程或信息处理中所能接受的延迟为标准。

? 可靠性:实时系统要求系统可靠性要比分时系统高。在实时系统中往往采用多级

容错措施来保证系统的安全及数据的安全。

(5) 试比较分布式操作系统和网络操作系统的异同。

解:

它们的区别在于:分布式操作系统的设计思想和网络操作系统是不同的,这决定了它们在结构、工作方式和功能上也不同。网络操作系统要求网络用户在使用网络资源时首先必须了解网络资源,网络用户必须知道网络中各个计算机的功能与配置、软件资源、网络文件结构等情况,在网络中如果用户要读一个共享文件时,用户必须知道这个文件放在哪一台计算机的哪一个目录下;分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。

(6) 什么是操作系统虚拟机结构?它有什么好处?

解:

虚拟机结构OS最初是为了满足用户对分时系统的需求而出现的。VM/370的核心程序

为虚拟机监控器(virtual machine monitor),它运行于裸机之上并提供多道程序功能。该系统向上层提供多个对裸机硬件精确复制的虚拟机,这些复制品均包含核心态、用户态、I/O处理、中断以及其它真实机器所应该具有的全部功能。

这样做的好处是凡是能在一台物理裸机上运行的操作系统均可以出现在一个特定虚拟机上,分配给各用户的不同虚拟机上可以随用户的个人爱好和操作习惯不同而采用不同的操作系统。在用户看来就是直接在自己独享的一台裸机上工作。 (7) 试说明客户机/服务器结构的操作系统为什么获得广泛应用。

解:

客户机/服务器结构的操作系统具有不同于传统集中式OS的一系列独特优点,使得其在网络时代大为流行。主要原因有以下几点:

1. 该系统的数据可以进行分布式处理和存储。客户机本身均具有一定的处理能力,部

分数据处理和存储工作可由本地客户机完成,减少了服务器机的任务量。 2. 对于重要数据,可以将其放在受到严密保护的服务器所在的局域网内集中管理,以

便保证数据安全。

3. C/S结构有较好的灵活性和可扩充性,客户机/服务器机类型可选范围很大。 4. 易于修改用户程序。对客户机的修改和增删很方便,甚至可以由用户自行进行。 (8) 处理机管理有哪些主要功能?请简要描述。

解:

处理机的管理功能主要体现在创建、撤销进程,并按照一定的算法为其分配所需资源,同时还要管理和控制各用户的多个进程协调运行,确保各个进程可以正确的通信。在多道程序OS中,这些管理功能最终通过对进程的控制和管理来实现,而在具有线程机制的OS中,这些功能的实现还依赖于对线程的管理和控制。 (9) 存储器管理有哪些主要功能?请简要描述。

解:

操作系统所管理的存储器包括内存、外存等,因此存储器管理的主要任务就是将各种存储器件统一管理,保证多道程序的良好运行环境,同时还要兼顾内存利用率、逻辑上扩充内存的需求以及用户的感受,提供优良的控制、存取功能,为用户提供操控存储器的手段。 为实现上述要求,存储器管理应具有内存分配、内存回收、内存保护、地址映射和虚拟内存等功能。

(10) 文件管理有哪些主要功能?请简要描述。

解:

其主要功能就是管理外存上的静态文件,提供存取、共享和保护文件的手段,以方便用户使用,同时禁止无权限用户对他人资源的误访问或有权限用户对资源的误操作。文件管理机制还要能有效管理外存空闲区域,根据文件的大小为其分配和回收空闲区。为了满足用户对响应时间的要求,文件管理机制还应实现目录管理,以便快速地定位文件。文件管理机制能有效保护文件安全,提高资源利用率,为用户提供快速检索和使用文件的手段,是OS不可或缺的组成部分。

(11) 设备管理有哪些主要功能?请简要描述。

解:

设备管理的主要作用是使用统一的方式控制、管理和访问种类繁多的外围设备。设备管理功能主要体现在:接收、分析和处理用户提出的I/O请求,为用户分配所需I/O设备,同时还要做到尽量提高CPU和I/O设备利用率、I/O处理效率,为用户提供操控I/O设备的便捷界面和手段。根据设备管理模块的功能要求,可以将其功能分为设备分配、缓冲管理、设备处理、虚拟设备等。

第2章 操作系统的界面

(1) 请说明系统生成和系统引导的过程。

解:

系统的生成过程:当裸机启动后,会运行一个特殊的程序来自动进行系统的生成(安装),生成系统之前需要先对硬件平台状况进行检查,或者从指定文件处读取硬件系统的配置信息,以便根据硬件选择合适的操作系统模块组,比较重要的信息通常有:CPU类型、内存大小、当前关联设备的类型和数量以及操作系统的重要功能选项和参数。按照这些信息的指示,系统生成程序就可以正确地生成所需的操作系统。

系统引导的过程:系统引导指的是将操作系统内核装入内存并启动系统的过程。主要包括初始引导、内核初始化、全系统初始化。初始引导工作由BIOS完成,主要完成上电自检,初始化基本输入输出设备,载入操作系统内核代码等工作。内核被载入内存后,引导程序将CPU控制权交给内核,内核将首先完成初始化功能,包括对硬件、电路逻辑等的初始化,以及对内核数据结构的初始化,如页表(段表)等。全系统初始化阶段要做的就是启动用户接口程序,对系统进行必要的初始化,使系统处于等待命令输入状态。 (2) 操作系统具有哪些接口?这些接口的作用是什么?

解:

操作系统为用户提供的接口有图形接口、命令接口和程序接口几种形式。 操作系统包括三种类型的用户接口:命令接口(具体又可分为联机命令接口与脱机命令接口)、程序接口及图形化用户接口。其中,命令接口和图形化用户接口支持用户直接通过终端来使用计算机系统,而程序接口则提供给用户在编制程序时使用。

(3) 请说明操作系统具有的共性服务有哪些不同类别,这些类别分别用于完成什么功能?

解:所有的操作系统都通过一些基本服务来帮助用户简单便捷地使用计算机各类资源,它们包括以下几个类别:

1. 控制程序运行:系统通过服务将用户程序装入内存并运行该程序,并且要控制程序

在规定时间内结束。

2. 进行I/O操作:用户是不能直接控制设备的,只能通过操作系统与外部设备进行交

互,由系统调用将结果显示在屏幕上或交给用户。 3. 操作文件系统:为了保证实现“按名存取”,文件系统应该为用户提供根据文件名

来创建、访问、修改、删除文件的方法,以确保文件数据的安全可靠以及正确存取。 4. 实现通信:操作系统需要提供多个程序之间进行通讯的机制,来控制程序的执行顺

序。

5. 错误处理:操作系统通过错误处理机制,以便及时发现错误并采取正确的处理步骤,

避免损害系统的正确性和统一性。

(4) 系统调用的用途是什么?

解:

通常,在操作系统内核设置有一组用于实现各种系统功能的子程序(过程),并将它们提供给用户程序调用。每当用户在程序中需要操作系统提供某种服务时,便可利用一条系统调用命令,去调用所需的系统过程。这即所谓的系统调用。系统调用的主要类型包括:

1. 进程控制类,主要用于进程的创建和终止、对子进程结束的等待、进程映像的替换、

进程数据段大小的改变以及关于进程标识符或指定进程属性的获得等;

2. 文件操纵类,主要用于文件的创建、打开、关闭、读/写及文件读写指针的移动和

文件属性的修改,目录的创建及关于目录、特别文件或普通文件的索引结点的建立等;

3. 进程通信类,用于实现各种类型的通信机制如消息传递、共享存储区及信息量集机

制等;

4. 信息维护类,用于实现关于日期和时间及其它系统相关信息的设置和获得。 (5) 命令解释程序有什么作用?

解:

命令解释程序的主要作用是:在屏幕上产生提示符,请用户输入命令,然后读入命令、识别命令,并转至相应的命令处理程序入口地址,把控制权交给该处理程序去执行,最后将有关处理结果(包括出错信息)送屏幕显示。

第3章 处理器管理

(1) 为什么程序并发执行会产生间断性特征,并失去封闭性和可再现性?

解:

之所以产生间断性特征是因为多个程序在并发执行时,需要为了完成同一项任务而相互合作,并发执行的程序间的这种相互制约导致了“暂停—执行—暂停”的间断性运行规律。

失去封闭性是因为程序在并发执行时,多个程序需要共享系统中的多种资源。所以,这些资源的状态是由多个程序改变的,从而使程序的运行失去了封闭性。

失去可再现性是因为程序在并发执行时,由于失去了封闭性,从而导致其失去可再现性。 (2) 什么是进程?为什么要在操作系统中引入进程?

解:

进程是可并发执行且具有独立功能的程序在一个数据集合上的运行过程,它是操作系统进行资源分配和调度的基本单位。“进程”概念是人们为了使程序能够并发执行,并且能对并发的程序加以描述和控制而引入的。

(3) 试从并发性、独立性、动态性上比较程序和进程的不同。

解:

? 并发性是进程的重要特征,同时也是OS 的重要特征。引入进程的目的正是为了

使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。 ? 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资

源和独立调度的基本单位。而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行。

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

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

(4) 什么是PCB?它具有什么作用?为什么说PCB是进程存在的唯一标识?

解:

进程控制块(Process Control Block,PCB)是操作系统为了管理进程而设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程。

它的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能和其它进程并发执行的进程.

因为系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。进程与PCB是一一对应的。

(5) 进程有哪些基本状态?这些状态具有什么特征?

解:

进程的三种基本状态分别是:就绪状态、运行状态、阻塞状态。

? 就绪状态:进程已获取到除CPU之外的所有必要资源,只要再得到CPU,就可

以马上投入运行。

? 运行状态:处于就绪状态的进程被调度程序选中后将得到CPU控制权,此时该

进程就可以使用处理器进行数据运算和处理。 ? 阻塞状态:当一个进程正在等待某个事件的发生(如等待I/O的完成)而暂停执行,

这时,即使分配有CPU时间,它也无法执行。

(6) 为什么要引入挂起状态?该状态有什么特性?

解:

引入挂起状态时为了满足四种需要:调节系统负荷的需要、用户的需要、父进程的需要、系统的需要。

挂起状态的特点:交换到磁盘上的进程,不让其参与进程调度,以达到平衡系统负荷的目的。

(7) 说明进程基本状态的转换关系及引起这些状态间转换的典型原因。

解:

处于就绪状态的进程,在调度程序为之分配了处理器之后,就可以投入运行。同时,进程的状态也由就绪状态转变为运行状态;在采用时间片机制的操作系统中,分配给当前进程的时间片用完之后,它会暂停执行,其状态也由运行状态转换到就绪状态;如果由于某事件发生(比如进程需要访问某I/O设备,而该设备正在被别的进程访问)而使进程运行受阻,不能再继续向下执行时,它的状态会由运行状态转变为阻塞状态;当进程期望的某事件发生时(比如需要访问的I/O设备已可用),进程将从阻塞状态转变为就绪状态

(8) 说明在加入了挂起状态的操作系统中,进程状态间的转换关系及引发转换的典型原因。

解:

在引入挂起状态的操作系统中,又增加了静止就绪和静止阻塞两个新的进程状态。调用挂起原语把处于活动就绪状态的进程挂起后,该进程就会由活动就绪状态转变为静止就绪状态。调用挂起原语把处于活动阻塞的进程挂起后,它的状态就转换为静止阻塞。调用激活原语激活后又可以转换到活动阻塞状态。 (9) 试说明引起进程创建的典型事件。

解:

引起进程创建的典型事件有:用户登录、作业调度、提供服务、应用请求。 (10) 试说明引起进程撤销的典型事件。

解:

引起进程撤销的典型事件有:正常结束、异常结束、外界干预。 (11) 试说明引起进程阻塞和唤醒的典型事件。

解:

引起进程阻塞和唤醒的典型事件有:请求系统服务、启动某种操作、新数据尚未到达、无新工作可做。.

(12) 试说明进程创建的过程。

解:

创建进程的操作必须调用创建原语来实现。创建原语首先为新进程申请获得惟一的数字标示符,并从PCB集合中获取一个空白PCB;为新进程的程序和数据以及用户栈分配必要的内存空间;然后对PCB进程初始化;最后将新进程插入就绪队列中,等待被调度执行。 (13) 试说明进程撤销的过程。

解:

系统调用进程终止原语来终止进程。首先根据被终止进程的标示符,从PCB集合中查

找到该进程的PCB,从中读出该进程的状态,终止该进程的执行,如果该进程还有子孙进程,应该将它的所有子孙进程终止,防止它们成为不可控进程;然后回收进程所拥有的资源;最后将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。 (14) 什么是线程?请比较它与进程的异同。

解:

线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只需要一些必不可少的资源(如程序计数器、一组寄存器和栈)。

进程和线程的差异:

1. 在传统的OS中,进程是拥有资源和独立调度分派的基本单位,在加入线程的OS

中,线程是代替进程成为独立调度和分派的基本单位,进程则仍是拥有资源的基本单位。

2. 并发粒度不同。除了不同进程的线程之外,同一个进程里的不同线程之间也可以并

发执行,所以线程拥有更好的并发性。 3. 拥有资源数量不同。进程是拥有资源的基本单位,线程除了一些在运行过程中必不

可少的资源外,基本上不拥有系统资源,它可以访问自己所在的进程的资源。 4. 管理开销不同。创建、撤销进程时系统都要为之分配和回收资源,所以进程切换用

的时间开销相对要多于线程。进程间通信很麻烦,而同一进程的线程则通过共享进程的资源很方便地通信和同步,同步开销小得多。

进程和线程有着很多相似的地方:都可以并发执行;都有就绪、执行、阻塞这些基本状态,也都可以在这些基本状态之间转换状态;从创建到撤销都有一定的生命周期;都需要同步工具。

(15) 处理器调度的层次有哪些?各层次的主要工作是什么?

解:

处理器调度的层次分为三级调度:高级调度、中级调度和低级调度。

? 高级调度:它需要做出两个决定,一个是要从驻留在外存后备队列中调入多少个

作业,二是要调入哪几个作业;然后为被选中的作业创建进程,并分配必要的系统资源,如内存、外设等,然后把新创建的进程放入就绪队列中,等待被调度执行。

? 中级调度:中级调度主要涉及进程在内存和外存之间的交换。当系统中的内存使

用情况紧张时,中级调度把内存中暂时不能运行的进程调到外存中等待,等内存有足够的空闲空间时,再由中级调度决定将外存上的某些具备了运行条件的就绪进程调入内存,把其状态修改为就绪状态并挂在就绪队列中,等待进程调度。 ? 低级调度:按照一定的算法从就绪队列中选择一个进程,然后将处理器分配给它。

执行低级调度功能的程序称作进程调度程序,由它实现处理器在进程间的切换。

(16) 抢占式调度的原则是什么?请简要说明。

解:系统使用抢占方式进行进程调度时需要遵循一定的原则,主要有以下几个方面: 1. 时间片原则。各进程按系统分配给的一个时间片运行,当该时间片用完或由于该进

程等待某事件发生而被阻塞时,系统就停止该进程的执行而重新进行调度。 2. 优先级原则。每个进程均被赋于一个调度优先级,通常一些重要和紧急的进程被赋

于较高的优先级。当一个新的紧迫进程到达时,或者一个优先级高的进程从阻塞状态变成就绪状态时,如果该进程的优先级比当前进程的优先级高,OS就停止当前进程的执行,将处理器分配给该优先级高的进程,使之执行。 3. 短进程优先原则。当新到达的作业对应的进程比正在执行的作业对应进程的运行时

间明显短时,系统剥夺当前进程的执行,而将处理器分配给新的短进程,使之优先

执行。

(17) 在批处理系统、分时系统、实时系统中,应分别采用哪种作业(进程)调度算法?

解:

批处理系统采用“先来先服务调度算法”;分时系统采用“时间片轮转法”;实时系统采用“高响应比优先调度算法”。

(18) 说明时间片轮转调度算法的基本思路。

解:

在采用时间片轮转调度算法的系统中,将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生时钟中断。调度程序暂停当前进程的执行,将其送到就绪队列的末尾,并通过CPU现场切换执行当前的队首进程,当然,进程可以未使用完一个时间片,就让出CPU(如阻塞)。这样可以保证就绪队列中的所有进程都有机会获得处理器而运行的机会,可以提高进程并发性和响应时间特性,从而提高资源利用率。 (19) 试说明多级反馈队列调度算法思想。

解:多级反馈队列调度算法则不必事先知道各进程的执行时间,又可以满足各种类型进程的调度需要,它是一种目前公认较好的进程调度算法。它的算法思想如下(设采用抢占式调度):

1. 需要设置多个就绪队列,并且为它们分别赋予不同的优先级。每队列分配不同的时

间片,规定优先级越低则时间片越长。

2. 新进程就绪后,先插入队列1的末尾,按FCFS算法调度。若一个时间片未能执行

完,则降低插入到队列2的末尾;依此类推,降低到最后的队列,则按“时间片轮转”算法调度直到完成。

3. 进程由于等待事件而放弃CPU后, 进入等待队列, 一旦等待的事件发生, 则回到原

来的就绪队列。

4. 只有当较高优先级的队列为空时,才调度较低优先级队列中的进程执行。如果进程

执行时有新进程进入较高优先级的队列,则需要重新调度,抢先执行新进程,并把被抢先的进程插入原队列的末尾。

(20) 什么是静态和动态优先级?如何确定静态优先级?

解:

静态优先级是在系统创建时确定的,一经确定之后在整个进程运行期间不再改变。 动态优先级是在进程运行前先确定一个优先级,进程运行过程中根据进程等待时间的长短、执行时间的多少、输入输出信息量的大小等,通过计算得到新的优先级。

(21) 在一个单道批处理系统中,一组作业的到达时间和运行时间如下表所示。试计算使用先来先服务、短作业优先、高响应比优先算法时的平均周转时间和平均带权周转时间。

作业 1 2 3 4 到达时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 解:

用T表示周转时间,用W表示带权周转时间

FCFS的作业调度情况如下: 作业 1 2 3 4 提交时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 开始时间 8.0 9.0 9.5 9.7 结束时间 9.0 9.5 9.7 9.8 周转时间 1.0 1.0 0.7 0.7 带权周转时间 1.0 2.0 3.5 7.0 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 SJF的作业调度情况如下: 作业 1 2 3 4 提交时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 开始时间 8.0 9.3 9.0 9.2 结束时间 9.0 9.8 9.2 9.3 周转时间 1.0 1.3 0.2 0.2 带权周转时间 1.0 2.6 1.0 2.0 SJF的T=(1.0+1.3+0.2+0.2)/ 4 = 0.675 W =(1.0+2.6+1.0+2.0)/ 4 = 1.65 高响应比优先的作业调度情况如下: 作业 1 2 3 4 提交时间 8.0 8.5 9.0 9.1 运行时间 1.0 0.5 0.2 0.1 开始时间 8.0 9.0 9.6 9.5 结束时间 9.0 9.5 9.8 9.6 周转时间 1.0 1.0 0.8 0.5 带权周转时间 1.0 2.0 4.0 5.0 高响应比算法的T=(1.0+1.0+0.8+0.5)/ 4 = 0.825 W =(1.0+2.0+4.0+5.0)/ 4 = 3.0

第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个进程,判断下列资源状态是否安全?若进程P2申请资源(1,1,1,1),能否为其分配?

进程 P0 P1 P2 P3 P4 Need A B C D 0 0 4 3 2 6 3 0 3 2 1 5 4 0 2 0 0 5 5 4 Allocation A B C D 0 0 2 2 1 1 0 0 2 1 0 3 2 0 0 0 0 2 2 2 解:

现在对该时刻的状态进行安全分析: 由于Available向量为(3,4,4,1),所以Work向量初始化为(3,4,4,1) 此时的Work小于任意的Need[i]向量,所以系统处于不安全状态

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

Allocation A P0 0 B 0 C 2 D 2 Need A 0 B 0 C 4 D 3 Available A B C D P1 1 P2 3 P3 2 P4 0 1 2 0 2 0 1 0 2 0 4 0 2 2 2 4 0 6 1 0 5 3 0 2 5 0 4 0 4 2 3 3 0 然后进行安全性检测:

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

(13) 三个进程P1、P2、P3都需要5个同类资源才能正常执行直到终止,且这些进程只有在需要设备时才申请,则该系统中不会发生死锁的最小资源数量是多少?请说明理由。

解:

系统中不会发生死锁的最小资源数量是13,这样可以保证当每一个进程都占有4个资源的时候,有一个进程可以获得最后一个资源后被运行,运行完毕后释放资源,于是其余进程也能顺利运行完,所以不会死锁。

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

解:

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

(15) 考虑由n个进程共享的具有m个同类资源的系统,如果对于i=1,2,3,…,n,有Need[i]>0并且所有进程的最大需求量之和小于m+n,试证明系统不会产生死锁。

解:

本题中只有一种资源,不妨设Max[i]为第i个进程的资源总共需要量,Need[i]为第i个进程还需要的资源数量,Allocation[i]表示第i个进程已经分配到的资源数量,Available为系统剩余的资源数,其中i=1,2,3,…,n。

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

系统剩余的资源数量为Available(Available>=0),由假设,因为系统处于死锁状态,所以Available个资源无法分配出去,所以每个进程的Need[i]都大于Available,

即 Need[i]>=Available+1

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

即 ∑Allocation[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] + ∑Allocation[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个并发进程的同步。

解:

本题中应设置三个信号量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) }

}

(20) 某寺庙有大、小和尚若干,另有一水缸。由小和尚挑水入缸供大和尚饮用。水缸可以容10桶水,水取自同一井。水井很窄,每次只能容一个水桶取水。水桶总数为3。每次入、取缸水仅为1桶,且不可同时进行。试给出取水、入水的同步算法。

解一、问题分析:

从井中取水并放入水缸是一个连续的动作可以视为一个进程,从缸中取水为另一个进程 设水井和水缸为临界资源,引入mutex1,mutex2;三个水桶无论从井中取水还是放入水缸中都一次一个,应该给他们一个信号量count,抢不到水桶的进程只好为等待,水缸满了时,不可以再放水了。设empty控制入水量,水缸空了时,不可取 水 设full

var mutex1,mutex2,empty,full,count:semaphore; mutex1:=mutex2:=1; empty:=10; full:=0; count:=3; cobegin

Procedure Fetch_Water Procedure Drink_Water begin begin while true while true p(empty); p(full); P(count); p(count); P(mutex1); p(mutex2); Get Water; Get water and v(mutex1); Drink water; P(mutex2); p(mutex2); pure water into the jar; v(empty); v(mutex2); v(count); v(count); end

v(full); end coend

解二:

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)该时刻的安全性检查表如下: Work A P0 1 P3 1 P4 1 P2 1 P1 2 B 6 6 6 6 9 C 2 5 8 9 D 2 4 6 Need A 0 0 0 B 0 6 6 3 7 C 1 5 5 5 5 D 2 2 6 6 0 Allocation A 0 0 0 1 1 B 0 0 0 3 0 C 3 3 1 5 0 D 2 2 4 4 0 Work+Allocation A 1 1 1 2 3 B 6 6 6 9 9 C 5 8 9 D 4 6 True True Finish 10 True 10 2 14 14 True 14 14 True 14 14 1 如表所示,存在安全序列,所以该时刻处于安全状态。 由于Request2(1,2,2,2)

Allocation A P0 0 P1 1 P2 2 P3 0 P4 0 B 0 0 5 0 0 C 3 0 7 3 1 D 2 0 6 2 4 Need A 0 1 1 0 0 B 0 7 1 6 6 C 1 5 3 5 5 D 2 0 4 2 6 Available A 0 B 4 C 0 D 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. 不会发生死锁。因为两个进程需要的最多资源量都是1个,而系统拥有的资源量正

好是2个,两个进程都能顺利运行完,所以不会死锁。 2. 不会发生死锁。因为2个进程需要的最多的资源量都是2个,而系统拥有的资源量

是3个,所以总会有1个进程得到2个资源后被运行,运行完毕后释放资源,于是另一个进程也能顺利运行完,所以不会死锁。

3. 会发生死锁。当一个进程占有1个资源,另一个进程占有2个资源时,2个进程都

要再申请资源,但是系统已经没有资源了,所以就发生死锁了。

4. 不会发生死锁。因为三个进程需要的资源最大数量都是2个,而系统有5个资源,

所以至少有2个进程可以拿到足够的资源运行,运行完后再释放资源,最后一个进程也能得到运行,所以不会死锁。

第5章 存储管理

(1) 存储管理的任务和功能是什么? 解:

存储管理的主要任务是:

支持多道程序的并发执行,使多道程序能共享存储资源,在互不干扰的环境中并发执行。 方便用户,使用户减少甚至摆脱对存储器的管理,使用户从存储器的分配、保护和共享等繁琐事物中解脱出来。

提高存储器的利用率和系统吞吐量。

从逻辑上扩充内存空间,支持大程序能在小的内存空间运行或允许更多的进程并发执行。 为了完成上述任务,现代操作系统的存储管理应具有以下功能: 1. 存储空间的分配和回收。

2. 地址转换,实现逻辑地址到物理地址的映射。 3. 主存空间的共享。 4. 主存空间的保护。 5. 主存储空间的扩充。

6. 对换,对换的主要任务是实现在内存和外存之间的全部或部分进程的对换,即将内存中处于阻塞状态的进程调换到外存上,而将外存上处于就绪状态的进程换入内存。对换的目的主要是为了提高内存利用率,提高系统的吞吐量。 (2) 为什么要配置层次式存储器? 解:

为了解决CPU和存储器之间速度上的不匹配,在现代计算机系统中,存储系统通常采用层次结构,存储层次可粗略分为三级:最高层为CPU寄存器,中间为主存,最底层是辅存。根据具体功能还可以细分为寄存器、高速缓存、主存储器、磁盘缓存、辅存储设备(固定磁盘、可移动存储介质)5层。一个文件的数据可能出现在存储系统的不同层次中,例如,一个文件数据通常被存储在辅存中(如硬盘),当其需要运行或被访问时,就必须调入主存,也可以暂时存放在主存的磁盘高速缓存中。大容量的辅存常常使用磁盘,磁盘数据经常备份在可移动磁盘或者光盘上,以防止硬盘故障时丢失数据。

(3) 什么是逻辑地址?什么是物理地址?为什么要进行二者的转换工作? 解:

逻辑地址是应用程序中使用的访存地址,有时也称为相对地址,由逻辑地址构成的地址空间称为逻辑空间。每个应用程序的逻辑地址空间都是从零号地址码开始的。 物理地址是内存储器的实际存储单元地址,有时也称为绝对地址,由物理地址构成的地址空间称为物理空间。物理地址空间也是从零号地址码开始的。 在多道程序环境下,程序逻辑地址空间和内存物理地址空间是不一致的。用户程序的逻辑地址可以是一维线性或多维线性,而内存中的每一个存储单元都有相应的内存地址相对应,属于一维线性地址。在将用户程序部分或全部地装入内存空间时,要实现逻辑地址到物理地址的映射。

(4) 地址重定位,静态地址重定位和动态地址重定位有什么区别? 解:

地址重定位指从逻辑地址到物理地址的映射过程,也称为地址映射。 静态地址重定位是指在用户程序执行之前完成地址映射工作,即把程序的逻辑地址都转换为实际的内存物理地址。静态地址重定位的地址变换只是在装入时一次完成,而在程序运行期间不再变化。

动态地址重定位是指在程序执行过程中,CPU在访问内存之前,将要访问的程序或数据地址转换为内存地址。

(5) 什么是内部碎片和外部碎片?。 解:

在一个分区内部出现的碎片(即被浪费的空间)称作内部碎片,如固定分区法就会产生内部碎片;

在所有分区之外新增的碎片称作外部碎片,如在动态分区法实施过程中出现的越来越多的小空闲块就是外部碎片,由于它们太小,无法装入一个进程,因而被浪费掉。 (6) 什么是分页和分段存储技术,两者有何区别? 解:

在分页系统中,系统 会把用户程序的地址空间划分成若干个大小相等的区域,每个区域称作一个页面或页。每个页都有一个编号,叫做页号。页号一般从0开始,如0,1,2,?,等。类似地,也把内存空间划分成若干和页大小相同的物理块,这些物理块叫“帧”(frame)或内存块。同样,每个物理块也有一个编号,块号也是从0开始依次顺序排列。系统为进程分配内存时,以块为单位将进程中的若干页分别装入多个可以不相邻接的块中。

在分段存储管理方式中,程序按内容或过程(函数)关系划分为若干个段,每个段定义一组逻辑信息,都有自己的名字。一个用户作业所包含的段对应于一个二维线性虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位进行内存分配,然后通过地址映射机构把段式虚拟地址转换为实际的内存物理地址。

分段和分页有许多相似之处,比如,二者在内存中都采用离散分配方式,而不是整体连续分配方式,而且都要通过地址映射机构来实现地址转换。但二者在概念上却完全不同,具体表现在下述三个方面:

页是信息的物理单位,而段是信息的逻辑单位。分页是为了实现离散分配,减少内存碎片,提高内存利用率。或者说,分页是由于系统管理的需要,而不是用户的需要。段则是信息的逻辑单位,它含有一组意义相对完整的信息。段的长度不是固定的,取决于用户所编写的程序。分段的目的是为了能更好地满足用户的需要,更方便用户编程,更好地实现信息共享和保护。

页的大小由系统确定,由系统把逻辑地址划分为页号和页内地址两部分,整个系统只能有一种大小的页面;而段的长度却不固定,它取决于用户的程序。通常由编译程序在对源码进行编译时,根据程序的性质来划分。

分页的进程地址空间是一维的,即单一的线性空间;而分段的进程地址空间是二维的,由段号和段内地址两部分组成。

(7) 什么是虚拟存储器?列举采用虚拟存储器的必要性和可能性。 解:

虚拟存储器是指在具有层次结构存储器的计算机系统中,具有请求调入和交换功能,为用户提供一个比实际物理内存容量大得多的可寻址的一种存储器系统,它能从逻辑上对内存容量进行扩充。

采用虚拟存储器的必要性:传统存储管理方式要求将作业全部装入内存之后才能运行,这一特征导致大作业和多个作业要求运行时系统无法满足;另外,传统存储管理方式具有驻留性,即作业装入内存直到运行结束,便一直驻留在内存中。尽管进程在运行中会因I/O等

原因而长期处于阻塞状态,或有的程序模块在运行过一次后就不再需要,但它们都仍将继续占用宝贵的内存资源。

采用虚拟存储器的可能性:根据程序的局部性定理,应用程序在执行之前,没有必要全部装入内存,而只需要将那些当前要运行的部分页或段先装入内存即可运行,其余部分可以仍然留在外存。程序在执行时,如果它所访问的页(段)已经调入内存,便可继续执行下去。但如果程序所要访问的页(段)不在内存中(称为缺页或缺段),此时程序可以利用操作系统提供的请求调页(段)功能,将它们调入内存,以便程序能够继续执行下去。如果内存已满,无法装入新调入的页(段),则必须利用一定的页(段)置换功能,将内存中暂时不用的页(段)换到外存中,以腾出足够的空间来存放新调入的页(段),从而保证程序的顺利执行。这样,一个大的程序就可以在较小的内存空间中执行。从用户的角度来看,该系统所具有的内存容量比实际内存容量大了很多。但实际上,用户所看到的大容量存储器是不存在的,只是虚拟的,故把这样的存储器称为虚拟存储器。

(8) 一个计算机系统的虚拟存储器,其最大容量和实际容量分别由什么决定? 解:

虚拟存储器的最大容量由主存和辅存的容量之和确定。

虚拟存储器的实际容量由指令中表示地址的字长决定,也就是计算机的地址结构决定的。

(9) 描述下列算法:

①首次适应;②最佳适应;③最差适应 解:

最先适应算法又称首次适应算法,该算法要求空闲分区表或空闲分区链按起始地址递增的次序排列。在进行内存分配时,从空闲分区表(链)首开始顺序查找,一旦找到大于或等于所要求内存长度的分区,则结束查找。然后,该算法从该分区中划出所要求的内存长度分配给请求者,余下的空闲分区仍留在空闲分区表(链)中,同时修改其相应的表(链)项。

最佳适应算法要求空闲分区按容量大小递增的次序排列。当用户作业申请一个空闲区时,存储管理程序从空闲分区表(链)首开始顺序查找,当找到第一个满足要求的空闲区时,停止查找。按这种方式为作业分配内存,就能把既满足作业要求又与作业大小最接近的空闲分区分配给作业。如果空闲分区大于作业的大小,则与最先适应算法相同,将减去作业请求长度后的剩余空闲区仍然留在空闲分区表(链)中。

最坏适应算法要求空闲分区按其大小递减的顺序组成空闲分区表(链)。当用户作业申请一个空闲区时,先检查空闲分区表(链)的第一个空闲分区的大小是否大于或等于所要求的内存长度,若空闲分区表(链)的第一项长度小于所要求的大小,则分配失败,否则从该空闲分区中划出与作业大小相等的一块内存空间分配给作业,余下的空闲分区仍然留在空闲分区表(链)中。

(10) 如果内存划分为100KB、500KB、200 KB、300 KB和600 KB(按顺序),那么,首次适应、最佳适应和最差适应算法各自将如何放置大小分别为215 KB、414 KB、110 KB和430 KB(按顺序)的进程,哪一种算法的内存利用率高? 解:

见下图,在首次适应和最差适应算法中,最后430KB没有空间分配。由图可知,最佳适应算法的内存利用率高。

(11) 某操作系统采用分区存储管理技术。操作系统占用了低地址端的100KB的空间,用户区从100KB处开始共占用512KB,初始时,用户区全部空闲,分配时截取空闲区的低地址部分作为一个分配区。在执行了如下的申请、释放操作序列后:

作业1申请300KB、作业2申请100KB、作业1释放300KB、作业3申请150KB、作业4申请50KB、作业5申请90KB。

分别画出采用首次适应算法、最佳适应算法进行内存分配后的内存分配图和空闲区队列; ② 若随后又申请80KB,针对上述两种情况会产生什么后果? 解:

采用首次适应算法、最佳适应算法进行内存分配后的内存分配图和空闲区队列图如下所示。

若随后又申请80KB,只有采用首次适应算法的内存分配还有空间可以分配,分配图如下:

(12) 假设一个有8个1024字节页面的逻辑地址空间,映射到一个有32帧的物理内存: ① 逻辑地址有多少位? ② 物理地址有多少位? 解:

逻辑地址有13位;物理地址有15位。

(13) 某虚拟内存的用户编程空间共32页,每页的大小为1 KB,内存为16 KB,假设某时刻系统为用户的第0、1、2、3页分配的物理块为5、10、4、7,而该用户作业的长度为6页,试将16进制的虚拟地址0A5C、093C、1A5C转换成物理地址。 解:

虚拟地址为0A5C,对应的二进制数为:0000 1010 0101 1100。其中,页内偏移量占10位地址码,为25C。页号占6位地址码,为2号页。因第2页存储在4号块中,其基地址为:0001 0000 0000 0000,即十六进制的1000H。这样,其物理地址为十六进制的125C。

虚拟地址为093C,对应的二进制数为:0000 1001 0011 1100。其中,页内偏移量占10位地址码,为13C。页号占6位地址码,为2号页。因第2页存储在4号块中,其基地址为:0001 0000 0000 0000,即十六进制的1000H。这样,其物理地址为十六进制的113C。

虚拟地址为1A5C,对应的二进制数为:0001 1010 0101 1100。页内偏移量占10位地址码,为25C。页号占6位地址码,为6号页。因为该用户作业的长度为6页,最大的页号为5号。因为虚拟地址为1A5C对应的6号页超出了地址范围,所以属于越界。

(14) 覆盖技术和虚拟存储技术有何区别,交换技术和虚拟存储器中使用的调入和调出技术有何区别和联系? 解:

覆盖技术与虚拟存储技术最本质的不同在于覆盖程序段的最大长度要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。另外,覆盖技术中的覆盖段由程序员设计,且要求覆盖段中的各个覆盖具有相对的独立性,不存在直接联系或相互交叉访问;而虚拟存储技术对用户的程序段之间没有这种要求。

交换技术就是把暂时不用的某个程序及数据从内存移到外存中去,以便腾出必要的内存空间,或把指定的程序或数据从外存读到内存中以允许其运行的一种内存扩充技术。交换技术与虚存中使用的调入/调出技术的主要相同点是:都要在内存与外存之间交换信息。主要区别是:交换技术调入/调出整个进程,因此一个进程的大小要受内存容量大小的限制;而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使得进程的地址映射具有了更大的灵活性,且允许进程的大小比可用的内存空间大。 (15) 在虚拟页式存储系统中引入了缺页中断,说明引入缺页中断的原因,并给出其实现的方法。 解:

虚拟页式存储系统中,系统允许作业的一部分页面在内存。当系统产生了缺页中断后,操作系统才能将不在内存的页面从外存调入内存。当缺页被调入,使中断恢复,进程就可以继续执行它的程序了。

缺页中断的实现由硬件和软件两部分组成。其实现方法如下:

当CPU执行一条指令时,形成操作数的有效地址。其中的页号部分用来检查页表,看该页是否在内存。如果在内存,则进行地址变换,按变换后的地址取出操作数;如果不在内存,则引起缺页中断,进入缺页中断处理程序。在缺页中断处理程序中,主要的处理为: 1 利用存储器分块表检查实存是否有空闲页面。 2 如果有空闲存储块,则根据页表提供的磁盘地址调入所需的页面,修改页表和分块表后返回。

3 如果没有空闲存储块,则选择一页淘汰掉。若该页被修改过还需写回外存,调入所需的页面。然后修改页表和分块表,返回。 (16) 试述缺页中断与一般中断的主要区别。 解:

程序在执行时,当访问的页面不在内存时,便产生缺页中断,请求操作系统将所缺页调入内存。中断处理程序将把控制转向缺页中断子程序。然后系统执行此子程序,把所缺页面装入主存中。接着处理器将重新执行缺页时打断的指令。缺页中断是一种特殊的中断,也就是说,缺页中断同样需要经历诸如保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理、恢复CPU环境等几个步骤,但与一般的中断相比,它又具有以下不同点:

一般中断是一条指令完成后中断,而缺页中断是在一条指令执行时中断。通常,CPU都是在一条指令执行完之后,才检查是否有中断请求到达。如果有,便去响应中断,否则,继续执行下一条指令。然而,缺页中断则是在指令执行期间,发现所访问的指令或数据不在内存时所产生和处理的。

一条指令执行时可能产生多个缺页中断。如指令可能访问多个内存地址,这些地址在不同的页中。

(17) 假设有下面的段表:

下面逻辑地址的物理地址分别是多少?

① [0,430]; ② [1,12]; ③ [2,500]; ④ [3,400]; ⑤ [4,122]

段 0 1 2 3 4 基址 219 2300 90 1327 1952 长度 600 14 100 580 96 解:

①: 649;②:2312;③:越界;④:1727;⑤:越界

(18) 考虑下面存储访问序列,该程序的大小为460字(以下数字均为十进制数字): 10、11、104、170、73、309、185、245、246、434、458、364

该页面的大小为100字,该程序的基本可用内存为200字,计算采用FIFO、LRU和OPT置换算法的缺页次数。 解:

因为页面的大小为100字,该程序的基本可用内存为200字,即可用内存为2块。程序的存储访问序列可转换为如下页面访问序列: 1、1、2、2、1、4、2、3、3、5、5、4

采用FIFO、LRU和OPT置换算法的访问序列如下:

由图可知FIFO算法的缺页次数为6次,LRU的缺页次数为7次,OPT的缺页次数为5次。 (19) 有一个矩阵int a[100][100] 以行为先进行存储。有一虚拟存储系统,物理内存共有3

块,其中1块用于存放程序,其余2块用于存放数据。假设程序已经在内存中占用1块,其余2块空闲。

程序A: 程序B:

for (i=0;i<100;i++) for (j=0;i<100;j++) for (j=0;j<100;j++) for (i=0;i<100;i++) a[i][j]=0; a[i][j]=0;

若每页可存放200个整数,则程序A和程序B在执行过程中各会发生多少次缺页?若每页只能存放100个整数呢?以上说明了什么问题? 解:

由题目所给条件可知,数组a有100?100=10000个整数,系统中共有2个内存块用于存放数组信息,数组中的元素按行编址。

若每页可以存放200个整数,则一个内存页中可以存放2行数组元素,对于程序A,数组元素的访问顺序为:

a[0][0], a[0][1], …, a[0][99] a[1][0], a[1][1], …, a[1][99] …

a[99][0], a[99][1], …, a[99][99]

显然,程序A对数组a的访问顺序与存储顺序一致,也是按行进行的。因此程序A每访问2行数组元素都会产生一次缺页中断,则访问整个数组会产生100/2=50次缺页中断。 对于程序B,数组元素的访问顺序是: a[0][0], a[1][0], …, a[99][0] a[0][1], a[1][1], …, a[99][1] …

a[0][99], a[1][99], …, a[99][99]

显然,程序B对数组a的访问顺序与存储顺序不一致。因此程序B每访问2个元素将产生一次缺页中断,则访问整个数组将产生10000/2=5000次缺页中断。

若每块只能存放100个整数,则一个内存块中只能存放1行数组元素,对于程序A,每访问1行数组元素都会产生一次缺页中断,则访问整个数组会产生100次缺页中断;对于程序B,每访问1个元素将产生一次缺页中断,则访问整个数组将产生10000次缺页中断。 以上结果说明,缺页中断的次数和数据存放方法及程序访问数据的方法有很大关系;当缺页次数较少时,减小页面大小影响不大,当缺页次数很大时,页面的减小对系统效率及程序的执行会带来很大影响。

(20) 什么是进程在某时刻t的工作集?工作集与页面的调入和淘汰策略有什么关系? 解:

工作集是指在某段时间间隔Δ里,进程实际访问的页面集合,具体地说便是把某进程在时间t-Δ ~ t之间所访问的页面集合计为w(t, Δ),把变量Δ称为工作集窗口尺寸。

正确选择工作集窗口尺寸,对存储器的有效利用和系统吞吐率的提高,都将产生重要影响。一方面,如果把Δ选得很大,进程虽不易产生缺页,但存储器也将不会得到充分利用。另一方面,如果把Δ选得过小,则会使进程在运行过程中频繁地产生缺页中断,反而降低了系统的吞吐率。

(21) 什么是抖动?产生抖动的原因是什么? 解:

抖动是由于内存空间竞争引起的。当需要将一个新页面调入内存时,因内存空间紧张,不得不将一个老页面置换出去,而刚刚置换出去的老页面可能又要被使用,因此需要重新将它调

一定的局限,如对外设的管理和某些操作仍由CPU控制,且多个DMA控制器的使用也不经济。 4. 通道控制方式。通道是一个专管输入/输出控制的处理机。在通道控制方式下,CPU

只需发出I/O指令,通道就能完成相应的I/O操作,并在操作结束时向CPU发出中断信号。由此可见,CPU仅在I/O操作开始和结束时花极短的时间处理与I/O操作有关的事宜,其余时间都与通道并行工作,此外一个通道还能控制多台外设。但是,通道价格较高,从经济的角度出发不宜过多使用。

(3) 为什么要引入缓冲技术,其基本实现思想是什么?

解:

缓冲技术是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。在操作系统的设备管理中,引入缓冲技术的主要原因可归结为以下几点。

? 缓解CPU和I/O设备间速度不匹配的矛盾。 ? 减少对CPU的中断频率。

? 提高CPU和I/O设备之间的并行性。

缓冲技术的实现思想是在CPU和外设之间设立缓冲,用以暂存CPU和外设之间交换的数据,从而缓和CPU与外设速度不匹配所产生的矛盾。缓冲的实现方法有两种:一种实现方法是采用硬件缓冲器,但由于这种方法成本太高,除一些关键部位外,一般情况下不采用硬件缓冲器;另一种实现方法是在内存划出一块存储区,专门用来临时存放输入/输出数据,这个区域称为缓冲区。

(4) 什么是SPOOLing系统,如何利用SPOOLing系统实现打印机的虚拟分配? 解:

SPOOLing是外围设备同时联机操作,又称为假脱机输入/输出操作。SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,从而允许多个用户共享一台物理I/O设备。 SPOOLing技术是对脱机输入、输出系统的模拟,因此,它必须建立在具有多道程序功能的操作系统上,而且还应该有高速随机外存的支持,这通常是采用磁盘存储技术。 SPOOLing系统通常由以下3部分组成:

1. 输入和输出井:这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的

磁 盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出的磁盘,用于暂存用户程序的输出数据。

2. 输入缓冲区和输出缓冲区:为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存

中开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区则用于暂存从输出井送来的数据,以后再传送给输出设备。

3. 输入进程和输出进程:SPOOLing利用两个进程来模拟脱机I/O时的外围控制机。

其中,输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井中读到内存;输出进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。

(5) 简单描述I/O软件的设计原则以及各层的功能。 解:

I/O软件设计时主要考虑以下几个问题:

1. 设备无关性。对于I/O系统中许多种类不同的设备,作为程序员,只需要知道如何

使用这些资源来完成所需要的操作,而无需了解设备的有关具体实现细节。例如,应用程序访问文件时,不必考虑它是存储在硬盘、软盘,还是CD-ROM上。对于

管理软件,也无需因为I/O设备变化,而重新编写涉及设备管理的程序。

2. 统一命名。要实现设备的无关性,其中一项重要的工作就是如何给I/O设备命名。

不同的操作系统有不同的命名规则,一般而言,是在系统中对各类设备采取预先设计的、统一的逻辑名称进行命名,所有软件都以逻辑名称访问设备。这种统一命名与具体设备无关,即同一逻辑设备的名称,在不同的情况下可能对应于不同的物理设备。

3. 出错处理。错误多数是与设备紧密相关的,因此对于错误的处理,应该在尽可能靠

近硬件的地方处理,在底层软件能够解决的错误就不要让高层软件感知,只有底层软件解决不了的错误才通知高层软件解决。

4. 缓冲技术。由于CPU与I/O设备之间的速度差异,需要使用缓冲技术。对于不同

类型的设备,其缓冲区的大小是不一样的,块设备的缓冲是以数据块为单位,而字符设备的缓冲则以字节为单位。因此,I/O软件应能屏蔽这种差异,向高层软件提供统一大小的数据块或字符单元,使得高层软件能够只与逻辑块大小一致的抽象设备进行交互。

5. 设备的分配和释放。对于系统中的共享设备,如磁盘等,可以同时为多个用户服务。

对于共享设备,应该允许多个进程同时对其提出I/O请求。对于独占设备,如键盘和打印机等,在某一段时间只能供一个用户使用,对其分配和释放不当,将引起混乱,甚至死锁。对于独占设备和共享设备带来的许多问题,I/O软件必须能够同时进行妥善地解决。

6. I/O控制方式。针对具有不同传输速率的设备,综合系统效率和系统代价等因素,

合理选择I/O控制方式,如像打印机等低速设备应采用中断驱动方式,而对磁盘等高速设备则采用DMA控制方式等,以提高系统的利用率。为方便用户,I/O软件应能屏蔽这种差异,向高层软件提供统一的操作接口。

操作系统通常把I/O软件组织成如下4个层次。

1. I/O中断处理程序。用于保存被中断进程的CPU环境,转入相应的中断处理程序进

行处理,处理完后再恢复被中断进程的现场,然后返回到被中断进程。

2. 设备驱动程序。与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动

I/O设备工作的驱动程序。

3. 设备无关软件。负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设

备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。 4. 用户层I/O软件。实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O

操作有关的库函数,对设备进行操作。

(6) 为什么要引入设备独立性,如何实现设备独立性?

解:

设备独立性又称为设备无关性。它指的是应用程序在使用设备进行I/O时,使用的是逻辑设备,而系统在实际执行时使用的是物理设备,由操作系统负责逻辑设备与物理设备的映射。引入设备独立性可以使设备的分配具有极大的灵活性,并易于实现I/O重定向。

系统为每个进程设置一张逻辑设备表LUT。当某进程用逻辑名来请求设备时,系统查阅系统设备表SDT,为它分配相应的可用物理设备。系统将这种用户逻辑设备与系统物理设备的映射建立在该用户的LUT中,并将该物理设备的驱动程序入口地址填入LUT中。以后,该进程利用逻辑设备名请求I/O操作时,系统通过查找LUT即可找到物理设备及其驱动程序。

(7) 设备分配中会出现死锁吗,为什么? 解:

设备分配中会出现死锁。因为在不安全分配方式中,进程在发出I/O请求后仍继续运行,需要时则可以发出第二个、第三个I/O请求等。仅当进程所请求的设备已被另一个进程占用时,请求进程才进入阻塞状态。这种分配方式的优点是,一个进程可同时使用多个设备,使进程推进迅速。其缺点是分配不安全,因为它可能具备“请求和保持”条件,从而可能造成死锁。因此,在设备分配时,还应对本次的设备分配是否会发生死锁进行安全性检查,仅当分配是安全的情况下才可以进行设备分配。 (8) 试说明DMA的工作流程。

解:

1. CPU需要访问外存时,便发送一条访问命令给DMA的命令寄存器CR、一个内存

地址码给DMA的内存地址寄存器MAR、本次要传送的字节数给DMA的数据计数器DC、外存地址给DMA的I/O控制逻辑中。 2. 启动DMA控制器,然后CPU转其它任务处理。

3. DMA控制器负责控制数据在内存与外存之间传送。每传送一个字节就需挪用一个

内存周期,按MAR从内存读出或写入内存一个字节,修改MAR和计数器DC。 4. 当DC修改为0时,表示传送结束,由DMA向CPU发出中断请求。 (9) 什么是中断,简单叙述中断的处理过程?

解:

中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完中断程序之后又返回原来被中断处继续执行或调度新进程的过程。

中断处理的过程如下:

1. 首先,CPU检查响应中断的条件是否满足。CPU响应中断的条件是:有来自于中

断源的中断请求、CPU允许中断。如果中断响应条件不满足,则中断处理无法进行。

2. 如果CPU响应中断,则CPU关中断,使其进入不可再次响应中断的状态。 3. 保存被中断进程的现场。为了在中断处理结束后能使进程正确地返回到中断点,系

统必须保存当前处理机状态字PSW和程序计数器PC等的值。这些值一般保存在特定堆栈或硬件寄存器中。

4. 分析中断原因,调用中断处理子程序。在多个中断请求同时发生时,处理优先级最

高的中断。

5. 执行中断处理子程序。对陷阱来说,在有些系统中则是通过陷阱指令向当前执行进

程发出软中断信号后调用相应的处理子程序。

6. 退出中断,恢复被中断进程的现场或调度新进程占据处理机。 7. 开中断,CPU继续执行。

(10) 试说明设备驱动程序应完成哪些功能?

解:

设备驱动程序是请求I/O的进程与设备控制器之间的一个通信程序,主要功能有: 1. 将用户的要求转换为具体要求。

2. 检查用户的合法性,了解设备状态,根据要求传递参数,设置设备的工作方式。 3. 向设备控制器发I/O命令启动设备,完成具体的I/O操作。

4. 及时响应外设的中断请求,根据中断类型调用相应的中断处理程序。 5. 具有通道的控制系统,还要构造通道程序。

(11) 什么是设备的安全分配方式和不安全分配方式?

解:

安全分配是一种“摈弃请求和保持条件”的资源分配方式。在这种方式中,一个进程一旦获得请求资源,该进程就由运行状态变为阻塞状态,使它不可能再请求新的资源。相反,当该进程开始运行时(如I/O完成后被唤醒),它已不占有资源。因此,这种分配摈弃了造成死锁的一个条件,分配是安全的。这种分配方式的缺点是进程推进速度慢,因为CPU和I/O是串行的。

不安全的分配方式是指进程在提出资源请求时系统不做任何检查,将资源分配给它,当它再提出第2个资源请求时,若请求的资源已被其它进程占用,该进程不得不被阻塞等待,那么我们说该进程具备了“请求和保持”的条件。具备这种条件的进程可能产生死锁,因此说,这种分配是不安全的分配。

(12) I/O软件一般分为4个层次:用户层I/O软件、设备无关软件、设备驱动程序、I/O中断处理程序。请说明下列工作各由哪一层I/O软件来完成:

①为了读盘,计算磁道、扇区和磁头; ②维护最近使用的盘块所对应的缓冲区; ③把命令写到设备寄存器中; ④检查用户使用设备的权限;

⑤把二进制整数转换成ASCⅡ码并打印。 解:

①、③、④和⑤属于设备驱动程序的职责,②属于设备无关软件层的职责,

(13) 在某个系统的某个运行时刻,有如下表示的磁盘访问的请求序列,假设磁头当前在15柱面,磁臂方向为从小到大。

15、20、9、16、24、13、29

请给出最短查找时间优先算法和电梯调度算法的柱面移动数,并分析为何通常情况下,操作系统并不采用效率更高的最短查找时间优先算法。

解:

1) 按照最短查找时间优先算法,柱面的访问次序是: 15、16、13、9、20、24、29

令磁臂移动方向从小到大为正向,从大到小的方向为反向,那么,最短查找时间优先算法的柱面移动次数为:1+|-3|+|-4|+11+4+5=28。

2) 按照电梯调度算法,柱面的访问次序是: 15、16、20、24、29、13、9

电梯调度算法的柱面移动数为:1+4+4+5+|-16|+|-4|=34。

3) 从本题给的例子看,最短查找时间优先算法比电梯调度算法的柱面移动数少6。因此说前者的效率更高一些。但是,由于磁头在访问操作中,可能不断有新的柱面请求加入,使磁头忙于应付一些距离较近的柱面请求,冷落了对远距离柱面的响应。长此以往,将可能造成某些远距离柱面处于“饥饿”状态。这就是通常情况下操作系统并不采用最短查找时间优先算法的原因。

(14) 假设有A、B、C和D四个记录存放在磁盘的某个磁道上。该磁道分成4块,每块存放一个记录,其布局如下:

块号 记录号 1 A 2 B 3 C 4 D 现在要顺序处理这些记录,如果磁盘旋转速度为20ms转一周,处理程序每读出一个记录后花5ms的时间进行处理。试问处理完这4个记录的总时间是多少?为了缩短时间,应该如

何优化分布,优化后的处理时间是多少?

解:

由题分析可知,读出一个扇区的时间为5ms(也就是盘片旋转一周的1/4),处理的时间也为5ms。系统处理完记录A后要读记录B必须等待磁盘旋转3个扇区。因此系统处理完记录B需要耗时3?5+5+5=25ms。

其它记录的读出与处理耗时皆如此分析,则优化前总处理耗时T1为:

T1=(5+5)+(5?3+5+5)+(5?3+5+5) +(5?3+5+5)=85ms 为了减少系统的等待时间,可以将记录的存储序列进行优化,优化后的顺序为:A, C, B, D。

优化后处理总时间T2为: T2=(20/4+5) ?4+5=45ms

(15) 为什么要引入磁盘高速缓存?什么是磁盘高速缓存?

解:

磁盘的I/O速度远低于内存的访问速度,通常要低4~6个数量级。因此,磁盘的I/O已成为计算机系统的性能瓶颈。为了提高磁盘I/O的速度,其中最主要的技术便是采用磁盘高速缓存。

磁盘高速缓存并非通常意义下的内存和CPU之间增设的一个小容量高速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,这里的高速缓存是一组在逻辑上属于磁盘,而物理上驻留在内存中的盘块。高速缓存在内存中可分成两种形式。第一种是在内存中开辟一个单独的存储空间来作为磁盘高速缓存,其大小是固定的,不会受应用程序多少的影响;第二种是把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O共享。

(16) 廉价磁盘冗余阵列是如何提高对磁盘的访问速度和可靠性的?

解:

用一台专门控制磁盘阵列的控制器,统一管理和控制一组磁盘驱动器,这样形成廉价磁盘冗余阵列。

1) 提高磁盘访问速度的主要措施是“并行交叉存取”技术。系统将每一盘块的数据

分成若干子盘块,并将每个子盘块的数据分别写到各个不同磁盘的相同位置。当需要访问盘块时,采用并行传送方式,各盘块相同位置的子盘块同时向内存传输。这样一来,磁盘访问速度可提高N-1倍。

2) 提高磁盘可靠性的措施按RAID技术规定可分为:磁盘镜像技术、设专门的奇偶校

验盘、校验数据以螺旋方式散布的校验方式、设置专用快速异步校验盘等。

第8章 操作系统的安全和保护

(1) 说明计算机系统的可靠性和安全性的区别和联系。

解:

计算机系统的安全性和可靠性是两个不同的概念,可靠性是指硬件系统正常持续运行的程度,而安全性是指不因人为疏漏或蓄意操作而导致信息资源被泄露、篡改和破坏。可靠性是基础,安全性更为复杂。

(2) 叙述计算机系统安全的主要内容。

解: 计算机系统安全涉及的内容非常广泛,总体上来讲包括三个方面的内容:物理安全、逻辑安全和安全管理。物理安全是指系统设备及相关设施受到物理保护,使之免遭破坏或丢失,

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

Top