2024年2月26日发(作者:)

第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

到达时间

8.0

运行时间

1.0

2

3

4

8.5

9.0

9.1

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;

(item);

}

}

void consumer()

{

while (true)

{

item=;

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)

所以先试着把P2所申请的资源分配给它,Available变为(2,3,3,0)得到系统状态如下表所示:

Allocation

A

P0 0

P1 1

P2 3

P3 2

P4 0

B

0

1

2

0

2

C

2

0

1

0

2

D

2

0

4

0

2

Need

A

0

2

2

4

0

B

0

6

1

0

5

C

4

3

0

2

5

D

3

0

4

0

4

Available

A

2

B

3

C

3

D

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]

又因为:Max[i]=Need[i]+Allocation[i],所以∑Max[i]= ∑Need[i] + ∑Allocation[i] ⑦

由⑥式和⑦式得:∑Need[i] + ∑Allocation[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桶,且不可同时进行。试给出取水、入水的同步算法。

解:

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

Need

D

2

0

6

A

0

1

1

B

0

7

1

C

1

5

3

D

2

0

4

Available

A

0

B

4

C

0

D

0

B

0

0

5

C

3

0

7

P3 0

P4 0

0

0

3

1

2

4

0

0

6

6

5

5

2

6

然后进行安全性检测,此时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. 从逻辑上扩充内存空间,支持大程序能在小的内存空间运行或允许更多的进程并发执行。

为了完成上述任务,现代操作系统的存储管理应具有以下功能:

1. 存储空间的分配和回收。

2. 地址转换,实现逻辑地址到物理地址的映射。

3. 主存空间的共享。

4. 主存空间的保护。

5. 主存储空间的扩充。

6. 对换,对换的主要任务是实现在内存和外存之间的全部或部分进程的对换,即将内

存中处于阻塞状态的进程调换到外存上,而将外存上处于就绪状态的进程换入内存。对换的目的主要是为了提高内存利用率,提高系统的吞吐量。

(2) 为什么要配置层次式存储器?

解:

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

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

解:

逻辑地址是应用程序中使用的访存地址,有时也称为相对地址,由逻辑地址构成的地址空间称为逻辑空间。每个应用程序的逻辑地址空间都是从零号地址码开始的。

物理地址是内存储器的实际存储单元地址,有时也称为绝对地址,由物理地址构成的地址空间称为物理空间。物理地址空间也是从零号地址码开始的。

在多道程序环境下,程序逻辑地址空间和内存物理地址空间是不一致的。用户程序的逻辑地址可以是一维线性或多维线性,而内存中的每一个存储单元都有相应的内存地址相对应,属于一维线性地址。在将用户程序部分或全部地装入内存空间时,要实现逻辑地址到物理地址的映射。

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

解:

地址重定位指从逻辑地址到物理地址的映射过程,也称为地址映射。

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

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

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

解:

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

在所有分区之外新增的碎片称作外部碎片,如在动态分区法实施过程中出现的越来越多的小空闲块就是外部碎片,由于它们太小,无法装入一个进程,因而被浪费掉。

(6) 什么是分页和分段存储技术,两者有何区别?

解:

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

在分段存储管理方式中,程序按内容或过程(函数)关系划分为若干个段,每个段定义一组逻辑信息,都有自己的名字。一个用户作业所包含的段对应于一个二维线性虚拟空间,也

就是一个二维虚拟存储器。段式管理程序以段为单位进行内存分配,然后通过地址映射机构把段式虚拟地址转换为实际的内存物理地址。

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

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

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

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

(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转换成物理地址。

解:

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

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

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

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

解:

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

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

(15) 在虚拟页式存储系统中引入了缺页中断,说明引入缺页中断的原因,并给出其实现的方法。

解:

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

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

当CPU执行一条指令时,形成操作数的有效地址。其中的页号部分用来检查页表,看该页是否在内存。如果在内存,则进行地址变换,按变换后的地址取出操作数;如果不在内存,则引起缺页中断,进入缺页中断处理程序。在缺页中断处理程序中,主要的处理为:

1 利用存储器分块表检查实存是否有空闲页面。

2 如果有空闲存储块,则根据页表提供的磁盘地址调入所需的页面,修改页表和分块表后返回。

3 如果没有空闲存储块,则选择一页淘汰掉。若该页被修改过还需写回外存,调入所需的页面。然后修改页表和分块表,返回。

(16) 试述缺页中断与一般中断的主要区别。

解:

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

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

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

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

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

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

0

1

基址

219

2300

长度

600

14

2

3

4

90

1327

1952

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) 什么是抖动?产生抖动的原因是什么?

解:

抖动是由于内存空间竞争引起的。当需要将一个新页面调入内存时,因内存空间紧张,不得不将一个老页面置换出去,而刚刚置换出去的老页面可能又要被使用,因此需要重新将它调入。若一个进程频繁地进行页面调入调出,势必加大系统的开销,使系统运行效率降低。通常称这种现象为该进程发生了抖动。

产生抖动的原因主要有:系统内的进程数量太多,致使一个进程分得的存储块过少;系统采用的置换算法不够合理。

第6章 文件管理

(1) 什么是文件,它包含哪些内容及特点?

解:

文件是计算机系统中信息存放的一种组织形式,是在逻辑上具有完整意义的信息集合,并且有一个名字以供标识。

文件包含的内容有:源程序、二进制代码、文本文件、数据、表格、声音和图像等。

文件的特点如下:

1. 文件具有保存性。它被存储在某种存储介质上,长期保存和多次使用。

2. 文件是按名存取的。每个文件具有唯一的标识名,通过标识名(文件名)来存取文件中的信息,而不需了解文件在存储介质上的具体物理位置。

3. 文件的内容是一组信息的集合。信息可以是源程序、二进制代码、文本文件、数据、表格、声音和图像等。

(2) 文件系统要解决哪些问题?

解:

文件系统的主要目标是提高存储空间的利用率,它要解决的主要问题有:完成文件存储空间的管理,实现文件名到物理地址的转换,实现文件和目录的操作,提供文件共享能力和安全措施,提供友好的用户接口。文件系统向用户提供了有关文件和目录操作的各种功能接口和系统调用,如命令接口、程序接口和交互接口等。

(3) 什么是逻辑文件?什么是物理文件?

解:

逻辑文件时从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构。

物理文件是指文件在外存上的存储组织形式。它与存储介质的存储性能有关。

(4) 文件的物理组织方式有哪些,各有什么优缺点?

解:

文件的物理组织方式有连续文件结构、链接文件结构和随机文件结构。

1. 连续文件结构是由一组分配在磁盘连续区域的物理块组成的。文件中的每一个记录有一个序号,序号为i+1的记录,其物理位置一定紧跟在i号记录之后。

2. 链接文件结构是按顺序由串联的块组成的,即文件的信息按存储介质的物理特性存于若干块中,一块中可包含一个逻辑记录或多个逻辑记录,或者一个逻辑记录占有多个物理块。每个物理块的最末一个字(或第一个字)作为链接字,它指向后继块的物理地址。文件的最后一块的链接字为结束标记(例如“”),它表示文件至本块结束。

3. 随机文件结构是实现非连续分配的另一种方式。在随机文件结构中,文件的数据记录存放在直接存取型存储设备上,数据记录的关键字和其地址之间建立某种对应关系,并利用这种关系进行存取。通常有三种形式的随机文件结构:直接地址结构、索引结构和散列结构。

连续文件的优点是不需要额外的空间开销,只要在目录中指出起始块号和文件长度,就可以对文件进行访问,且一次可以读出整个文件。对于固定不变且要长期使用的文件(比如系统文件),这是一种较为节省的方法。其缺点是:

1. 不能动态增长。因为在它后面如果已经记录了别的文件,则这一文件增长就可能破坏后边的文件。如果后移下一个文件,则系统开销太大,甚至不可能。

2. 一开始就提出文件长度要求,而要用户预先知道文件长度不是太容易。

3. 一次要求比较大的连续存储空间,不一定好找。因为,如果外存上只有许多小的自由空间,虽然其总容量大于文件的要求,但由于不连续,因而这些空间可能被浪费。

链接文件可以克服连续文件的上述缺点,然而它也存在如下缺点:

1. 由于在处理文件的一部分时必须得顺序访问,因而访问速度较慢,时间上比较浪费。

2. 对块链接而言,每个块中都要有链接字。所以,要占用一定的存储空间。

相比之下,随机文件是一种比较好的结构,便于直接存取。但问题是,对于索引文件应

考虑如何有效地存储和访问索引表,对于散列文件应寻找一个较好的散列算法和确定解决冲突的办法。

(5) 什么是文件目录,常用的文件目录结构有哪些,各有什么特点?

解:

文件目录是文件控制块的有序集合,是文件系统中最基本的数据结构。通过它可以将文件名转换为文件在外存的物理位置。每一个文件控制块在文件目录中都有一个目录项,其中登记着文件的名字、外存地址、文件长度、逻辑结构、物理结构、访问权限、文件建立和修改时间等。

文件目录通常是放在磁盘上的。它的组织形式有3种:单级目录、二级目录和多级目录。其中用得最普遍的是多级目录。

1. 单级目录是最简单的目录结构。在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中包含文件名、文件扩展名、文件类型、文件长度、文件物理地址以及其它文件属性。

2. 为了克服单级目录存在的缺点,改变单级目录中文件的命名冲突,并提高对目录文件的检索速度,可以为每一个用户建立一个单独的用户文件目录UFD(User File

Directory)。这些文件目录具有相似的结构,它由用户所有文件的文件控制块组成。另为,系统再建立一个主文件目录MFD (Master File Directory),在主文件目录中,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。

3. 在大型文件系统中,通常采用三级或三级以上的目录结构,以提高对目录的检索速度和文件系统的性能。多极目录结构又称为树型目录结构。多级目录结构是一棵倒向的有根树,树根是根目录;从根向下,每一个树枝是一个子目录,而树叶则是文件。树形目录有许多优点:它较好地反映了现实世界中具有层次关系的数据集合和较确切地反映系统内部文件的分支结构,不同的文件可以重名,只要它们不位于同一子目录中即可,易于规定不同层次或子树中文件的不同存取权限,便于文件的保护、保密和共享等。

(6) 使用文件系统时,为什么要显式地使用open和close命令来打开和关闭文件?

解:

显式的open操作完成文件的打开功能。它将基本文件目录中的内容读入用户活动文件表中,并在系统活动文件表中记录文件的打开次数。显式的close操作完成文件的关闭操作。它撤销用户的活动文件表中相应的表项,改变系统活动文件表中的文件打开次数信息。如果需要,还要将被改动过的文件目录信息写回基本文件目录中。

可以取消显式的open与close操作。如果取消了open和close操作,系统在进行文件操作前需判断文件是否已打开。若未打开,则应自动完成文件的打开功能,以建立用户与文件间的联系。同时,在系统结束时还应自动关闭所有的被打开文件,更新系统的基本文件目录。

取消显式的open和close操作使得文件的读写操作变得复杂,因为,在每次读写前都需要判断文件是否已被打开。此外,系统在结束时也要做一些额外的工作,以完成close应该完成的操作。

(7) 文件系统提供系统调用rename来实现文件重命名,同样也可以通过把文件拷贝到新文件并删除原文件来实现文件的重命名,这两种方法有什么不同?

解:

使用rename文件重命名功能时,用户必须提供两个参数:旧文件名和新文件名。实现该功能时,系统使用旧文件名查找文件目录,若找到旧文件名所对应的目录表项,则将目录

表项中文件名字段对应的值改为新文件名值。从实现过程看,文件重命名功能完成的工作是修改目录表项中的文件名字段,除文件名外,文件的其它特性都未改变。

在后一种实现方法中,先进行文件复制并给复制文件起一个新名,此时系统完成了一次物理文件的复制工作,然后删除旧文件。虽然这样也能达到给文件重命名的目的,但其实现过程比前一种方式复杂,并且新文件与旧文件的物理存放地址肯定不同。

(8) Hash检索法有何优点?有何局限性?

解:

Hash方法是根据记录的“主属性值”进行Hash运算,用得出的值确定该记录的存放位置。其优点是:

 该方法实现起来比较简单。

 检索记录的时间也比较短。

由于设计的Hash函数很难达到理想的均匀分布,因此可能会出现较多有相同Hash的记录值,这将造成存放位置的冲突,使检索速度下降。

(9) 采用单级目录能否满足对目录管理的主要要求?为什么?

解:

单级目录是最简单的目录结构。在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中包含文件名、文件扩展名、文件类型、文件长度、文件物理地址以及其它文件属性。

单级目录的优点是简单、易于实现,实现了目录管理的基本功能——按名存取,但却存在以下一些缺点:

1. 查找速度慢:当系统中存在大量文件或众多用户同时使用文件时,由于每个文件占用一个目录项,单级目录中就拥有数量可观的目录项。如果要从目录中查找一个文件,就需要花费相当长的时间才能找到。对于一个具有N个目录项的单级目录,为检索出一个目录项,平均需要找N/2个目录项。

2. 不允许重名:因为所有的文件都在同一目录中,因此每个文件必须有不同的文件名,然而,重名问题在现代操作系统中是难以避免的。另外,即使在单用户环境下,随着文件数量的增加,让用户记住所有的文件名也是不可能的。

3. 不便于文件的共享:通常每个用户都有自己的名字空间和命名习惯,应当允许不同用户使用不同的文件名来访问同一文件,然而,单级目录却要求所有用户用同一个名字来访问同一文件。

所以,单级目录不能满足对目录管理的主要要求。

(10) 什么是文件的共享,实现文件共享的方式有哪些?

解:

文件共享是指不同的用户可以使用同一文件。文件的共享可以节省大量的辅存空间和内存空间,减少输入/输出操作,为用户间的合作提供便利条件。

从系统管理的角度来看,有3种方法可以实现文件的共享,即:绕道法、 链接法和基本文件目录表 BFD。

(11) 文件目录和目录文件各起什么作用?

解:

文件目录又称文件控制块或文件说明信息,它记录文件的名字、文件长度、文件存放在外存上的物理地址,以及文件建立时间、日期等信息。通常,文件系统中把若干相互关联文件的目录组成一个独立的文件,这个由文件目录组成的文件称为目录文件。

(12) 某操作系统的磁盘文件空间共有500块,若用字长为32位的位示图管理磁盘空间,试

问:①位示图占用多少磁盘空间?②第i字第j位对应的磁盘块号是多少?

解:

① 占用16个字的存储空间。

② 32i+j。

(13) 试说明对索引文件和索引顺序文件的检索方法。

解:

索引文件中,每一个主文件的记录都要建立一条索引。这里,主文件的记录可以是变长的,键值可以是无序的。索引表是定长的和有序的,适合采用折半检索法进行检索。

索引顺序文件中,主文件中的记录分成若干组,每一组的第一条记录建立一条索引项。整个索引文件是按键值排序的,系统可采用折半检索法对文件进行快速检索。检索到记录所在的外存块后,读出该块,再进行顺序查找和比较,最后找到所需要的记录。

(14) 目前广泛采用的目录结构形式是哪一种?它有什么优点?

解:

目前广泛采用的目录结构形式是多级目录结构,也称树型目录结构。它可以实现文件管理的主要要求,其优点是:

 检索速度快

 文件可重名

 便于文件共享

(15) 基本的文件访问类型有哪些?什么是访问控制表?

解:

一个文件系统可以定义多种不同的访问类型,基本的访问类型有:

● 读(R):从文件中读信息。

● 写(W): 对文件内容进行写或重写。

● 执行(E):用户可以将文件装入内存并执行它。

● 添加(A):将信息添加到文件末尾。

● 删除(D):删除文件,释放其占用的空间。

不同的用户可能对同一个文件或目录需要不同类型的访问。实现基于身份访问的最普通的方法是为每个文件和目录增加一个访问控制表(access control list,ACL),以给定每个用户名及其所允许的访问类型。当用户请求访问一个特定文件时,操作系统先检查该文件的访问控制表,如果用户具有相应的访问权限,就允许其访问,否则,就出现保护违约,拒绝用户访问。

(16) 什么是索引文件?为什么要引入多级索引?

解:

索引文件中每条主文件的记录都建立一个索引记录,因而需要为主文件建立索引表。在对索引文件进行检索时,首先根据用户(程序)提供的关键字,并利用折半查找法去检索索引表,从中找到对应的表项,再利用该表项中给出的指向记录的指针值,去访问所需的记录。

在很多情况下,有的文件很大,文件索引表也就较大。如果索引表的大小超过一个物理块,那么我们就必须像处理其它文件的存放那样决定索引表的物理存放方式,但这不利于索引表的动态增加;索引表也可以按链接联方式存放,但这却增加了存放索引表的时间开销。显然,当文件太大,其索引块太多时,这种方法是低效的。一种较好的解决办法是采用多级索引,也就是在索引表所指的物理块中存放的不是文件信息,而是装有这些信息的物理块地址。

第7章 设 备 管 理

(1) 简单叙述设备管理的任务和功能。

解:

设备管理的主要任务包括:

1. 响应用户进程提出的I/O请求,选择和分配I/O设备进行数据传输操作。

2. 控制I/O设备和CPU(或内存)之间进行数据交换,提高设备和设备之间、CPU和设备之间以及进程和进程之间的并行操作度,提高CPU与I/O设备的利用率,提高I/O设备的速度。

3. 方便用户使用设备,为用户提供友好的透明接口,把用户和设备硬件特性分开,使得用户在编写应用程序时不必涉及具体的设备,系统按照用户的要求控制设备工作。另外,这个接口还为新增加的用户设备提供一个和系统核心相连接的入口,以便用户开发新的设备管理程序。

为了完成上述任务,设备管理应具有下述功能:

1. 设备分配: 计算机系统中的设备不允许用户直接使用,而是由操作系统统一分配和控制。设备分配的基本任务是根据用户进程的I/O请求及系统当前的I/O资源情况,按照某种设备分配算法为用户进程分配所需的设备。

2. 缓冲管理: 为缓和CPU和I/O设备间速度不匹配的矛盾,提高CPU与I/O设备之间以及各设备之间的并行性,现代操作系统都引入了缓冲技术。

3. 设备驱动: 设备驱动是指对物理设备进行控制,实现真正的I/O操作。设备驱动的基本任务是实现CPU与设备控制器之间的通信,即接收由CPU发来的I/O命令,如读/写命令,转换为具体要求后,传给设备控制器,启动设备去执行;同时也将由设备控制器发来的信号传送给CPU,如设备是否完好、是否准备就绪、I/O操作是否已完成等,并进行相应的处理。

(2) 简单比较一下各种I/O控制方式的优缺点。

解:

I/O控制方式有四种,即程序直接控制方式、中断控制方式、DMA方式和通道控制方式。它们各自的优缺点叙述如下:

1. 程序直接控制方式。优点是控制简单,不需要很多硬件支持。但CPU和外设之间只能串行工作,且CPU的大部分时间处于循环测试状态,这使得CPU的利用率大大降低;CPU在一段时间内只能和一台外设交换数据信息,从而不能实现设备之间的并行工作;由于程序直接控制方式依靠测试设备状态标志来控制数据传送,因此无法发现和处理因设备或其它硬件所产生的错误。所以,程序直接控制方式只适用于那些CPU执行速度较慢且外设较少的系统。

2. 中断控制方式。优点是能实现CPU与设备、设备与设备间的并行操作,CPU的利用率较程序直接控制方式大大提高。但I/O控制器的数据缓冲寄存器通常较小,且数据缓冲寄存器装满数据后将会发出中断,因此一次数据传送过程中中断次数较多,耗去了大量CPU时间;如果系统中配置的外设数目较多,且都以中断方式进行控制,则将耗去大量CPU时间或因CPU来不及处理而造成数据丢失。

3. DMA方式。与中断方式相比,DMA方式的优点是在一批数据传送完成后中断CPU,从而大大减少了CPU进行中断处理的次数,并且DMA方式下的数据传送是在DMA控制器控制下完成的,在数据传输过程中无需CPU干预。但DMA方式仍有一定的局限,如对外设的管理和某些操作仍由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) 叙述计算机系统安全的主要内容。

