操作系统简答题
第一章
- 在计算机系统上配置OS(operating system, 操作系统)的目标是什么?作用主要表现在哪几个方面?
在计算机系统上配置OS, 主要目标是实现:方便性、有效性、可扩充性和开 放性。
OS 的作用主要表现在以下3个方面:①OS作为用户与计算机硬件系统之间的接口;②OS 作 为计算机系统资源的管理者;③OS 实现对计算机资源的抽象。
- 试说明OS与硬件、其他系统软件以及用户之间的关系。
OS 是覆盖在硬件上的第一层软件,它负责管理计算机的硬件和软件资源,并 向用户提供良好的界面。 OS 与硬件紧密相关,它直接管理着硬件资源,为用户完成所有与硬件 相关的操作,极大地方便了用户对硬件资源的使用并提高了硬件资源的利用率。 OS 是一种特殊 的系统软件,也是其他系统软件与硬件之间的接口。其他系统软件运行在OS 的基础之上,可获 得OS 提供的大量服务。而一般用户使用计算机除了需要OS 支持外,还需要用到大量的其他系统 软件和应用软件,以使其工作更高效。可见,在OS、 硬件、其他系统软件以及用户之间存在着 图1-1-1所示的层次关系。
图1- 1- 1 计算机系统的层次关系
- 试说明推动OS 发展的主要动力是什么。
推动OS 发展的主要动力表现在:①计算机系统资源的利用率不断提高;②方 便用户;③器件不断更新换代;④计算机体系结构不断发展;⑤新的应用需求不断被提出。
- 在 OS 中,何谓脱机I/O(input/output, 输入/输出)方式和联机 I/O 方式?
脱机I/0 方式是指事先将装有用户程序或数据的纸带或卡片装入纸带输入机或 卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输人到磁带上,该方式下的I/O操作 由外围机控制完成,并且是在脱离主机的情况下进行的,因此叫作脱机I/O方式。联机I/O 方式是 指程序和数据的I/O都是在主机的直接控制下进行的。
- 试说明推动分时系统形成和发展的主要动力是什么。
推动分时系统形成和发展的主要动力是“为了更好地满足用户的需要”。其 主要表现在:①CPU(central processing unit, 中央处理机)的分时使用缩短了作业的平均周转 时间;②人机交互功能的提供使用户能方便地直接控制自己的作业;③主机的共享使多个用户 (包括远程用户)能同时使用一台计算机独立地、互不干扰地处理各自的作业。
- 实现分时系统的关键问题是什么?应如何解决?
实现分时系统的关键问题是使用户能与自己的作业进行交互,即用户在自己 的终端上输入一条命令以请求系统服务后,系统能及时地接收并处理该命令,并在用户能接受 的时延内将结果返回给用户。及时地接收命令和返回输出结果的实现方式是在系统中配置一个多路卡,并为每个终端配 置一个缓冲区以暂存用户输入的命令和输出的结果。因此,关键要解决的问题是确保在较短的 时间内系统中所有的用户程序都能执行一次,从而使用户输入的命令能够得到及时响应。为 此, 一方面,用户作业被提交后应立即进入内存;另一方面,系统应设置一个被称为时间片的 很短的时间,并规定每个程序每次最长只能连续运行一个时间片,如果时间片用完,则不管它 是否运行完毕,都必须将CPU 让给下一个作业。通过使作业分时共享CPU, 所有的作业都可以 得到及时的处理,用户的请求亦可得到及时的响应。
7. 为什么要引入实时系统?
实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对外部 事件的处理,并控制所有实时任务协调一致地运行。引入实时系统是为了更好地满足实时控制 领域和实时信息处理领域的需要。
- 什么是硬实时任务和软实时任务?试举例说明。
①硬实时任务是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果,如运载火箭的控制等。②软实时任务对截止时间的要求并不严格,偶尔错过任务的 截止时间,对系统产生的影响也不大,如网页内容的更新、火车售票系统剩余票数的更新等。
- 试从及时性、交互性及可靠性方面对分时系统与实时系统进行比较。
(1)从交互性方面来考虑。交互性问题是分时系统的关键问题。在分时系统中,用户可以 通过终端与系统进行广泛的人机交互,如文件编辑、数据处理和资源共享等。实时系统也具有 交互性,但在实时系统中,交互性仅限于访问系统中某些特定的专用服务程序,也就是说,它 的交互性具有很大的局限性。
(2)从及时性方面来考虑。分时系统的及时性是指用户能在很短的时间间隔内获得系统的 响应,这一时间间隔是根据人们能接受的等待时间来确定的, 一般为2~3s。对实时系统来说, 及时性是它的关键问题之一,实时信息系统的及时性要求与分时系统相似,而实时控制系统的 及时性要求则是由被控制对象所要求的开始截止时间和完成截止时间决定的, 一般为秒级、百 毫秒级、毫秒级,甚至更低。
(3)从可靠性方面来考虑。可靠性是实时系统的另一个关键问题,实时系统中的任何差错 都可能带来巨大的经济损失,甚至导致无法预料的灾难性后果,因此实时系统往往采取多级容 错措施来保证系统高度可靠。分时系统虽然也要求可靠,但比实时系统的要求要低。
- 微 机 OS 按运行方式来分,可以分为哪几类?举例说明。
现在流行的微机OS按运行方式可以分为以下3类。
(1)单用户单任务OS: 只允许一个用户上机(使用计算机),且只允许用户程序作为一个 任务运行,主要配置在8位和16位微机上。最具代表性的单用户单任务OS 是CP/M(8 位 ) 和MS- DOS(16 位 ) 。
(2)单用户多任务OS: 只允许一个用户上机,但允许用户把程序分为若干个任务并发执 行,从而有效地改善了系统性能。最具代表性的单用户多任务OS 是由微软公司推出的Windows 系列,如Windows 3.1、Windows 95、Windows 98等。
(3)多用户多任务OS: 允许多个用户通过各自的终端使用一台机器,共享主机系统中的各 种资源,而每个用户程序又可进一步分为若干个任务并发执行,从而可以进一步提高资源利用 率和系统吞吐量。最具代表性的多用户多任务OS 是UNIX 系统,各种类UNIX 系统(如SolarisLinux系统等)以及Windows NT/Server系列的系统。
- OS 具有哪几大特征?它们之间有何关系?
OS 具有并发、共享、虚拟和异步这4个基本特征。它们之间的关系包含以下 几个方面。①并发和共享是OS 最基本的特征。为了提高计算机资源的利用率, OS 必然要采用 多道程序设计技术,使多个程序共享系统的资源、并发地执行。②并发性和共享性互为存在的 条件。 一方面,资源的共享是以程序(进程)的并发执行为条件的,若系统不允许程序并发执 行,就不会存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,协调好各进 程对共享资源的访问,则必将影响程序的并发执行,甚至会使程序无法并发执行。③虚拟性以 并发性和共享性为前提。为了使并发进程能更方便、更有效地共享资源, OS 常采用多种虚拟技 术在逻辑上增加CPU 和设备的数量以及存储器的容量,从而解决并发进程对有限系统资源的共 享问题。④异步性是并发性和共享性的必然结果。 OS 允许多个并发进程共享资源、相互合作, 使得每个进程的运行过程受到了其他进程的制约,不再“一气呵成”,这必然会导致异步这一 特征的产生。
- 是什么原因使 OS 具有异步特征?
在多道程序环境下,允许多个进程并发执行。但由于资源等因素的限制,进 程的执行通常并非“一气呵成”,而是以“走走停停”的方式进行。内存中的每个进程在何时 执行、何时暂停、以怎样的速度向前推进,都是不可预知的。故而作业完成的先后次序与进入 内存的先后次序并不完全一致,亦即进程是以异步方式运行的。但在有关进程控制及同步机制 等的支持下,只要运行环境相同,作业经多次运行都会获得完全相同的结果,因而异步方式是 允许的。因此, OS 具有异步特征。
- 何谓OS 内核? OS 内核的主要功能是什么?
在现代OS 理论中, 一般将OS 划分为若干层次,再将OS 的不同功能分别设置 在不同层次中。通常将一些与硬件紧密相关的模块(如中断处理程序等)、各种常用设备的驱 动程序以及运行频率较高的模块(如时钟管理模块、进程调度模块和公用基本操作模块等)都 安排在紧靠硬件的软件层次中,让它们常驻内存,进而形成了所谓的OS 内核。
OS 内核的主要功能有:①支撑功能,包括中断处理、时钟管理和原语操作等;②资源管理 功能,包括进程管理、存储器管理、设备管理等。
- 何谓原语?何谓原子操作?
原语,是指由若干条指令组成的,用于完成一定功能的一个过程。原子操 作,是指一个操作中的所有动作要么全做,要么全不做,换言之,它是一个不可分割的基本单 位。因此,原语在执行过程中是不允许被中断的。原子操作在内核态下执行,常驻内存。
- 简要描述处理机的双重工作模式。
一般地,处理机至少需要两种单独运行模式:用户态和内核态。
(1)用户态也称为目态,计算机硬件可以通过一个模式位为1来表示它。当计算机系统执 行用户程序时,系统处于用户态。
(2)内核态也称为管态或系统态,计算机硬件可以通过一个模式位为0来表示它。每当OS 能够控制计算机时,它就处于内核态。例如,当用户程序通过系统调用请求OS 服务时,系统必 须从用户态切换到内核态,以响应请求。
- 简述中断处理过程。
一 旦CPU 响应中断,系统就会开始进行中断处理。中断处理过程主要包括以 下3步。
(1)保护被中断进程的现场。为了在中断处理结束后能使进程正确地返回中断点,系统必 须保存当前处理机状态字和程序计数器的值。
(2)分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理优 先级最高的中断源所发出的中断请求。
(3)恢复被中断进程的现场, CPU 继续执行被中断的原进程。
- 处理机管理有哪些主要功能?它们的主要任务是什么?
处理机管理的主要功能有进程管理、进程同步、进程通信和处理机调度。各 部分的主要任务为:①进程管理,为作业创建进程,撤销已结束进程,控制进程在运行过程中 的状态转换;②进程同步,协调多个进程(含线程)的运行;③进程通信,实现在相互合作 的进程之间进行信息交换;④处理机调度,包括作业调度和进程调度。作业调度是按照一定的算法从后备队列里选出若干个作业,为它们分配运行所需的资源;进程调度是按照一定的 算法从进程的就绪队列中选出一个进程,把处理机分配给它,并设置运行现场,使进程投入 执行。
- 内存管理有哪些主要功能?它们的主要任务是什么?
内存管理的主要功能有内存分配、内存保护、地址映射和内存扩充。各部分 的主要任务为:①内存分配,为每道程序分配内存;②内存保护,确保每道程序仅在自己的内 存空间运行,彼此互不干扰;③地址映射,将地址空间的逻辑地址转换为内存空间对应的物理 地址;④内存扩充,即从逻辑上扩充内存,实现请求调入功能和置换功能等。
- 设备管理有哪些主要功能?它们的主要任务是什么?
设备管理的主要功能包括缓冲管理、设备分配、设备处理以及设备虚拟等。 各部分的主要任务为:①完成用户提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定 的I/O操作;②提高CPU 和I/O设备的利用率,提高I/0速度,方便用户使用I/O设备。
- 文件管理有哪些主要功能?它们的主要任务是什么?
文件管理的主要功能有:文件存储空间的管理、目录管理、文件的读/写管理 和保护。其主要任务是对用户文件和系统文件进行管理以方便用户使用,并保证文件安全。
- 现代 OS 的新功能有哪些?
现代OS是在传统OS的基础上发展而来的,它除了具有传统OS的功能外,还 具有保障系统安全、支持用户通过联网获取服务和可处理多媒体信息等功能。
- 什么是微内核 OS? 它具有哪些优点?
微内核OS具有如下4个特征:①足够小的内核;②基于客户/服务器模式; ③应用策略与机制分离原则;④采用面向对象技术。
微内核OS 的主要优点包括:①提高了系统的可扩展性;②增强了系统的可靠性和可移植 性:③提供了对分布式系统的支持;④融入了面向对象技术。
- 外核 OS 的基本思想是什么?
外核OS的基本思想是:内核不提供传统OS中的进程、虚拟存储等抽象事物, 而是专注于物理资源的隔离(保护)与复用。具体来说,在基于外核结构的OS 中,内核负责保 护系统资源,而硬件资源的管理职责则委托给了应用程序,这样, OS 就可以做到在保证资源安 全的前提下,减少对应用程序的限制,充分满足应用程序对硬件资源的不同需求。
- 什么是系统调用?系统调用与一般用户程序和库函数有何区别?
系统调用是OS提供给程序员的唯一接口。程序员利用系统调用,在源程序层 面动态请求和释放系统资源,并调用系统中已有的系统功能来完成那些与机器硬件部分相关的 工作以及控制程序的执行速度等。因此,系统调用像一个“黑箱子”,对用户屏蔽了OS 的具体 动作而只提供有关的功能。
系统调用与一般用户程序、库函数的区别在于:①系统调用(程序)在内核态执行,调用 它们时需要一个类似于硬件中断处理机制的中断处理机制来提供系统服务;②普通的用户程序 是直接为用户完成某特定功能而设计的,它们一般在用户态执行;③库函数是把函数放到库里 供别人使用的一种方式,是面向应用开发、方便人们编程的。
第二章
- 什么是前趋图?请画出下列4条语句的前趋图。
S₁:a=x+y;S₂:b=z+1;S,:c=a-b;S₄:w=c+1;
本题分步解答如下。
(1)前趋图 (precedence graph)是一个有向无环图,记为
DAG(directed acyclic graph), 用于描述进程间执行的前后关系。
(2)题中4条语句对应的前趋图如图1-2-1所示。
图1-2- 1 前趋图
- 什么是进程? OS 中为什么要引入进程?它会产生什么样的影响?
①进程是一段可并发执行的具有独立功能的程序,是关于某个数据集的一次 执行过程,也是OS 进行资源分配和保护的基本单位。②在OS 中引入进程,是为了实现多个程序 的并发执行。传统的程序与其他程序并发执行时,执行结果不可再现,因此,传统的程序不能 与其他程序并发执行,只有在为之创建进程后,其才能与其他程序(进程)并发执行。这是因 为并发执行的程序“停停走走”地执行,只有在为它创建进程后,在它停下时,方能将其CPU 现场信息保存在它的PCB(processing control block, 进程控制块)中,待下次被调度执行时再从 PCB 中恢复CPU 现场而继续执行,但传统的程序却无法满足上述要求。③建立进程所带来的好 处是多个程序能并发执行,这极大地提高了资源利用率和系统吞吐量。但管理进程也须付出一 定的代价,包括PCB 及协调各运行机构所占用的内存空间开销,以及为进行进程间的切换、同 步与通信等所付出的时间开销。
- 进程最基本的状态有哪些?哪些事件可能会引起不同状态间的转换?
进程最基本的状态有3种。①运行态:进程占有处理机,正在运行。②就 绪态:进程具备运行条件,等待系统分配处理机以便运行。③等待态(又称为阻塞态或睡眠 态):进程不具备运行条件,正在等待某个事件的完成。
进程不同状态间的转换及引发原因介绍如下。①运行态→等待态:等待使用资源或某事件发 生;②等待态→就绪态:资源得到满足或某事件已经发生;③运行态→就绪态:运行时间片到达或 出现有更高优先级的进程;④就绪态→运行态: CPU空闲时调度选中一个就绪进程需要其运行。
- 为什么要引入进程的挂起状态?
所谓挂起状态,实际上就是一种静止的状态。 一个进程被挂起后,不管它是 否处于就绪状态,系统都不会分配给它处理机。因此,引入挂起状态是基于系统和用户的如下 需要。①终端用户的需要:当终端用户在自己的程序运行期间发现问题时,希望暂停进程的运 行。②父进程请求:父进程挂起自己的某个子进程,检查并修改该子进程,或者协调各子进程 之间的活动。③负荷调节的需要:当实时系统中的工作负荷较重、实时任务受到影响时,挂起一些不重要的进程。④OS 的需要: OS 挂起某些进程,检查或统计运行中的资源使用情况。
- 叙述组成进程的基本要素,并说明它们的作用。
每个进程均由PCB、程序块、数据块和堆栈这4个基本要素组成。它们的作用 分别描述如下。
(1)PCB: 用来存储进程的标志信息、现场信息和控制信息。进程创建时建立PCB, 进程 撤销时回收PCB, 其与进程一一对应。
(2)程序块:即被执行的程序。它规定了进程一次运行应实现的功能,通常是纯代码,其 作为一种系统资源可被多个进程共享。
(3)数据块:即程序运行时须加工处理的对象,包括全局变量、局部变量和常量等的存放 区以及开辟的工作区,常常为一个进程专用。
(4)堆栈:每个进程都将捆绑一个堆栈,用来存储进程的标志信息、现场信息和控制信息。
- 请给出PCB 的主要内容。描述当进程状态发生转换(就绪→运行、运 行 → 阻塞)时, OS 需要使用/修改 PCB 的哪些内容?
本题分步解答如下。
(1)PCB 主要用于描述进程的基本情况以及进程的运行变化过程,是进程存在的唯一标 志。PCB 的内容可以分成调度信息和现场信息两部分。①调度信息供进程调度时使用,描述了 进程当前所处的状况,包括进程名、进程号、存储信息、优先级、当前状态、资源清单、家族 关系、消息队列指针、进程队列指针和当前打开文件的情况等。②现场信息用于保留运行进程 发生状态转换时所要保存的CPU 现场信息,以保证当该进程重新恢复运行时能恢复CPU 现场, 从断点处继续运行。常用的现场信息包括通用寄存器的内容、控制寄存器的内容、用户堆栈指 针、系统堆栈指针等。
(2)OS 需要使用/修改的PCB 内容包括“就绪→运行”和“运行→就绪”。①就绪→运行
是将PCB 当前的就绪态改为运行态,修改PCB 的队列指针,将PCB 从就绪队列中移出等;利用 PCB 中 的CPU 现场信息,布置CPU 现场并投入运行。②运行→就绪是将CPU 的当前状态(各寄存 器的内容)保存到PCB 中,将进程状态由“运行”改为“就绪”,并修改PCB 中相应的队列指针信息,然后将其放入PCB 就绪队列中。
- 试说明引起进程创建的主要事件。
为使程序之间能并发运行,应先为它们分别创建进程。导致一个进程去创建 另一个进程的典型事件有4类:用户登录、作业调度、提供服务、应用请求。
- 在创建一个进程时, OS 需要完成的主要工作是什么?
OS 发现请求创建新进程事件后,首先,调用进程创建原语;其次,申请一个 空白PCB, 并向该PCB 中填写用于控制和管理进程的信息;再次,为该进程分配运行时所需的 资源;最后,把该进程的PCB 转入就绪状态并插入就绪队列中。
- 试说明引起进程终止的主要事件。
引起进程终止的主要事件介绍如下。①正常结束:指进程的任务已经完成,
准备退出运行。②异常结束:指进程在运行时发生了某种异常事件,使程序无法继续运行。常 见的异常事件包括越界错误、保护错、指令非法、特权指令错、运行超时、等待超时、算术运 算错、 I/O故障等。③外界干预:指进程应外界的请求而终止运行,这些干预有操作员干预\ OS 干预、父进程请求、因父进程终止等。
- 在终止一个进程时, OS 要完成的主要工作是什么?
如果系统中发生了要求终止进程的事件, OS 便会调用进程终止原语,按下述 过程终止指定的进程:
(1)根据被终止进程标识符,从PCB 集中检索出指定进程的PCB, 读出该进程的状态;
(2)若被终止进程处于执行状态,则立即终止该进程的执行,置调度标志为真,用于指示 该进程被终止后应重新进行调度;
(3)若该进程还有子孙进程,则应将其所有子孙进程也都予以终止,以防它们成为不可控 的进程;
(4)将被终止进程拥有的全部资源或者归还给其父进程,或者归还给系统;
(5)将被终止进程的PCB 从所在队列或链表中移出,等待其他程序来搜集信息。
- 试说明引起进程阻塞或被唤醒的主要事件。
引起进程阻塞或被唤醒的主要事件介绍如下。①向系统请求共享资源失败。 进程在向系统请求共享资源时,由于系统已无足够的资源分配给它,此时进程会因不能继续运 行而转变为阻塞状态。②等待完成某种操作。当进程启动某种操作后,如果该进程必须在操作 完成之后才能继续执行,则应先阻塞该进程。③尚未到达新数据。对于相互合作的进程,如果 一个进程需要获得另一个进程提供的数据后才能处理该数据,但所需数据尚未到达,则进程阻 塞。④等待到达新任务。在某些系统中,特别是在网络环境下的OS 中,往往会设置一定量的系 统进程,这种进程每当完成任务后便会把自己阻塞起来,等待新任务的到来。
- 试比较进程间的低级与高级通信工具。
用户使用低级通信工具实现进程通信效率低,通信对用户不透明,所有操作 都必须由程序员来实现;高级通信工具弥补了这些缺陷,用户可以直接利用OS 提供的一组通信 命令来高效地传送大量的数据。
- 当前有哪几种高级通信机制?
高级通信机制可以归结为4类。①共享存储器系统通信机制:在共享存储器 系统中,相互通信的进程共享某些数据结构或存储区,进程之间通过这些“空间”进行通信。 ②管道通信系统通信机制:发送进程和接收进程利用管道进行通信。③消息传递系统通信机 制:进程不必借助任何共享存储区或数据结构,而是以格式化的消息 (message) 为单位,将通 信的数据封装在消息中,并利用OS 提供的一组通信命令在进程间进行消息传递,完成进程间的 数据交换。④客户机-服务器系统通信机制:在网络环境的各种应用领域,客户机-服务器系统 的通信机制已成为当前主流的通信实现机制。
- 说明使用管道文件 (pipe 文件)进行通信的优缺点。
在Linux 、UNIX 和OS/2 等系统中都可以使用管道文件实现进程间的相互通 信。其优点是可以在进程间不断地传递大量信息,且无须占用宝贵的内存空间。缺点是进程之 间的信息传递要启动读/写磁盘,相对于消息缓冲队列而言通信速度较慢。另外,接收进程和 发送进程间的同步也比较复杂,需要一定的时间开销。
- 试比较直接通信方式和间接通信方式。
可以从以下几个方面来比较直接通信方式和间接通信方式。
(1)发送原语和接收原语。直接通信原语通常为send(receiver,message)、receive sender,message); 间接通信原语通常为send(mailbox,message)、receive(mailbox,message), 而且它还需要提供有关信箱创建与撤销的原语。
(2)提供对方的标识符。直接通信要求发送双方显式地提供对方的标识符,对于接收进 程,如果允许它同时接收多个进程发来的消息,则接收原语中的发送进程标识符可以是通信完 成后返回的值;间接通信则不要求它们显式地提供对方的标识符,而只须提供信箱标识符。
(3)通信链路。直接通信时,进程只须提供对方的标识符便可进行通信,在收发双方之间 建立通信链路的任务由系统自动完成,此外,在收发双方之间有且仅有一条通信链路。间接通 信时,仅当一对进程共享某个信箱时,它们之间才有通信链路;每对进程间可以有多条链路。
(4)实时性。直接通信通常只能提供实时的通信;间接通信既可实现实时通信,也可实现 非实时通信。
- 为什么要在OS 中引入线程?
在OS中引入线程是为了减少进程在并发执行时所付出的时空开销,使OS 具有 更好的并发性,提高CPU 的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本 单位。由于进程是资源的拥有者,因此在其创建、撤销、切换操作中需要较大的时空开销,限 制了并发程度的进一步提高。为减少进程切换的开销,通常把进程作为资源分配单位和调度单 位这两个属性进行分开处理,即进程还是作为资源分配的基本单位,但是不作为调度的基本单 位(很少调度或切换),把调度执行与切换的责任交给“线程”。这样做的好处是不但可以提 高系统的并发度,还能使系统适应新的对称多处理机环境,充分发挥其性能。
- 试说明线程的属性。
线程是一个轻型实体,是可独立调度和分派的基本单位;线程可并发执行, 可共享所属进程的资源。
- 何谓用户级线程和内核支持线程?
①用户级线程是仅存在于用户空间中的线程,无须内核支持。这种线程的创 建与撤销,线程间的同步与通信等功能,都无须利用系统调用实现。用户级线程的切换通常发 生在一个应用进程的诸多线程之间,同样无须内核支持。②内核支持线程是在内核支持下运 行的线程。无论是用户进程中的线程,还是系统中的线程,它们的创建、撤销和切换等操作都 是依靠内核、在内核空间中实现的。在内核空间中还为每个内核支持线程设置了TCB(thread control block, 线程控制块),内核根据该TCB感知某线程的存在并对其实施控制。
- (考研真题)用户级线程和内核支持线程有何区别?
内核支持线程是在内核支持下实现的,即每个线程的TCB 均设置在内核中, 所有对线程的操作(如创建、撤销和切换等)都是通过系统功能调用由内核中的相应处理程序 完成的。而用户级线程则仅存在于用户空间中,即每个线程的TCB 均设置在用户空间中,所有 对线程的操作也在用户空间中完成,而无须内核帮助。具体可从以下几个方面比较内核支持线 程和用户级线程。①内核支持。用户级线程可在一个不支持线程的OS 中实现,而内核支持线程 则需要得到OS 内核的支持。②处理机的分配。在多处理机环境下,对纯粹的用户级线程来说, 内核只为一个进程分配一个处理机,即进程无法享用多处理机带来的好处;而当设置有内核支 持线程时,内核可调度一个应用中的多个线程同时在多个处理机上并行运行,从而提高程序的 执行速度和效率。③调度和线程执行时间。对设置有内核支持线程的系统,内核的调度方式和 调度算法与进程的十分相似,但调度的单位是线程;而对仅设置了用户级线程的系统,内核调 度的单位为进程,当进程获得CPU 时,隶属于该进程的多个线程可通过用户态下的线程调度分享由内核分配给进程的CPU 执行时间。因此,在相同条件下,内核支持线程通常会得到比用户 级线程更多的CPU 执行时间。④切换速度。用户级线程的切换通常发生在一个应用程序的各线 程之间,由于无须陷入内核,而且切换的规则也相当简单,因此切换速度比内核支持线程至少 快一个数量级。⑤系统调用。在典型的OS 中,许多系统调用都会引起阻塞。当一个用户级线程 执行这些系统调用时,被阻塞的是整个进程;而当一个内核支持线程执行这些系统调用时,则 仅阻塞这一线程,但仍可调度其所属进程的其他线程执行。
- 试说明用户级线程和内核支持线程的实现方法。
本题分步解答如下。
(1)用户级线程在用户空间中实现,运行在“运行时系统”与“内核控制线程”的中间系 统上。“运行时系统”用于管理和控制线程函数的集合。“内核控制线程”可通过系统调用获 得内核提供的服务,将轻型进程 (light weight process,LWP)作为中间系统。
(2)在设置了内核支持线程的OS 中,系统在创建新进程时,会为其分配一个任务数据区 (per task data area,PTDA), 其中包括若干个TCB 空间。创建一个线程,分配一个TCB, 将线 程的有关信息写入TCB, 并为线程分配必要的资源。当任务数据区中的TCB 用完而进程又有新 线程时,只要所创建的线程数目未超过系统允许值,系统即可再为之分配新的TCB。 在撤销一 个线程时,也应回收该线程的所有资源和TCB。
第三章
- 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?
①高级调度的对象是作业。它的主要任务是根据某种算法,决定将外存上处 于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪 队列。②低级调度的对象是进程(或内核级线程)。它的主要任务是根据某种算法,决定就绪 队列中的哪个进程获得处理机,并由分派程序将处理机分配给被选中的进程。
引入中级调度的主要目的是提高内存利用率和系统吞吐量。为此,应把那些暂时不能运行 的进程调至外存等待,把进程状态改为就绪驻外存状态或挂起状态。当它们已具备运行条件且 内存又有空间时,由中级调度来决定把外存上的那些已具备运行条件的就绪进程再重新调入内 存,并修改它们的状态为就绪状态,挂在就绪队列上等待。
- 何谓作业和 JCB(job control block, 作业控制块)?
①作业包含通常所说的程序和数据,还配有作业说明书。系统根据该说明书 对程序的运行进行控制。批处理系统中是以作业为基本单位将其从外存调入内存的。②JCB 是作 业在系统中存在的标志。为了管理和调度作业,为每个作业设置一个JCB, 用于记录管理和调度 作业所需的全部信息。
- 在什么情况下需要使用 JCB? 其中包含了哪些内容?
当一个作业进入系统时,便由“作业注册”程序为该作业建立一个JCB, 再根据作业类型,将其插入相应的后备队列中等待调度。调度程序依据一定的调度算法来调度它 们、被调度到的作业将被装入内存。在作业运行期间,系统会按照JCB 中的信息和作业说明书来 对作业进行控制。当一个作业执行结束并进入完成状态时,系统负责回收已分配给它的资源, 并撤销其JCB。
JCB 包含的内容通常有作业标志、用户名称、用户账户、作业类型 (CPU 繁忙型、 I/O繁忙 型、批量型、终端型)、作业状态、调度信息(优先级、作业已运行)、资源要求、入系统时 间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等。
- 在作业调度中应如何确定接纳多少个作业和接纳哪些作业?
作业调度每次接纳进入内存的作业数取决于多道程序度,即取决于系统允许 多少个作业同时在内存中运行。应选择哪些作业从外存调入内存,取决于所采用的作业调度算 法,最简单的是FCFS(first come first served, 先来先服务)调度算法,较常用的是SJF(short job first, 短作业优先)调度算法和基于优先级的调度算法。
- 试说明低级调度的主要功能。
低级调度是在就绪队列中选择某个进程,由分派程序把CPU 分配给该进程。 低级调度的主要功能有:①保存当前进程的CPU 现场信息;②按某种算法选择投入执行的新进 程;③恢复新进程的CPU 现场,从而将CPU 分配给新进程。
- 简述引起进程调度的原因。
引起进程调度的常见原因有:①正在执行的进程正常终止或异常终止;②正 在执行的进程因某种原因而阻塞,如提出I/O请求后被阻塞、在调用wait操作时因资源不足而阻 塞、因其他原因执行block原语而阻塞等;③在引入时间片的系统中,时间片用完;④在抢占式 调度方式中,就绪队列中某进程的优先级比当前正在执行进程的高,或者有优先级更高的进程 进入就绪队列。
- 在抢占式调度算法中,抢占的原则是什么?
抢占的原则有:①优先级原则,指允许优先级高的新到进程抢占当前进程的 处理机;②短进程优先原则,指允许新到的短进程抢占当前长进程的处理机;③时间片原则, 即各进程按时间片轮转运行时,当正在执行的进程的一个时间片用完后,便停止该进程的执行 而重新进行调度。
- 在选择调度方式和调度算法时,应遵循哪些准则?
一般而言,在设计一个OS 时,应如何选择调度方式和调度算法,很大程度上 取决于OS 的类型及其设计目标。在批处理系统、分时系统和实时系统中,通常会采用不同的 调度方式和调度算法。遵循的准则包括:①处理机调度算法的共同目标,即资源利用率高、保 证公平性与平衡性以及策略强制执行;②批处理系统的目标,即平均周转时间短、系统吞吐量 大、处理机利用率高;③分时系统的目标,即响应时间快、保证均衡性;④实时系统的目标, 即保证截至时间和可预测性。
- 何谓静态优先级和动态优先级?确定进程优先级的依据是什么?
①静态优先级是指在创建进程时确定的、在进程的整个运行期间保持不变的 优先级。②动态优先级是指在创建进程之初,先赋予进程一个优先级,然后其值会随进程的推 进或等待时间的增加而改变,如此而为的目的是获得更好的调度性能。此外,确定进程优先级的依据有进程类型、进程对资源的需求和用户要求等。
- 试比较 FCFS 和 SJF 这两种调度算法。
本题分步解答如下。
(1)相同点:这两种调度算法都可以用于作业调度和进程调度。
(2)不同点: FCFS 调度算法每次都从后备队列中选择一个或多个最先进入该队列的作
业,将它们调入内存、分配资源、创建进程、插入就绪队列。该算法有利于长作业/长进程,不 利于短作业/短进程。 SJF 调度算法每次调度都从后备队列中选择一个或若干个估计运行时间最 短的作业,将其调入内存运行。该算法有利于短作业/短进程,不利于长作业/长进程。
- 在基于时间片的RR(round robin,轮转)调度算法中,应如何确定时间片的大小?
在RR调度算法中,时间片的大小对系统性能有很大的影响。通常,时间片应 略大于一次典型的交互所需的时间,使大多数交互式进程能在一个时间片内完成,从而获得很 小的响应时间。在确定时间片的大小时, 一般应考虑3个因素:系统对相应时间的要求、就绪队 列中进程的数目和系统的处理能力。
- 为什么说多级反馈队列调度算法能较好地满足各方面用户的需求?
本题分步解答如下。
(1)对于终端型作业用户,其所提交的作业大都属于较小的交互型作业,系统只要使这些 作业在第1队列规定的时间片内完成,终端型作业用户就会感到满足。
(2)对于短批处理作业用户,如果其作业在第1队列中执行一个时间片即可完成,便可获 得与终端作业一样的响应时间。对于稍长批处理作业用户,其作业通常只须在第2队列和第3队 列各执行1个时间片即可完成,周转时间仍然较短。
(3)对于长批处理作业用户,其将依次在第1,2, … ,n个队列中运行,然后再按轮转方式 运行,用户不必担心其作业长期得不到处理。因此,多级反馈队列调度算法能满足多用户需求。
- 为什么在实时系统中要求系统(尤其是 CPU) 具有较强的处理能力?
在实时系统中都存在着若干个实时进程或任务,它们用来反映或控制某个 (些)外部事件,往往带有某种程度的紧迫性,因而对实时系统中的调度提出了某些特殊要 求。若CPU 的处理能力不够强,则有可能会因CPU 忙不过来而使某些实时任务得不到及时处 理,从而导致发生难以预料的后果。
- 按照调度方式可将实时调度算法分为哪几种?
按照调度方式可将实时调度算法分为非抢占式调度算法和抢占式调度算法两 种。①非抢占式调度算法,包括非抢占式RR 调度算法和非抢占式优先级调度算法;②抢占式调 度算法,根据抢占时机的不同分为基于时钟中断的抢占式优先级调度算法和立即抢占的优先级 调度算法。
- 实时系统常用的调度算法有哪些?请分别介绍它们。
实时系统的调度算法主要是基于任务开始/截止时间的EDF(earliest deadlin first, 最早截止时间优先)调度算法,以及基于任务紧急/松弛程度的LLF(least laxity first, 最 低松弛度优先)调度算法。
(1)EDF 调度算法。该算法是根据任务的开始/截止时间确定任务的优先级的,截止时间越 早则优先级越高。算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的先后顺序进行排序。
(2)LLF 调度算法。该算法是根据任务的紧急/松弛程度确定任务的优先级的。任务的紧急 程度越高,赋予该任务的优先级就越高,以使其优先执行。例如, 一个任务在200ms时必须完 成,而它本身所需的运行时间就是100ms, 因此,调度程序必须在100ms或之前调度执行,该任 务的紧急程度(松弛程度)为100ms。
- 在批处理系统、分时系统和实时系统中,各采用哪几种进程(作业)调度算法?
①在批处理系统中可采用的调度算法有SJF、优先级、高响应比优先、多级反 馈队列等调度算法。②在分时系统中常用的调度算法是RR 调度算法。③在实时系统中可采用的 调度算法有EDF 调度算法和LLF 调度算法。
- 什么是死锁?产生死锁的原因和必要条件是什么?如何预防死锁?
死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于 这种僵持状态时,若无外力作用,它们都将无法向前推进。产生死锁的原因有:①竞争不可抢 占性资源;②竞争可消耗资源;③进程间推进顺序不当。产生死锁必须同时具备4个必要条件: 互斥条件、请求和保持条件、不可抢占条件、循环等待条件。
预防死锁是通过破坏产生死锁的4个必要条件中的一个或几个来实现的。其中互斥条件是设 备固有属性,不能改变,因此主要破坏产生死锁的其他3个必要条件。①破坏“请求和保持”条 件。当一个进程在请求资源时,它不能持有不可抢占性资源。②破坏“不可抢占”条件。当一 个已经保持了某些不可抢占性资源的进程提出新的资源请求而不能得到满足时,它必须释放已 经保持的所有资源,待以后需要时再重新申请。③破坏“循环等待”条件。对系统所有资源类 型进行线性排序,并赋予它们不同的序号,规定每个进程必须按序号递增的方式请求资源。
- 在解决死锁问题的几个方法中,哪个方法最易于实现?哪个方法可使资源利用率最高?
解决死锁的方法有预防死锁、避免死锁、检测和解除死锁,其中预防死锁这 一方法最容易实现,但由于所施加的限制条件过于严格,资源利用率和系统吞吐量会降低;而 检测和解除死锁这一方法可使系统获得较好的资源利用率和系统吞吐量。
第四章
- 什么是临界资源?什么是临界区?
①在计算机中有许多资源一次仅允许一个进程使用,我们把一次仅允许一个 进程使用的资源称为临界资源,如打印机和一些共享变量等。②进程中访问临界资源的那段代 码称为临界区。
- 同步机制应遵循的准则有哪些?
同步机制应遵循的准则主要有4个。
(1)空闲让进。当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进 入临界区的进程立即进入临界区,以有效地利用临界资源。
(2)忙则等待。当已有进程在临界区时,表明临界资源正在被访问,因而其他试图进入临 界区的进程必须等待,以保证对临界资源的互斥访问。
(3)有限等待。对要求访问临界资源的进程,应保证其能在有限时间内进入临界区,以免 陷入“死等”状态。
(4)让权等待。当进程不能进入临界区时,其应立即释放处理机,以免进程陷入“忙等”。
- 为什么各进程对临界资源的访问必须互斥?
临界资源本身的特性决定了它们只能被各个进程互斥地访问,如果并发执行 的多个进程同时访问临界资源,则会造成系统混乱或程序执行结果不确定。这样,进程运行结 果就可能不正确或者不确定。比如,两个进程并发执行如下程序段:其中,共享变量counter初值为0,对counter执行加1操作。如果允许一个进程访问counter,另一 个进程也可以对其进行操作,则counter的值最终可能是正确结果2,也可能是错误结果1,即计 算结果出现了不确定性。因此,各进程对临界资源的访问必须互斥地进行。
- 如何保证各进程互斥地访问临界资源?
为了互斥地访问临界资源,系统必须保证进程互斥地进入临界区。为此,必 须在临界区前增加一段进入区代码,以检查是否有其他进程已进入临界区而在使用临界资源。 若有,则进程必须等待;否则,允许进程进入临界区,同时设置标志以表示有进程正在临界区 内。同样,在临界区后必须增加一段退出区代码,用于将已有进程进入临界区访问临界资源的 标志改为无进程进入临界区使用临界资源。进入区和退出区可用多种同步机制实现,如锁、信号量机制等。
- 何谓“忙等”?它有什么缺点?
①“忙等”是指“不让权”的等待,即进程因某事件的发生而无法继续执行 时,它仍占用CPU, 并通过不断地执行循环测试指令来等待该事件的完成。②“忙等”的主要 缺点是浪费CPU 时间,另外,它还可能会引起预料不到的后果。例如,考虑某个采取高优先级 优先调度原则的系统,目前有两个进程A 和B共享某个临界资源, A 的优先级较高, B 的优先级较 低,且B已处于临界区内,而A欲进入自己的临界区,则A、B 都不可能继续向前推进,进而即会 陷入“死等”状态。
- 试述采用 Peterson 算法实现临界区互斥的原理。
Pcterson算法中Pi和Pj两个进程共享turn和fag 两个变量。turn=i表示Pi进程可以进 入临界区, flag[i]=TRUE表示Pi进程准备进入临界区。因此,可能会存在以下几种请求情况。
( 1 ) 当Pi在临界区中时,若Pj请求进入临界区,则flag[i]=TRUE, turn=i,flag[j]=TRUE, 即Pj中flag[i]&&turn=i为TRUE, 此时Pj会循环执行while语句—— “忙等”而无法进入临界区, 满足“忙则等待”。
(2)如果临界区目前空闲,但Pi请求进入,而Pj未请求,此时flag[i]=TRUE,turn=j, flag[j]=FALSE, 因此Pi的while条件为FALSE,Pi 可进入临界区执行。如果两个进程都要进入临 界区,即flag[i]=flag/i]=TRUE, 则turn只能取0或1,只能有一个进程进入临界区。当一个进程退 出临界区后,另一个进程即可进入临界区,满足“有限等待”。
- 哪些硬件方法可以解决进程互斥问题?简述它们的用法。
解决进程互斥问题可采用的硬件方法主要有下列3种。
(1)利用“关中断”实现,将临界区放在关中断与开中断之间,关中断后不允许当前进 程被中断,因此进程在临界区执行期间都不允许被中断,不能发生进程切换;进程访问完临界区 后,再执行开中断指令,此时其他进程才能获得处理机并访问临界区,进而有效保证进程互斥。
(2)Test-and-Set指令,简称TS 指令或TSL指令。该指令是一条硬件指令,指令执行过程 中不允许被中断,即TS指令把“上锁”和“检查”操作用硬件的方式变成了一气呵成的原子操 作。指令执行过程为:①为每个临界资源设置一个布尔变量lock,表示当前临界区是否加锁; ②进程进入临界区前,首先用TS指令测试lock, 若其值为FALSE, 则表示没有进程在临界区 内,while循环条件不满足,进入临界区,并将TRUE 值赋给lock, 即关闭临界区;③任何其他进 程再利用TS指令测试lock,while都会一直循环,直到当前访问临界区的进程在退出区进行“解 锁”,从而实现了进程互斥。
(3)Swap 指令,该指令是用硬件实现的,执行过程不允许中断。其用法是为每个临界资源 设置一个全局布尔变量lock,初值为FALSE, 在每个进程中再利用一个局部布尔变量key, 使用 Swap指令与lock进行数值交换,循环判断lock的取值。只有当key为FALSE 时,进程才可进入临 界区进行操作。从逻辑上看,Swap 指令和TS指令并无太大区别,都是先记录下此时临界区是否 已经被上锁,再将上锁标记lock设置为TRUE, 最后检查局部布尔变量key, 如果key为FALSE,
则说明之前没有别的进程对临界区上锁,此时可跳出循环,进入临界区。
- 如果用于进程同步的信号量的P、V 操作不用原语实现,则会产生什 么后果?举例说明。
例如:利用P 、V操作实现A、B进程对临界资源的互斥使用,代码如下。
若P、V 操作不被设计成原语,则执行P、V 操作时进程可以被中断。 A、B 并发执行,初始 状态下,临界资源空闲,故应允许第一个申请临界资源的进程(假设为A进程)进入临界区而使 用临界资源。但如果A执行到P操作的语句S.value–后(此时S.value的值为0)被B中断, B 进程执 行P操作,则当B进程执行语句S.value–且S.value的值变为-1时,由于S.value<0,B 会被阻塞, A 进程再次获得CPU 后,同样也会因为S.value<0而被阻塞,这就出现了临界资源虽然空闲但进程 申请不到的情况,即此时P、V 操作无法满足同步机制中“空闲让进”的要求。同样, 一个执行 P操作的进程被中断后,另一个进程去执行V操作;或一个执行V操作的进程被中断后,另一个进程 去执行P或V操作,都将发生混乱,难以实现进程同步。因此, P、V 操作必须设计成原语的方式。
- AND 信号量机制的基本思想是什么?它能解决什么问题?
① AND信号量机制的基本思想是将进程在整个运行过程中所需要的所有临界 资源一次性全部分配给进程,待该进程使用完后再一起释放。只要尚有一个所需资源未能分配 给该进程,则其他所有将为之分配的资源都不分配给它。亦即,对若干个临界资源的分配采取 原子操作方式,要么全部分配到进程,要么一个也不分配。②它能解决的问题是防止死锁的发 生,因为该方法在资源分配过程中使产生的死锁必要条件中的“请求和保持”条件不被满足。
- 利用信号量机制实现进程互斥时,对互斥信号量的 wait()和 signal()操作为什么 要成对出现?
利用信号量机制实现进程互斥时,对互斥信号量mutex 的wait()和signal() 操作 必须成对出现,缺少wait(mutex)将会导致系统混乱,不能保证进程对临界资源的互斥访问;而 缺少signal(mutex)则将会使临界资源永远不被释放,从而使因等待该资源而阻塞的进程不能被 唤醒。
- 什么是管程?它有哪些特性?
由代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所 组成的资源管理程序共同构成的一个OS 资源管理模块,称为管程。
管程是一种程序设计语言结构成分,从语言的角度看,管程主要有以下特性:①模块化, 管程是一个基本程序单位,可以单独编译;②抽象数据类型,管程中不仅有数据,而且有针对 数据的操作;③信息掩蔽,管程中的数据结构只能被管程中的过程访问,这些过程在管程内部被 定义,供管程外的进程调用,而管程中的数据结构以及过程(函数)的具体实现在外部不可见。
- 试述管程中条件变量的含义和作用。
条件变量是管程内的一种数据结构,且只有在管程中才能被访问,它对于 管程内的所有过程而言是全局变量,只能通过两个原语操作来控制它。①x.wait()原语。调用进程阻塞并移入与条件变量x 相关的队列中,释放管程,直到另一个进程在该条件变量x上执 行signal()以唤醒等待进程,并将其移出条件变量x的队列。②x.signal()原语。如果存在其他 进程由于对条件变量x执行wait()操作而被阻塞,则释放之;如果没有进程在等待,则信号被丢弃。
条件变量是一种信号量,起到了维护等待进程队列的作用。当管程中的进程被阻塞或挂起 而不能运行时,如果该进程不释放管程,则其他进程就无法进入管程,此时就需要条件变量来进行控制。
第五章
- 存储器管理的基本任务,是为多道程序的并发执行提供良好的存储器环境。请问:“良 好的存储器环境”应包含哪几个方面?
“良好的存储器环境”应包含:①让每道程序“各得其所”,在不受干扰的 环境中运行,还可以使用户从存储空间的分配、保护等烦琐事务中解脱出来;②向用户提供更大的存储空间,使更多的作业能同时运行,或使更大的作业能在较小的内存空间中运行;③为 用户在信息的访问、保护、共享以及动态链接等方面提供方便;④使存储器有较高的利用率。
- 内存保护是否可以完全由软件实现?为什么?
内存保护的主要任务,是确保每道程序都只能在自己的内存区中运行。这就 要求系统能对每条指令所访问的地址是否超出自己内存区的范围进行越界检查, 一旦发生越界,系统应能立即发出越界中断请求,抛弃该指令。若此检查完全用软件实现,则每执行一条 指令时,都需要增加若干条指令去执行越界检查,这大大降低了程序的执行速度。因此,越界 检查通常由硬件实现,以使指令能够与越界检查并行执行,从而不降低程序的执行速度。当 然,越界后的处理仍须由软件配合完成。因此,内存保护是由硬件和软件协同完成的。
- 请解释什么是重定位?为什么要重定位?
①将用户程序的相对地址(逻辑地址)转换为绝对地址(物理地址)的过程,称为重定位。②由于在多道程序环境下,多个目标模块的起始地址通常是0,程序中的其他 地址都是相对于0这一起始地址而言的。采用重定位,可根据内存的当前地址使用情况,将装入 模块装入内存的适当位置,并确定装入的物理地址,以保证程序运行时存取指令或数据地址的正确。
- 动态重定位的实现方式有哪几种?
动态重定位的实现必须有硬件地址转换机构的支持,其具体实现方式主要有 以下2种。
(1)连续分配方式下的动态重定位。该方式须在整个系统中设置一个重定位寄存器,用来 存放正在执行的作业在内存中的起始地址。当CPU 要存取指令或数据时,硬件地址转换机构会 自动将逻辑地址与重定位寄存器的值相加,形成指令或数据的物理地址。
(2)离散分配方式下的动态重定位。离散分配方式主要是指分页和分段存储管理方式。重 定位过程为:①系统首先必须为每个作业配置一张页(段)表,用来记录作业的每个页(段) 对应的内存块号(内存起始地址和段长),页(段)表被存放在内存中;②整个系统须设置一 个页(段)表控制寄存器,用来存放正在执行的作业的页(段)表起始地址和长度;③当CPU 要存取指令或数据时,硬件的地址转换机构会自动将逻辑地址分成页号和页内地址两部分(或直接从逻辑地址中获得段号),根据页(段)号到控制寄存器所指示的页(段)表中获得对应 的物理块号(或段的内存起始地址),并与页(段)的地址相加,最终形成物理地址。
- 可采用哪几种方式将程序装入内存?它们分别适用于何种场合?
将程序装入内存可采用的方式有:绝对装入方式、重定位装入方式、动态运 行时装入方式。绝对装入方式适用于单道程序环境中,重定位装人方式和动态运行时装入方式 适用于多道程序环境中。
- 何谓静态链接?静态链接时需要解决哪两个问题?
静态链接是指在程序运行之前,先将各目标模块及它们所需的库函数链接成 一个完整的装入模块,以后不再拆开的链接方式。将几个目标模块链接成一个装入模块时,须 解决以下2个问题。
(1)修改相对地址,即将除第一个模块外的相对地址修改成装入模块中相应的相对地址。
(2)变换外部调用符号,即将每个模块中所用的外部调用符号变换为相对地址。
- 编写程序时,源代码必须经过编译和链接生成目标代码,请问什么是 链接?链接主要解决了什么问题?简述链接的主要类型及其优缺点。*
链接是指由链接程序将编译后形成的一组目标模块以及所需库函数链接在一 起,进而形成一个完整的装入模块。
链接程序按各个模块的相对地址依次构成统一的从0号单元开始编址的逻辑地址空间。链接 主要有3种类型。
(1)静态链接:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整 的可执行程序,以后不再拆开。优点:适用范围比较广,无须担心用户机器缺少某个库函数。 缺点:①修改或更新某个目标模块时需要重新打开装入模块,这不仅涉及效率问题,而且在很 多时候甚至是不可能实现的;②在静态链接中,每个模块必含有目标模块的复制,无法实现 共享。
(2)装入时动态链接:将用户程序编译后所得到的一组目标模块,采用边装入边链接的方 式装入内存。优点:①便于修改和更新,针对动态链接方式,由于各目标模块是分开存放的, 因此非常容易修改或更新各目标模块;②便于实现对目标模块的共享,针对装入时链接方式, 很容易将一个目标模块链接到几个应用模块上,实现多个应用模块对目标模块的共享。缺点: 由于应用程序事先无法确定本次要运行的模块,因此该程序的所有模块要全部装入内存,并在 装入时链接在一起。有部分目标模块不会被运行,但也要装入,低效且浪费空间。
(3)运行时动态链接:将某些目标模块的链接推迟到程序执行时才进行。优点:在运行 时动态链接过程中未用到的目标模块都不会被调入内存和链接,这样不仅能加快程序的装入过 程,而且可以大大节省内存空间。
- 为什么要引入对换?对换可分为哪几种类型?
在多道程序环境下, 一方面,在内存中的某些进程会因某事件尚未发生而阻 塞,但此时它占用了大量的内存空间,这样,内存中的所有进程都有可能被阻塞,进而发生迫 使CPU 停止下来等待的情况;另一方面,有许多作业因内存空间不足会一直驻留在外存上,而 不能进入内存运行。这不仅浪费系统资源,而且会降低系统吞吐量。为了解决这一问题,在OS 中引入了对换(也称交换)技术。
对换可分为整体对换和部分对换两种类型。整体对换是将整个进程换入/换出,主要用于缓解目前系统中内存不足的这一情况。部分对换是将进程的一部分(页、段)换入/换出,主要用于实现虚拟存储器。
- 在对换技术中,对文件区管理的目标和对对换空间管理的目标有何不同?
对文件区管理和对对换空间管理的目标分别为:①对文件区管理的主要目标是 提高文件存储空间的利用率,然后才是提高对文件的访问速度,因此,对文件区管理采取的是离 散分配方式;②对对换空间管理的主要目标是提高进程换入/换出的速度,然后才是提高文件存储 空间的利用率,因此,对对换空间管理采取的是连续分配方式,较少考虑外存中的碎片问题。
- 为什么说分段系统较分页系统更易实现信息共享与保护?
①对于分页系统,每个页面是分散存储的,为了实现信息共享与保护,页面 之间需要一一对应起来,为此需要建立大量的页表项。②对于分段系统,每个段都从0开始编 址,并采用一段连续的地址空间,这样在实现信息共享与保护时,只须为所要共享与保护的程 序设置一个段表项,将其中的起始地址与内存一一对应起来即可。
- 提高内存利用率的途径主要有哪些?
内存利用率不高,主要表现为4种形式:①内存中存在大量的、分散的、难以 利用的碎片;②暂时或长期不能运行的程序和数据占据了大量的存储空间;③当作业较大时, 内存中只能装入少量作业,当它们被阻塞时,将使CPU 空闲,从而降低了内存的利用率;④内 存中存在着重复的复制。
针对上述问题,可采用下述方法提高内存的利用率:①将连续分配方式改为离散分配方 式,以减少内存中的碎片;②增加对换机制,将暂时不能运行的进程或暂时不需要的程序和数 据换出至外存,以腾出内存来装入可运行的进程;③引入动态链接机制,当运行中的程序需要 调用某段程序时,才将该段程序由外存装入内存;④引入虚拟存储器机制,使更多的作业能装 入内存,提高了CPU 的利用率,也可避免装入本次运行中不会用到的那部分程序和数据;⑤引 入存储器共享机制,允许一个正文段或数据段被若干个进程共享,以减少内存中重复的复制。
第六章
- 常规存储器管理方式具有哪两大特征?它们对系统性能有何影响?
常规存储器管理方式具有一次性和驻留性这两大特征。 一次性指进程必须全 部装入内存;驻留性指在程序运行过程中,进程全部驻留在内存中。 一次性对内存空间的浪费 非常大;驻留性使内存中暂时不用的程序或数据无法被释放。
- 什么是虚拟存储器?如何实现页式虚拟存储器?
虚拟存储器是具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩 充的一种存储系统。从用户观点看,虚拟存储器具有比实际内存大得多的容量,其逻辑容量由 逻辑地址结构以及内存和外存容量之和决定,其运行速度接近于内存的存取速度,而每位的成 本却又接近于外存。为实现虚拟存储器,首先需要扩充页表,增加状态位以指出所需页是否在内存中,增加外 存起始地址以便调入页面,增加引用位以供置换算法使用,增加修改位以减少换出时写入磁盘 的次数。另外,还要使用两种关键技术。①请求调页技术。该项技术是指及时将进程所要访问 的不在内存中的页调入内存。该功能是由硬件(缺页中断机构发现缺页)和软件(将所需页调 人内存)配合实现的。②置换页技术。该项技术是指当内存中已无足够空间用于装入即将调入 的页时,为了保证进程能继续运行,系统必须换出内存中的部分页,以腾出足够的空间。具体 的置换操作并不复杂,其关键是确定应将哪些页换出,即采取什么置换算法。
- “整体对换从逻辑上也扩充了内存,因此也实现了虚拟存储器的功能”这种说法是否正确,请说明理由。
这种说法是错误的。整体对换将内存中暂时不用的某个程序及其数据换出至 外存,腾出足够的内存空间以装入在外存中具备运行条件的进程所对应的程序和数据。虚拟存 储器是指仅把作业的一部分装入内存便可运行作业的存储器系统,亦指具有请求调入功能和置 换功能、能从逻辑上对内存容量进行扩充的存储器系统,它的实现必须建立在离散分配的基础 上。虽然整体对换和虚拟存储器均能从逻辑上扩充内存空间,但整体对换不具备离散性。实际上,在具有整体对换功能的系统中,进程的大小仍将受到实际内存容量的限制。
- 在请求分页系统中,为什么说一条指令执行期间可能产生多次缺页中断?
在请求调页时,只要作业的部分页在内存中,该作业就能执行;而在执行过 程中发现所要访问的指令或数据不在内存中时,系统会产生缺页中断,将所需的页面调人内 存。在请求调页系统中, 一条指令(如copy Ato B)可能跨了两个页,而其中要访问的操作数可 能与指令不在同一个页上,且操作数本身也可能跨了两个页。当要执行这类指令而相应的页又 都不在内存中时,就将产生多次缺页中断。
- 试比较缺页中断与一般的中断,它们之间有何明显区别?
缺页中断与一般中断的区别主要有:①一般中断只需要保护现场然后即可直 接跳到须及时处理的地方;②缺页中断除了需要保护现场外,还需要判断内存中是否有足够的 空间来存储所需的页或段,然后再把所需的页或段调进来使用。
- 试说明在请求分页系统中页面的调入过程。
每当程序所要访问的页面未在内存时(存在位为“0”),便向CPU发出缺页 中断,中断处理程序保存CPU 现场信息,分析中断原因后,转入缺页中断处理程序。该程序通 过查找页表得到该页在外存的物理地址,如果此时内存能容纳新页,则启动磁盘,将所缺页面 调入内存,然后修改页表。如果内存已满,则须按照某种置换算法进行页面置换;如果换出页 面被修改过(修改位为“1”),则必须将它写回磁盘,再把缺页调入内存,将页表中调入页的 存在位改为“1”,并将此页表项写入快表中。利用修改后的页表,形成要访问数据的物理地 址,再去访问内存数据。整个页面调人过程对用户是透明的。
- 简述在具有快表的请求分页系统中,将逻辑地址转换为物理地址的完整过程。
在具有快表的请求分页系统中,将逻辑地址转换为物理地址的完整过程为: ① 检索快表,试图从中找出所要访问的页;②如果找到,那么修改页表项中的访问位,供置换 算法选择淘汰页时参考,将写指令的修改位置1,然后利用页表项中给出的物理块号和页内地 址形成物理地址,地址转换结束;③如果没找到,那么应到内存中查找页表,再根据查找到的页 表项中的状态位来判断该页是否已调入内存。若该页已调入内存,则将该页的页表项写入快表。 当快表已满时,先调出按某种算法所确定的页的页表项,再写入该页的页表项。若该页未调人内 存,则产生缺页中断,请求OS 从外存中将该页调入内存,再转到步骤②进行地址转换。
- 何谓固定分配局部置换和可变分配全局置换的内存分配策略?
(1)固定分配局部置换:固定分配是指,为每个进程分配一组固定数目的物理块,在进程 运行期间不再改变;局部置换是指,如果进程在运行中发现缺页,则只能从分配给该进程的n个 页面中选出1页换出,然后再调入1页。
(2)可变分配全局置换:可变分配是指,先为每个进程分配一定数目的物理块,在进程运 行期间,可根据情况做适当的改变;全局置换是指,如果进程在运行中发现缺页,则将OS所保 留的空闲物理块或者所有进程的全部物理块选择1块换出然后再将缺页调入。
- 实现 LRU(least recently used, 最近最久未使用)页面置换算法所需要的硬件支 持是什么?
需要寄存器和栈等硬件支持。寄存器用于记录某进程在内存中各页的使用情 况;栈用于保存当前使用的各页的页面号。
- 什么是“抖动”?产生“抖动”的原因是什么?
①“抖动”是指刚被换出的页很快被访问,须重新调入,因此须再选一页调 出,而此时被换出的页很快又要被访问,因而又须将它调入,如此频繁地更换页面,使得系统 把大部分时间用在了页面的换进/换出上,而几乎不能完成任何有效的工作,我们称这一现象为 “抖动”。②产生“抖动”的根本原因是同时在系统中运行的进程太多,分配给每个进程的物 理块数太少,其不能满足进程正常运行的基本要求,致使每个进程在运行时会频繁缺页。
- 何谓工作集?它是基于什么原理而确定的?
①工作集(或驻留集)是指在某段时间间隔内进程实际要访问的页面集合。经常 被使用的页面需要存在于工作集中,而长期不被使用的页面则要从工作集中丢弃。②确定工作集的 原理是:基于程序运行时的局部性原理,程序在运行期间对页面的访问在一段时间内局限于较少的 页面,这些页而称为活跃页面,页面集合即为工作集。如果能预先将活跃页面调入内存,则将大大 降低缺页率。因此须使OS跟踪每个进程的工作集,并为进程分配大于其工作集的物理块。如果还有空闲物理块,则可以再调一个进程到内存以增加多道程序数。如果所有工作集之和超过了可用物理 块的总数,那么OS会暂停一个进程,将其页面调出并且将其物理块分配给其他进程,以防止出现抖动现象。正确选择工作集的大小,对存储器利用率和系统吞吐量的提高具有重要影响。
- 为了实现请求分段存储管理,应在系统中增加配置哪些硬件机构?
为了实现请求分段存储管理,应在系统中配置多种硬件机构,以支持快速完 成请求分段功能。所需的硬件支持有段表机制、缺段中断机构以及地址转换机构。
第七章
- 试说明I/O 系统的基本功能。
I/O系统的基本功能主要包括:①隐藏物理设备的细节;②保证OS与设备无关;③提高处理机和I/O 设备的利用率;④控制I/O设备;⑤确保对设备的正确共享;⑥处理错误。
- I/O 软件一般分为用户层软件、设备独立性软件、设备驱动程序和中断处理程序这 4 个层次,它们的基本功能分别是什么?请说明下列工作分别是在哪一层完成的?
(1)向设备寄存器写命令。
(2)检查用户是否有权使用设备。
(3)将二进制整数转换成 ASCI 的格式打印。
(4)缓冲管理。
(1)向设备寄存器写命令是在设备驱动程序中完成的。
(2)检查用户是否有权使用设备,属于设备保护,因此其在设备独立性软件中完成。
(3)将二进制整数转换成ASCII 格式打印是通过I/O库函数完成的,如C语言的库函数printf 中就有打印格式的控制字符串,因此其在用户层软件中完成。
(4)缓冲管理属于I/O的公有操作,因此是在设备独立性软件中完成的。
- 设备控制器由哪几部分组成?为了实现CPU 与设备控制器之间的通信,设备控制器应具备哪些功能?
①设备控制器的组成部分主要包括设备控制器与CPU 的接口、设备控制器与 设备的接口、 I/O逻辑这3部分。②设备控制器应具备接收和识别命令、交换数据、标志和报告 设备的状态、缓冲地址、识别数据、控制差错等功能。
- 什么是通道?通道经常采用图1- 7- 1所示的交叉连接方式,为什么?
①通道是一种特殊的处理机,它具有执行I/O指令的能力,并且可以通过执行 通 道I/0程序来控制I/O操作。②图1-7-1中的交叉连接主要是为了解决通道的瓶颈问题。之所以 会产生瓶颈问题,是因为通道价格昂贵,设置的通道数量较少,导致系统吞吐量下降。交叉连 接的多通路方式不仅解决了瓶颈问题,还提高了系统可靠性。
- 设备中断处理程序通常须完成哪些工作?它对中断进行处理的过程包含哪些步骤?
设备中断处理程序要完成:①唤醒被阻塞的驱动进程;②保存被中断进程 的 CPU 现场信息;③转入相应的设备处理程序;④处理中断;⑤恢复被中断进程的CPU 现场。 对中断进行处理的过程为:①测定是否有未响应的中断信号;②保护被中断进程的CPU 现场;③转人相应的设备处理程序;④处理中断;⑤恢复CPU现场并退出中断。
- 为什么要有设备驱动程序?用户进程是如何通过设备驱动程序来控制设备工作的?
设备驱动程序与硬件密切相关,主要负责接收上层软件发来的I/O 指令,并将 其转换成具体要求发送给设备控制器;反之,也将来自设备控制器的信号传送给上层软件。采用设备驱动程序实现I/O系统的高层与设备控制器之间的通信,驱动I/O设备工作。
用户进程通过设备驱动程序控制设备工作的过程为:①接收由用户进程发来的I/O命令和 参数,并将命令中的抽象要求转换为具体要求,如将磁盘盘块号转换为磁盘的盘面、磁道和扇 区号;②检查用户I/O请求的合法性,如果请求不合法,则拒绝接收I/O请求并反馈用户进程; ③ 了 解I/O 设备的状态,如果设备准备就绪,则可由设备控制器设置设备的工作方式、传递有关 参数;否则,将请求者的请求块挂到设备请求队列上等待;④发出IO 命令,如果设备空闲,则 立即启动I/O设备,完成指定的I/O操作。
- 推动I/O控制方式发展的主要因素是什么?
推动I/O 控制方式发展的主要因素包括:①尽量减少CPU 对I/O 控制的干预, 把CPU 从繁杂的I/O控制中解脱出来,以便更多地去完成数据处理任务;②缓和CPU 的高速性和 设备的低速性之间速度不匹配的矛盾,以提高CPU 利用率和系统吞吐量;③提高CPU 和I/O设 备操作的并行程度,使CPU 和I/O设备都处于忙碌状态,提高整个系统的资源利用率和系统吞 吐量。
- 请说明中断驱动IO方式和DMA( direct memory access, 直接存储器访问)方式有什么不同。
它们主要在以下两个方面有不同。
(1)I/O 中断频率。在中断驱动I/O方式中,每当输人数据缓冲寄存器中装满输入数据或将 输出数据缓冲寄存器中的数据输出之后,设备控制器就会发生一次中断,由于设备控制器中配 置的数据缓冲寄存器通常较小,如1个字节或1个字,因此中断比较频繁。而在DMA 方式中,在 DMA 控制器的控制下, 一次能完成一批连续数据的传输,并在整批数据传送完成后才发生一次 中断,因此可大大减少CPU 处理I/O中断的时间。
(2)数据的传送方式。在中断驱动I/O方式中,由CPU 直接将输出数据写入控制器的数据缓 冲寄存器中以供设备输出,或在中断发生后直接从数据缓冲寄存器中取出输入数据以供进程处 理,即数据的传送必须经过CPU; 而在DMA 方式中,数据传送是在DMA 控制器的控制下直接在 内存和I/O设备间进行的, CPU 只须将磁盘地址、内存地址和字节数传给DMA 控制器即可。
- 设备无关性的基本含义是什么?为什么要设置设备无关性软件?
为了提高OS的可适应性和可扩展性,在现代OS 中都实现了设备无关性(设备 独立性),其基本含义是应用程序独立于物理设备。为了实现设备无关性,引入了逻辑设备和 物理设备这两个概念。在应用程序中,可通过逻辑设备名称请求使用某类设备;而系统在实际 执行时,必须使用其对应的物理设备名称,应用程序应与实际使用的物理设备无关,由OS 考虑 因物理设备不同而需要使用不同的设备驱动程序等问题。
设置设备无关性软件的目的是:①增加设备分配的灵活性;②实现I/O重定向。当I/O设备被
更换时不必改变应用程序,即I/O重定向。
- 设备分配过程中可能会出现死锁吗?为什么?
在设备分配过程中,如果在进程发出I/O 请求后,系统为其分配了I/O 设备,则 进程仍继续运行;运行中再次发出新的I/O请求,只有当某个请求不满足时,进程才会阻塞。这 种情况下, 一个进程可以同时使用多个设备。虽然进程推进迅速,但此时的资源分配方式是不 安全的,可能会发生死锁。
- SPOOLing( simultaneous peripheral operations on- line, 假脱机)系统由哪几部分组成?以打印机为例,说明如何利用 SPOOLing 技术实现多个进程对打印机的共享?
SPOOLing 系统由磁盘上的输入井和输出井、内存中的输入缓冲区和输出缓冲区、输入进程和输出进程以及井管理程序组成。
采用SPOOLing 技术共享打印机时,对所有提出输出请求的用户进程,系统接受它们的请求 时,并不真正分配打印机,而是由SPOOLing 管理进程做两件事情:①在输出井中为它申请一空 闲缓冲区,并将要打印的数据送入其中;②为用户进程申请一张空白的用户打印请求表,并将 用户的打印请求填入该表中,再将该表挂到SPOOLing 文件队列上。至此,用户进程认为打印过程已经完成,而不必等待真正的慢速的打印过程完成。当打印 机空闲时, SPOOLing 打印进程将从SPOOLing 文件队列的队首取出一张打印请求表,根据表中 的要求将要打印的数据从输出井传送到内存输出缓冲区,再由打印机进行输出打印。打印完成 后,再处理SPOOLing文件队列中的下一个打印请求表,直至队列为空。这样,虽然系统中只有 一台打印机,但系统并未将它分配给任何进程,而只是为每个提出打印请求的进程在输出井中 分配一个存储区(相当于一个逻辑设备),使每个进程都感觉自己独占一台打印机,从而实现 了多个进程对打印机的共享。
- 在单缓冲区情况下,为什么系统对一块数据的处理时间为max(CT)+M?
以输入为例,假定从磁盘中把一块数据输入缓冲区的时间为T;OS 将缓冲区 数据传送到用户区的时间为M;CPU 对这块数据进行计算的时间为C。 在单缓冲区情况下,由 于设备的输人操作和CPU 的处理操作可以并行执行,因此系统对每一整块数据的处理时间为 max(C,T)+M。
第八章
- 何谓数据项、记录和文件?
①数据项是最低级的数据组织形式,可分为基本数据项和组合数据项。基本 数据项是描述一个对象某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,又称 为数据元素或字段。组合数据项是若干个基本数据项所构成的数据项。②记录是一组相关数据 项的集合,用于描述一个对象某方面的属性。③文件是由创建者定义的、具有文件名的一组相 关信息的集合。
- 一个比较完善的文件系统应具备哪些功能?
一个比较完善的文件系统应具备5个功能。①文件存储空间管理。通过文件存储空间管理,能使文件"各得其所",并且能尽量提高文件存储空间的利用率。②目录管理。 通过目录管理,能实现文件“按名存取”,提高文件的检索速度,解决文件的命名冲突问题 (允许文件重名),并能实现文件共享。③文件读/写管理。通过文件读/写管理,可以实现 文件数据的快速读/写。④文件安全性管理。通过采取多级文件保护等措施,可以实现对系统 中文件的保护,防止文件被偷窃、修改和破坏。⑤用户接口管理。文件系统向用户提供一个统 一的、方便使用的接口,用户通过该接口可以方便地获得如文件存取、创建、删除、修改等文 件管理服务。
- 为什么在大多数OS 中都引入了“打开”这一文件系统调用?打开的含意是什么?
①当用户要求对一个文件实施多次读/写或者其他操作时,每次都要从检索目 录开始。为了避免多次重复检索目录,在大多数OS 中都引人了“打开”这一文件系统调用, 当用户第一次请求对某文件进行操作时,须先利用open系统调用将该文件打开。②所谓“打 开”,是指系统将指定文件的属性(包括该文件在外存上的物理位置)从外存复制到内存中已 打开文件表的一个表目中,并将该表目的编号(或称索引号)返回给用户。“打开”就是在用户 和指定文件之间建立起一个连接。此后,用户通过该连接可直接得到文件信息,避免了再次通 过目录检索文件,即当用户再次向系统发出文件操作请求时,系统可根据用户提供的索引号直 接在已打开文件表中查找到文件信息。这样不仅节省了检索开销,而且提高了文件操作速度。 如果用户不再对该文件实施操作,则可以利用“关闭”系统调用来关闭此文件,即断开此连 接,此时, OS 将会把该文件从已打开文件表的表目中删除。
- 什么是文件的逻辑结构?逻辑文件有哪几种组织形式?
①文件的逻辑结构是指从用户的角度出发所观察到的文件组织形式,也就是 用户可以直接处理的数据及其结构。②逻辑文件根据其结构可分为两种: 一种是无结构的流式 文件,是指文件信息由一串字符流构成;另一种是有结构的记录式文件,是指将文件信息按照 在逻辑上独立的含义划分为信息单位,每个信息单位称为一个逻辑记录(简称记录)。
- 如何提高变长记录顺序文件的检索速度?
为了提高变长记录顺序文件的检索速度,可建立一张索引表,以主文件中每 条记录的长度及指向对应记录的指针(即该记录在逻辑地址空间的起始地址)为表项的内容。 由于索引表是一个定长记录的顺序文件,其可实现方便快速的直接存取。但是,如果文件较 大,则可建立多级索引以提高检索效率。
- 什么是“按名存取”?文件系统如何实现文件的按名存取?
①“按名存取”指用户只要给出文件名就能存取外存空间中的文件信息,而不 必给出文件的具体物理地址。②文件系统实现文件按名存取的步骤为:首先利用用户提供的文件 名,检索文件目录中该文件的FCB(file control block, 文件控制块)或索引节点;然后根据FCB 中的文件物理地址,将文件读入内存。
- UNIX 系统把文件描述信息从文件目录项中分离出来的原因是什么?
将文件描述信息从文件目录项中分离出来后,目录项中只包含文件名和索引 节点编号,文件的其他描述信息放在索引节点中。这样的分离主要有两个优点。
(1)提高查找速度。查找文件时,用欲查找的文件名与文件目录中的文件名进行依次比 较。由于文件目录存在于外存,比较时须将其读入内存。 FCB 包括全部文件描述信息时, 一个 外存盘块仅能保存较少的FCB, 查找速度较慢;将FCB 描述信息分离后,文件目录中仅保存FCB文件名和索引节点编号信息,此时一个盘块中可容纳较多的FCB, 进而即可减少磁盘块的读取 次数,提高文件检索速度。
(2)实现文件链接。链接就是将路径名作为文件名,使不同的用户均可使用。描述信息分 离后,目录项只包括文件名和索引节点编号,索引节点中包含文件描述信息和标志该索引节点与对应索引号相连接的计数。
- 目前广泛采用的目录结构是哪种?它有什么优点?
目前广泛采用的目录结构是多级树形目录,它具有以下优点。
(1)能有效提高对目录的检索速度。假定文件系统中有N 个文件,在单级目录中,最多 要检索N 个目录项;但对于i级树形目录,在目录中每检索一个指定的文件,最多可能要检索 ix √N 项。
(2)允许文件重名。在树形结构的文件系统中,不仅允许每个用户在自己的分目录中使用 与其他用户的文件相同的名字,而且允许同一个用户的不同分目录中的文件重名。
(3)便于实现文件共享。在树形目录中,用户可通过路径名共享他人的文件;也可将共享 文件链接到自己的目录下实现共享,实现方式是系统在用户目录中增设一个目录项,并在其中 填上用户赋予共享文件的新文件名,以及该共享文件的唯一标识符(或索引节点编号)。
(4)能更有效地进行文件的管理和保护。在多级目录中,用户可按文件性质的不同,将它 们存放到不同的子目录中,并且可以赋予各目录不同的存取权限,因此,能更有效地管理和保护文件。
- 试说明在树形目录中线性检索法的检索过程,并画出相应的流程图。
在树形目录中,用户提供的是从根目录(或当前目录)开始的、由多个文件 分量名所组成的文件路径名。系统在检索一个文件时:①系统读入给定文件路径名中的第一个 文件分量名,用它与根目录(或当前目录)文件中各目录项的文件名进行顺序比较,若能找 到匹配的目录项,则在它的FCB 或索引节点编号中找到对应的文件;②系统读入第二个文件分 量名,用它与刚检索到的目录文件中的各目录项文件名进行顺序比较,若能找到匹配者,则重 复上述过程;③如此逐级检索指定文件的分量名,最后将会得到指定文件的FCB 或索引节点编 号。检索过程的流程(以UNIX 系统为例)如图1-8-1所示。
- 在树形目录中,利用链接方式共享文件有何好处?
利用链接方式共享文件主要有以下几方面的好处。
(1)方便用户。此共享方式允许用户将共享文件链接到自己的子目录下,并赋予它新的文 件名,方便用户管理和使用共享文件。
(2)可防止共享文件被任意删除。每次链接时,系统对索引节点中的链接计数字段i nlink 执行加1操作;删除时,先对该字段执行减1操作,只有当inlink值为0时,共享文件才会被真正 删除,因此可防止共享文件被任意删除。
(3)可加快检索速度。为了加快检索文件的速度, 一般系统都引入了当前目录。若共享文 件已被链接到当前目录下,则系统无须再逐级检索目录,进而提高了检索速度。
- 什么是保护域?进程与保护域之间存在着怎样的动态联系?
保护域是进程对一组对象的访问权的集合。保护域规定了进程所能访问的一 组对象(硬件或软件)以及所能执行的操作(即访问权)。
进程与保护域之间的动态联系是指进程的可用资源集在其整个生命周期中是变化的,进程运行在不同的阶段时可以根据需要从一个保护域切换到另一个保护域。
图1-8- 1 线性检索法流程图
- 什么是访问控制表和访问权限表?系统如何利用它们来实现对文件的保护?
本题分步解答如下。
(1)访问控制表是对访问矩阵按列(对象)进行划分,由有序对集{〈域,权集〉}组成, 可用于描述不同用户(进程)对于同一对象的不同访问权限集。访问控制表也可用于定义各域 对于某对象默认的访问权集,其可作为资源能否使用的首要依据。
(2)访问权限表是对访问矩阵按行(域)进行划分,由有序对集{〈对象,权集〉}组成, 表示一个域对每个对象可以执行的一组操作。当域为用户(进程)、对象为文件时,访问权限 表可用于描述一个用户(进程)对每个文件所能执行的一组操作。
(3)系统为每个对象配置一张访问控制表。当一个进程第一次试图访问一个对象时,必须 先检查访问控制表,确定进程是否具有对该对象的访问权。如果其无权访问该对象,则系统会拒 绝本次访问,并构成一个例外(异常)事件;否则(有权访问),允许本次访问,为该进程建立 一个访问权限,并将该权限连接到该进程。以后,进程便可直接利用这一返回的权限去访问该对 象,亦可快速验证访问的合法性。当进程不再需要对该对象进行访问时,可撤销该访问权。
第九章
- 文件物理结构是指一个文件在外存上的存储组织形式,主要有连续结构、 链接结构和索引结构这3种,请分别简述它们的优缺点。
本题分步解答如下。
(1)连续结构。优点:①存储管理简单,容易实现;②支持顺序存取和随机存取;③顺序 访问速度快。缺点:①要求为每个文件分配连续的存储空间;②必须事先知道文件的长度,要 求能灵活地插入和删除记录;③不利于文件的动态增长。
(2)链接结构。优点:①消除了磁盘的外部碎片,提高了磁盘空间的利用率;②能适应 文件的动态增长;③方便插入、修改和删除记录。缺点:①存取速度较慢,不适合随机存取; ②物理块间的链接指针错误会造成数据丢失,可靠性差;③需要较多的寻道次数和较长的寻道 时间;④链接指针会占用空间,降低了空间利用率。
(3)索引结构。优点:①既能顺序存取,又能随机存取;②能适应文件的动态增长;③方 便插入、修改和删除记录。缺点:①需要较多的寻道次数和较长的寻道时间;②索引表增加了 系统开销,包括内存空间和存取时间。
- 某文件系统为单级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次创建新文件。请回答如下问题。
(1)在连续、链式、索引这3种文件数据块组织方式中,哪种更合适?说明理由。为 定位文件数据块,需要在FCB 中设计哪些相关描述字段?
(2)为快速找到文件,对于 FCB,是集中存储好,还是与对应的文件数据块连续存储好? 说明理由。
(1)采用连续结构组织方式更合适。该方式组织文件所占磁盘块连续,因此寻道时间更短, 文件随机访问效率更高。需要在FCB中加入〈起始块号,块数>或〈起始块号,结束块号>字段。
(2)将所有的FCB集中存放更好。这样在随机查找文件名时,只需要访问FCB 对应的块, 因此可以减少磁头移动次数和磁盘I/O访问次数。
- 有一计算机系统利用图1-9-2所示的位示图(行号、列号都从0开始编号)来管 理空闲盘块。如果盘块从1开始编号,每个盘块的大小为1KB, 则请回答下列问题:
-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
3 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
5 |
图1-9-2 位示图
(1)现要为文件分配两个盘块,试具体说明分配过程;
(2)若要释放磁盘的第300块,则应如何处理?
(1)为某文件分配两个盘块的过程如下:
① 顺序检索位示图,从中找到第一个值为0的二进制位,得到其行号i=2,列号=3;
②计算出该位所对应的盘块号
b=i×16+j+1=2×16+3+1=36;
③ 修改位示图,令map[23]=1, 并将对应的盘块36分配给文件。按照同样的方式,可找到第
3行、第6列的值为0的位,将其转换为盘块号55;将位的值修改为1,并将55号盘块分配给文件。
(2)释放磁盘的第300块时,应进行如下处理:
① 计算出磁盘第300块所对应的二进制位的行号i 和列号j, 即
i=(300- 1)DIV 16=18,J=(300- 1)MOD 16=11;
② 修改位示图,令map[18,11]=0, 表示对应的盘块为空闲块。
- 某系统采用成组链接法管理磁盘的空闲空间,目前盘块的链接情况处于 图1-9-3所示的状态,先由进程A 释放物理块181、135、192,再由进程B 申请4个物理块。 试分别画图说明进程A 释放物理块后和进程B 申请物理块后的盘块链接情况。
本题分步解答如下。
( 1 ) 进程A 释放物理块181、135、192的过程为:①目前栈中有99个物理块,当进程A 释放 181#物理块时,栈中的块数为100;②进程A继续释放135#物理块,并将栈中的100个盘块号记录 在135#物理块中,然后将135#记录在栈中;③继续释放192#物理块并将其放入栈中,此时S.free 的值为2,即栈中的空闲块数为2。进程A释放3个物理块后盘块的链接情况如图1-9-4所示。
( 2 ) 进 程B 申请4个物理块的过程为:①首先申请栈中的192#物理块;②然后将135#物理块 中的内容(100个盘块号)复制到栈中,再将135#物理块分配出去,此时S.ftee的值为100;③依 次分配栈中的181#物理块和98#物理块,此时S.free的值为98。进程B 申请4个物理块后盘块的链 接情况如图1-9-5所示。
- 磁盘长期使用后,读/写磁盘中数据的速度就会变慢;而执行磁盘碎 片整理程序后,读/写速度就提高了,为什么?*
①文件磁盘存储不连续。计算机系统经过一段时间的使用后,由于文件修 改、删除、新建等操作混合在一起产生的积累效应,许多文件在磁盘上的存储位置变得不连 续,进而导致读/写数据速度变慢。②磁盘是一个靠盘片的高速旋转进行读/写的设备,当系统 需要读/写的数据连续存储在同一磁道时,存储效率较高。当数据的存储不连续时,由于寻道需 要开销,效率会有较大程度的下降。用户在读/写文件时,文件的连续存储也有利于提高磁盘 工作效率,提高数据读/写速度。③通过磁盘碎片整理程序整理碎片,可以将存放文件的数据集 中排列,有效提高了文件系统的性能。
- 何谓磁盘高速缓存?在设计磁盘高速缓存时需要考虑哪些问题?
磁盘高速缓存是指在内存中为磁盘盘块设置的一个缓冲区,在该缓冲区中保存了 某些盘块的副本。系统在访问磁盘时,首先会查看磁盘高速缓冲中是否存在要访问的盘块内容,如 果存在,则可从磁盘高速缓存中去获取,而无须启动磁盘,进而提高了访问速度;如果不存在,则 启动磁盘以将所需盘块内容读入,并把该内容传送给磁盘高速缓存,以方便再次访问时获取。
在设计磁盘高速缓存时需要考虑的问题有:①如何将磁盘高速缓存中的数据传送给请求进 程;②应采用什么样的置换策略;③已修改的盘块数据应在何时写回磁盘。
- 什么是磁盘容错技术?请简述基于集群技术实现容错的几种主要的工作模式。
磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法来提高磁盘 系统可靠性的一种技术。磁盘容错技术也叫作系统容错技术 (system fault tolerant,SFT)。
基于集群技术实现容错主要有3种工作模式。①双机热备份模式。在这种模式的系统中,通 常备有两台处理能力完全相同的服务器, 一台为主服务器,另一台为备份服务器。该模式提高 了系统的可用性,易于实现。主、备份服务器完全独立,可支持远程热备份,可以消除由于火 灾、爆炸等非计算机因素所造成的隐患。但是该模式中备份服务器处于被动等待状态,使用效 率只有50%。②双机互为备份模式。两台服务器平时均为在线服务器,各自完成自己的任务。 每台服务器内都配置了两个硬盘,用其中的一个硬盘作为另一台服务器的镜像盘,实现互相 备份。这种模式中两台服务器都可处理任务,因而系统效率较高。当其中一台服务器发生故障 时,系统可指定另一台服务器来接替它的工作。③公用磁盘模式。将多台服务器连接到一个公 共的磁盘系统中,以消除信息的复制时间,减少了网络和服务器的开销。
- 引入检查点的目的是什么?引入检查点后应如何进行恢复处理?
要考虑哪些问题?**
磁盘高速缓存是指在内存中为磁盘盘块设置的一个缓冲区,在该缓冲区中保存了 某些盘块的副本。系统在访问磁盘时,首先会查看磁盘高速缓冲中是否存在要访问的盘块内容,如 果存在,则可从磁盘高速缓存中去获取,而无须启动磁盘,进而提高了访问速度;如果不存在,则 启动磁盘以将所需盘块内容读入,并把该内容传送给磁盘高速缓存,以方便再次访问时获取。
在设计磁盘高速缓存时需要考虑的问题有:①如何将磁盘高速缓存中的数据传送给请求进 程;②应采用什么样的置换策略;③已修改的盘块数据应在何时写回磁盘。
- 什么是磁盘容错技术?请简述基于集群技术实现容错的几种主要的工作模式。
磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法来提高磁盘 系统可靠性的一种技术。磁盘容错技术也叫作系统容错技术 (system fault tolerant,SFT)。
基于集群技术实现容错主要有3种工作模式。①双机热备份模式。在这种模式的系统中,通 常备有两台处理能力完全相同的服务器, 一台为主服务器,另一台为备份服务器。该模式提高 了系统的可用性,易于实现。主、备份服务器完全独立,可支持远程热备份,可以消除由于火 灾、爆炸等非计算机因素所造成的隐患。但是该模式中备份服务器处于被动等待状态,使用效 率只有50%。②双机互为备份模式。两台服务器平时均为在线服务器,各自完成自己的任务。 每台服务器内都配置了两个硬盘,用其中的一个硬盘作为另一台服务器的镜像盘,实现互相 备份。这种模式中两台服务器都可处理任务,因而系统效率较高。当其中一台服务器发生故障 时,系统可指定另一台服务器来接替它的工作。③公用磁盘模式。将多台服务器连接到一个公 共的磁盘系统中,以消除信息的复制时间,减少了网络和服务器的开销。
- 引入检查点的目的是什么?引入检查点后应如何进行恢复处理?
①引人检查点的目的是使对事务记录表中事务记录的清理工作经常化。②引 入检查点后的恢复处理工作由恢复例程来实现:首先,查找事务记录表,确定在最近检查点以 前开始执行的最后的事务T; 找到T后,返回搜索事务记录表,找到第一个检查点记录后,从该检查点开始,返回搜索相应的事务记录,并利用redo和undo过程对它们进行相应的处理。