解:

计算机系统安全涉及的内容非常广泛,总体上来讲包括三个方面的内容:物理安全、逻

辑安全和安全管理。物理安全是指系统设备及相关设施受到物理保护,使之免遭破坏或丢失,如计算机环境、设施、设备、载体和人员,对于这些物理因素,需要采取行政管理上的安全对策和措施,防止突发性或人为的损害或破坏;安全管理包括各种安全管理的政策和机制。逻辑安全是针对计算机系统,特别是计算机软件系统的安全和保护,严防信息被窃取和破坏。它又包括以下四个方面。

1. 数据保密性(Data Secrecy):指保护信息不被未授权者访问,仅允许被授权的用户访问。

2. 数据完整性(Data Integrity):指未经授权的用户不能擅自修改系统中保存的信息,且能保持系统中数据的一致性。

3. 系统可用性(System Availability):指授权用户的正常请求能及时、正确、安全地得到服务或响应。或者说,计算机中的资源可供授权用户随时进行访问,系统不会拒绝服务。系统拒绝服务的情况在互联网中很容易出现,连续不断地向某个服务器发送请求就可能会使该服务器瘫痪,以致系统无法提供服务,表现为拒绝服务。

4. 真实性(Authenticity):要求计算机系统能证实用户的身份,防止非法用户侵入系统,以及确认数据来源的真实性。

(3) 安全操作系统的主要功能有哪些?

解:

一个安全的操作系统包括以下功能:

1. 进程管理和控制。在多用户计算机系统中,必须根据不同的授权将用户进行隔离,但同时又要允许用户在受控路径下进行信息交换。构造一个安全的操作系统的核心问题就是具备多道程序功能,而实现多道程序功能取决于进程的快速转换。

2. 文件管理和保护。包括对普通实体的管理和保护(对实体的一般性访问存取控制)以及对特殊实体的管理和保护(含用户身份鉴定的特定的存取控制)。

3. 运行域控制。运行域包括系统的运行模式、状态和上下文关系。运行域一般由硬件支持,也需要内存管理和多道程序的支持。

4. 输入/输出访问控制。安全的操作系统不允许用户在指定存储区之外进行读写操作。

5. 内存保护和管理。内存保护是指,在单用户系统中,在某一时刻,内存中只运行一个用户进程,要防止它不影响操作系统的正常运行;在多用户系统中,多个用户进程并发,需要隔离各个进程的内存区,防止这些进程影响操作系统的正常运行。内存管理是指要高效利用内存空间。内存管理和内存保护密不可分。

6. 审计日志管理。安全操作系统负责对涉及系统安全的时间和操作做完整的记录、报警和事后追查,并且还必须保证能够独立地生成和维护审计日志以及保护审计过程免遭非法访问、篡改和毁坏。

(4) 计算机或网络系统在安全性上受到的威胁有哪些?

解:

计算机或网络系统在安全性方面受到的威胁可分为如下4种类型:

1. 中断。也称为拒绝服务,是指系统的资源被破坏或变得不可用或不能用。这是对可用性的攻击,如破坏硬盘、切断通信线路或使文件管理失败。

2. 截取。未经授权的用户、程序或计算机系统通过非正当途径获得对资源的访问权。这是对保密性的威胁,例如在网络中窃取数据及非法复制文件和程序。

3. 篡改。未经授权的用户不仅获得对资源的访问,而且进行篡改,这是对完整性的攻击,例如修改数据文件的信息,修改网络中正在传送的消息内容。

4. 伪造。未经授权的用户不仅从系统中截获信息,而且还可以修改数据包中的信息,将伪造的对象插入到系统中,这是对真实性的威胁,例如,非法用户把伪造的消

息加到网络中或向当前文件加入记录。

(5) 什么是被动威胁和主动威胁?它们分别发生在什么场合?

解:

被动威胁实际上是对传输过程中的信息进行窃取和截获,攻击者的目的是非法获得正在传输的信息,了解信息内容和性质。被动威胁导致信息内容泄露和信息流量被分析。被动威胁比较隐蔽,很难被检测发现,因为它不对信息进行修改,也不干扰信息的流动。对付被动威胁的关键在于预防,而不是检测。

主动威胁不但截获数据信息,而且还冒充用户对数据进行修改、删除或生成伪造数据。主动威胁很难预防,只能通过检测发现,并恢复主动威胁导致的破坏。

(6) 简单叙述计算机系统常用的安全机制。

解:

计算机系统常用的安全机制主要包括:加密机制、认证机制、授权机制、审计机制等。

1) 数据加密技术对系统中所有存储和传输的数据进行加密,使之成为密文。这样,攻击者在截获到数据后,无法查看到数据的内容;而只有被授权者才能接收和对该数据予以解密,查看其内容,从而有效地保护系统信息资源的安全性。

2) 认证机制包括数字签名和身份认证。对文件进行加密只解决了传送信息的保密问题,而防止他人对传输文件进行破坏,以及如何确定发信人的身份还需要采取其它的方法,这一方法就是数字签名。在电子商务安全保密系统中,数字签名技术有着特别重要的地位,电子商务安全服务中的源鉴别、完整性服务、不可否认服务都要用到数字签名技术。完善的数字签名应满足下述三个条件:

1. 签字方事后不能抵赖其签名。

2. 其他人不能伪造对报文的签名。

3. 接收方能够验证签字方对报文签名的真伪。

身份认证是安全操作系统应该具备的最基本功能,是用户要进入系统访问资源或在网络中通信双方在进行数据传送之前实施审查和证实身份的操作。

3) 授权机制用于确认用户或进程在授权许可下才能够访问使用计算机的资源。

4) 审计是通过事后追查手段来保证系统的安全,是对系统实施的一种安全性技术措施,它对涉及系统安全的相关操作活动作一个完整的纪录,并进行检查及审核。实际上,审计的主要目的就是检测和阻止非法用户对计算机系统的入侵,并记录合法用户的误操作。审计为系统对安全事故原因的查询、事故发生地点、时间、类型、过程、结果的追查、事故发生前的预测及报警提供详细、可靠的依据和支持。审计记录一般应包括如下信息:事件发生的时间、地点、代表正在进行事件的主体的惟一标识符、事件的类型、事件的成败等。

(7) 简单叙述对称加密算法和非对称加密算法。

解:

在对称加密算法中,加密和解密算法使用相同的密钥。加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。对称加密算法要求发送方和接收方在安全通信之前,商定一个密钥。对称加密也称私钥加密、密钥加密。对称加密算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信安全至关重要。

非对称加密算法使用两把完全不同的一对钥匙:公钥和私钥。在使用非对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密。加密明文时采用公钥加密,解密密文时使用私钥,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)唯一知道自己的私钥。非对称加密也称公开密钥加密法。非对称加密算法的基本原理

是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥解密密文。

(8) 试说明数字签名的加密和解密方式。

解:

基于公开密钥密码算法的数字签名主要原理如下:

1. 报文的发送方从报文文本中生成一个128位的散列值,称之为报文摘要。

2. 发送方用自己的私钥对该报文摘要进行加密,形成发送方报文的数字签名。

3. 该报文的数字签名作为报文的附件和报文一起发送给接收方。

4. 报文接收方从接收到的原始报文中计算出128位的报文摘要。

5. 报文接收方用发送方的公钥对报文附加的数字签名进行解密。如果两个报文摘要相同,那么接收方就能确认该数字签名是发送方的。

(9) 数字证书的作用是什么?用一例子来说明数字证书的申请、发放和使用过程。

解:

数字证书是一种权威性的电子文档,它提供一种在Internet上验证用户身份的方式,其作用类似于驾驶执照、身份证、护照。它由一个权威机构证书授权(Certificate Authority) CA中心发行,可以在互联网中用它来识别对方的身份。在数字证书认证的过程中,证书认证中心(CA)作为权威的、公正的、可信赖的第三方,其作用至关重要。在国际电信联盟ITU(International Telecommunication Union)指定的X.509标准中,规定数字证书的内容应包括:用户名称、发证机构名称、公开秘钥及其有效日期、证书编号以及发证者签名。下面通过一个具体例子来说明数字证书的申请、发放和使用过程。

1. 用户A首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心CA。

2. 认证中心CA在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来。然后,认证中心将发给用户一个数字证书,该证书内包含用户A的个人信息和他的公钥信息,同时还附有认证中心的签名信息。

3. 用户A在向用户B发送信息时,用户A用私有密钥对信息的报文摘要加密,形成数字签名,并连同已加密的数字证书一起发送给用户B。

4. 用户B向CA机构申请获得CA的公开密钥。CA收到用户B的申请后,将CA的公开密钥发送给用户B。

5. 用户B利用CA的公开密钥对数字证书进行解密,确认该数字证书是原件,并从数字证书中获得用户A的公开密钥,并且也确认该公开密钥确系是用户A的密钥。

6. 用户B利用用户A的公开密钥对用户A发送来的数字签名进行解密,从而得到用户A发来的报文的真实明文,并鉴别用户A的真实身份。

(10) 什么是计算机病毒?计算机病毒有什么危害?

解:

计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。

计算机病毒的危害可表现在以下几个方面:

1. 占用系统空间。计算机病毒是一段程序,会占用一定的磁盘空间和内存空间。病毒程序虽然很小,但随着病毒的繁殖,数量会急剧增加,将占用大量的磁盘空间和内存空间,最终致使系统存储空间消耗殆尽。

2. 占用CPU时间。计算机病毒在运行时会占用CPU时间,随着病毒数量的增加,将会消耗更多的CPU时间,这会导致系统运行速度变得异常缓慢,进一步还可能完全独占CPU时间,致使计算机系统无法向用户提供服务。

3. 破坏文件。计算机病毒可以增加或减少文件的长度,改变文件的内容,甚至删除文件。病毒还可以通过对磁盘的格式化使整个系统中的文件全部消失。

4. 破坏计算机软硬件系统。计算机病毒可破坏计算机软硬件系统,致使计算机出现异常情况,如提示一些莫名其妙的指示信息,显示异常图形等,甚至致使计算机运行减缓,完全停机。1998年6月爆发于中国台湾的CIH病毒不但会破坏计算机硬盘中的信息,而且还会破坏 BIOS,使系统无法启动,从而很难杀除。由于染毒的BIOS无法启动系统,故障现象与主板硬件损坏一样,所以CIH 病毒被认为是第一个破坏计算机硬件系统的病毒。

(11) 简述计算机病毒的类型。

解:

当今计算机病毒种类非常多,通常可分为如下几类:

1. 文件型病毒。文件型病毒是当前最为普遍的病毒形式,通过在运行过程中插入指令,把自己依附在可执行文件上。然后,利用这些指令来调用附在文件中某处的病毒代码。当文件执行时,病毒会调出自己的代码来执行,接着又返回到正常的执行指令序列。通常,这个执行过程发生很快,以至于用户并不知道病毒代码已执行。

2. 引导扇区病毒。引导扇区病毒潜伏在磁盘上用于引导系统的引导区。当系统开机时,病毒便借助于引导过程进入系统,通常引导扇区病毒先执行自身的代码,然后再继续系统的启动进程。病毒通过复制代码使引导区病毒感染计算机系统或者软盘引导扇区或硬盘分区表。 在启动期间, 病毒加载到内存,一旦在内存, 病毒将感染由系统访问的任何非感染磁盘。

3. 宏病毒。宏是微软公司为其OFFICE软件包设计的一个特殊功能,软件设计者为了让人们在使用软件时,避免一再地重复相同的动作而设计出来的一种工具,它利用简单的语法,把常用的动作写成宏,当在工作时,就可以直接利用事先编好的宏自动运行,去完成某项特定的任务,而不必再重复相同的动作,目的是让用户文档中的一些任务自动化。

4. 宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。从此以后,所有自动保存的文档都会感染上这种宏病毒,而且如果其他用户打开感染病毒的文档,宏病毒又会转移到他的计算机上。

5. 内存驻留病毒。内存驻留病毒一旦执行,自己便占据内存驻留区。这是计算机运行程序和文件时载入它们的地方。病毒在内存中占据重要位置,病毒可以访问在计算机上运行的所有重要操作,它可以在文件和程序访问、修改或者操作时很轻松地破坏它们。计算机关闭时,所有内存中的数据都将被清除,包括病毒。但是,当病毒感染系统时,它会确保每次计算机启动时都将在内存中激活病毒。内存驻留病毒会通过占用系统资源来使用户的计算机变慢。它们可以破坏数据和系统文件,这会使用户的计算机不能正常工作。

6. 邮件病毒。邮件病毒其实和普通的电脑病毒一样,只不过它们的传播途径主要是通过电子邮件,所以才被称为邮件病毒,由于它们一般通过邮件中“附件”夹带的方法进行扩散,只要接收者打开电子邮件中的附件,病毒就会被激活,它将把自身发送给该用户列表中的每个人,然后进行破坏活动。

(12) 什么是访问矩阵、访问控制表和访问权限表。

解:

1. 访问矩阵的行代表域,列代表对象。矩阵的每个条目是一个访问集合。由于列明

确定义了对象,可以在访问权限中删除对象名称。条目定义了在域Di中执行的进程在访问对象Oi时被允许执行的操作集合。

2. 把访问矩阵按列向量(对象)划分,为每一列建立一张访问控制表ACL(Access

Control List)。在该表中,矩阵中属于该列的所有空项已被删除,只剩下有序对<域,权集>。通常情况下,访问矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间,提高查找速度。

3. 访问矩阵按行(域)划分,为每一行建立一张访问权限表CL(Capability List)。访问权限表是由一个域对每一个对象可以执行的操作集合所构成的表。访问权限表包括两部分:对象名和访问权。表中的每一项为该域对某对象的访问权限。