操作系统学习笔记第1章 (竟成)
第 1 章 操作系统概述
【考纲内容】
1.操作系统的基本概念
2.操作系统的发展历程
3.程序运行环境
(1) CPU 运行模式:内核模式;用户模式
(2) 中断和异常的处理
(3) 系统调用
(4) 程序的链接与装入
(5) 程序运行时内存映像与地址空间
4.操作系统结构:分层;模块化;宏内核;微内核;外核
5.操作系统引导
6.虚拟机
【考情统计】
年份
单选题数
综合题数
总分值
考点
2009
2
0
4
中断、批处理系统
2010
2
0
4
系统调用、中断
2011
1
0
2
运行模式
2012
2
0
4
系统调用、中断
2013
2
0
4
运行模式、系统调用、操作系统引导
2014
1
0
2
运行模式
2015
2
0
4
中断、运行模式
2016
1
0
2
批处理系统
2017
2
0
4
系统调用、批处理系统
2018
2
0
4
批处理系统、中断
2019
1
0
2
系统调用
2021
1
0
2
运行模式
2022
3
0
6
操作系统初始化、运行模式、系统调用
2023
3
1
8
微内核、中断和异常的处理、用户模式
2024
1
0
2
中断、异常、系统调用以及内核态的概念
【考点解读】
本章主要以选择题的形式考查考生对操作系统的基本概念的理解,一部分考题对本章节内单个知识点考查,另一部分会结合其他章节的内容考查,考生学习时要注重总结,对于综合性的考点要分析其中的联系。本章是概述性和引导性的章节,考生可结合之后的章节反复思考与学习,并建立一个有关操作系统的架构或知识网络。本章内容虽然不多,但也不要掉以轻心。
【复习建议】
1.了解操作系统的定义、特征以及功能。
2.理解操作系统的发展历程,掌握不同操作系统的区别以及与它们相关的技术。
3.重点掌握内核模式和用户模式的不同以及转换条件。
4.重点掌握中断和异常的基本概念以及中断处理过程,这个知识点是历年考查的重点。
5.理解系统调用的基本概念以及系统调用过程。
6.理解程序的链接与装入的基本概念以及程序运行时的内存映像与地址空间。
7.理解操作系统的多种体系结构,主要是宏内核与微内核、模块化结构与分层结构以及它们之间的区别。
8.掌握操作系统引导过程。
9.理解第一类虚拟机管理程序与第二类虚拟机管理程序的区别。
1.1 操作系统的基本概念
1.1.1 操作系统的概念
操作系统(Operating System,OS)是一种运行在计算机硬件上的最基本的系统软件,不仅向下负责对硬件进行管理和抽象,还向上为应用程序提供服务并进行管理。有了操作系统,应用程序开发者就不再需要深入了解计算机硬件的各种细节;只需利用操作系统提供的接口,即可开发出优雅、健壮且兼容性强的软件。
操作系统所要达到的目标与其应用环境息息相关。例如应用于武器控制、航天控制的操作系统,需要有良好的实时性和高效性;应用于个人计算机的操作系统,需要其有良好的交互性和易用性。
尽管学术界对于操作系统并无明确严格的定义,不同应用环境下操作系统所要达到的目标也不尽相同,但考生可以从如下几个方面理解操作系统的概念:1.从用户的角度
对于普通用户来说,操作系统提供了一个用户友好的界面来方便用户的使用,例如 Windows 系统的用户图形界面(GUI, Graphics User Interface);对于应用程序员来说,操作系统使得应用开发更加容易,用户无需考虑复杂的底层系统,而是通过操作系统提供的接口(即系统调用)使用计算机资源。2.从计算机资源的角度
操作系统是计算机系统各类软硬件资源的管理者。它通过对计算机资源和底层结构的抽象,将裸机改造成一台拥有扩展功能的计算机。例如 Linux 操作系统将外部设备资源抽象成文件,并建立文件系统进行管理。1.操作系统是管理计算机资源的系统软件。下列选项中,由操作系统所管理的资源是( )。
I. 信号量
II. 缓冲区
III. 文件
IV. I/O 设备
A. I、II
B. II、III
C. I、II、IV
D. I、II、III、IV1.【参考答案】D
【解析】 操作系统对计算机的软、硬件资源进行管理。操作系统对资源的管理具体表现在对资源的分配与回收,操作系统有权决定这个资源此时可以分配给谁使用。I、II、III 和 IV 都属于计算机资源。所以正确答案为 D 选项。3.从计算机系统的角度
操作系统位于用户层和硬件层之间,向上提供服务、向下管理资源,所以操作系统需要协调整个计算机系统的工作,提高系统运行效率,使整个计算机系统高效、安全运行。
计算机系统的分层结构如图 1.1 所示。
1.1.2 操作系统的基本特性
操作系统作为一种最基本的系统软件,主要有并发性、共享性、虚拟性、异步性四大特征。
1.并发(Concurrency)
并发是指在计算机系统中一段时间内宏观上有多个程序在同时运行。在单处理器系统上,宏观来看,这些程序是同时向前推进的;而微观来看,并发执行的程序是交替在处理器上运行的。在多处理器系统上,每个处理器都可以处理独立的程序,所以不同处理器上的多个程序便是同时(并行)执行的。
程序并发性体现在两个方面:
(1) 用户程序与用户程序之间的并发执行。
(2) 用户程序与操作系统程序之间的并发执行。
【提示】要注意区别并发和并行。并行性是指两个或多个事件在同一时刻发生;并发性是指两个或多个事件在同一时间间隔内发生,但同一时刻只有一个事件在发生。日常生活中,当我们边写作业边听音乐时,写作业和听音乐是并行执行的;当我们计划在一个小时内,先写半小时作业,再听半小时音乐,则这一个小时内写作业和听音乐是并发执行的。在解释并发这一概念中,提到了 “宏观” 一词,考生体会这一词语的含义,即在一段时间内看似两个事件是同时进行的,但着眼于一个时刻时,只有一个事件正在进行。另一方面,我们所处的物理世界是天然并行的,正所谓 “万物并育而不相害,道并行而不相悖”。你在看书的这一刻其他人可能在吃饭、睡觉,而这一切都是同时进行的。
并行是并发的特例,程序有并行性则一定是并发的,反之并发活动并不一定是并行的。实际上并发是一种设计思想,即要尽可能复用计算机中的资源来提高计算机系统的运行效率,例如程序要进行 I/O 操作时,操作系统会要求其让出处理器资源使其他程序能上处理器运行,使 I/O 设备可以与处理器并行工作,这样可以减少硬件资源相互等待带来的时间损耗。
为了实现并发,从操作系统中抽象出进程这个概念。进程是程序一次运行过程的抽象,进程之间可以并发执行并且交换信息,进程和并发是现代操作系统极为重要的概念,在本书第 2 章会进行详细阐述。2.共享(Sharing)
共享是指内存中多个并发执行的进程(线程)同时使用同一个系统资源。我们把这种资源的共同使用称为资源共享或资源复用。由于资源属性不同,对资源的复用方式也不同,目前主要分互斥共享和同时访问这两种方式。
(1) 互斥共享方式
系统中的某些资源是可以供多个进程使用的,但在一段时间只能有一个进程访问该资源,其他进程不能访问,这种资源共享方式称为互斥共享。在一段时间内只允许一个进程访问的资源称为临界资源或独占资源,这种机制用于保证各进程互斥使用临界资源。
(2) 同时访问方式
系统中的另一类资源是允许多进程在一段时间内 “同时” 访问。这里所说的 “同时” 是宏观有意义上的;在微观意义上(单处理机环境下),这些进程实际上是交替访问资源的。
【提示】要理解为什么临界资源在一段时间只能由一个进程访问,而另一类资源允许多进程在一段时间交替访问。互斥共享访问的典型资源是打印机,若允许交替访问,则打印出的内容会混乱;同时访问的典型资源是磁盘,对磁盘的交替访问并不会出现错误。
并发和共享是多用户操作系统的两个最基本的特征,二者互为存在的基础。一方面,程序的并发执行是资源共享的前提。如果程序无法并发执行,那么共享也就无从谈起。另一方面,成功的共享是程序并发执行的基础。如果不能有效地使各进程访问共享资源,那么计算机系统的并发程度也必然会受到影响,甚至根本无法并发执行。3.虚拟(Virtualization)
虚拟是指通过某种技术将一个物理实体变成若干个逻辑上的对应物。这里物理实体是实际存在的事物,逻辑上的对应物是用户感觉上的虚拟物。把用于实现虚拟的技术称为虚拟技术。
操作系统中利用两种方式实现虚拟技术:时分复用技术和空分复用技术。
(1) 时分复用技术
时分复用技术通过减少处理器和 I/O 设备的空闲时间,来提高计算机资源的利用率。每个资源的时间被划分为多个时间片,用户或者进程可以轮流使用资源,在用户或进程看来,它们独占了资源。(a) 虚拟处理器技术
多道程序并发执行时,即使系统中只有一个处理器,每个终端用户却感觉在独享一个处理器,这就是通过时分复用的方法实现了一个处理器为多个用户服务的目的。这一过程是将一个物理上的处理器虚拟为多台逻辑上的处理器,每一道程序都能运行在各自的逻辑处理器上,我们把用户所感觉到的处理器称为虚拟处理器。
(b) 虚拟设备技术
同样,可以通过虚拟设备技术将一台物理上的 I/O 设备虚拟为多台逻辑上的 I/O 设备,每一台逻辑 I/O 设备被一个用户所占有,这样,一个实际的 I/O 设备原本作为临界资源,一段时间内只能由一个用户访问,现在可以被多个用户在宏观上 “同时” 访问。
(2) 空分复用技术
空分复用技术是利用存储器的空闲空间区域存放和运行其他的多道程序,以此来提高内存的利用率。单纯的空分复用存储器虽然提高了内存的利用率,但是并不能让存储容量在逻辑上得到扩大,必须引入虚拟存储技术来实现。虚拟存储技术将主存看作外部存储器的缓存,并在适当的时机进行信息交换,使得一个所占空间远大于内存容量的程序正常运行。应用虚拟技术后,应用开发者就无需关心内存硬件的型号、位置和容量,只需面向一个统一的、大小近乎无限的虚拟地址空间进行编程。存储器管理也是操作系统中极为重要的技术,在本书第 3 章会进行详细阐述。
4. 异步(Asynchrony)
异步性指的是多道程序并发执行时,进程并不是一直不间断地从开始执行到结束,而是以等待 - 执行的循环方式和不可预期的速度向前推进。
多道程序环境中,程序众多而资源有限,各个程序都无法保证从一而终的连贯执行。此外,各种输入输出事件的发生往往不受计算机系统的控制。因此,程序的运行时间、运行顺序具有不确定性;同一程序和数据的多次运行可能得到不同的结果。只有操作系统和应用程序都配备了完善的同步机制,用以协调程序的执行顺序,才能保证程序在相同的运行环境下得到相同的运行结果。1.1.3 操作系统的功能
操作系统主要有处理器管理、存储器管理、文件管理、设备管理四大功能。
1.处理器管理
在多道程序系统中,对处理器的管理可以归结为对进程的管理,这是因为处理器的分配和运行都是以进程为基本单位的。进程管理的主要功能有:1.进程控制:操作系统需要为作业创建进程、终止已结束的进程,以及控制进程在运行过程中的状态转换。
2.进程同步:对多个进程(含线程)的运行进行协调。
3.进程通信:实现相互合作进程之间的信息交换。
4.进程调度:按照一定的算法把处理器分配给进程。
2.存储器管理
存储器管理的主要功能是内存分配和回收、内存保护、地址映射和内存扩充。1.内存分配:通过一定的分配策略将内存分配给每道程序,提高存储器的利用率,并且能够适应程序和数据动态增长的需要。
2.内存保护:保证各程序在各自的空间运行而互不干扰,不允许用户程序访问操作系统和其他用户的程序和数据。
3.地址映射:将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。
4.内存扩充:从逻辑上扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序能并发运行。
3.文件管理
文件管理主要是对用户文件和系统文件进行管理,为用户提供统一且友好的接口,以方便用户使用,并保证文件的安全性。文件管理应具备对文件存储空间的管理、目录管理、文件的读 / 写管理以及文件的共享与保护等功能。1.文件存储空间管理:对外存空间的分配与回收和对外存空闲空间的管理,提高文件系统的存取效率。
2.目录管理:为每个文件建立一个目录项,目录项包括文件名、文件大小、创建时间、文件在磁盘上的物理位置等,并对众多的目录项进行有效的组织,以实现方便的按名存取。
3.文件的读 / 写管理:根据用户的请求,从外存中读取数据,或将数据写入外存。
4.文件共享与保护:操作系统允许文件共享,但为了防止系统中的文件被非法窃取和破坏,在文件系统中必须提供有效的存取控制功能,以防止未经授权的用户对文件的操作和访问。
4.设备管理
设备管理主要是完成用户进程提出的 I/O 请求,为其分配所需的 I/O 设备,并完成指定的 I/O 操作,从而提高 I/O 设备的利用率和处理器与 I/O 设备的并行程度,方便用户使用 I/O 设备。
设备管理具有缓冲管理、设备分配和设备处理以及虚拟设备等功能。1.缓冲管理:通过在 I/O 设备和处理器之间引入缓冲,可以有效地缓和处理器和 I/O 设备速度不匹配的矛盾,提高处理器的利用率和系统吞吐量。
2.设备分配:对于用户进程的 I/O 请求,根据系统现有的资源情况,按照某种设备分配策略为其分配所需的设备。
3.设备处理:设备处理程序即为设备驱动程序,主要用于实现处理器和设备控制器之间的通信。
4.虚拟设备:虚拟设备技术已在操作系统的虚拟性中进行阐述,此处不再赘述。
1.1.4 习题精编
1.操作系统是管理计算机资源的系统软件。下列选项中,由操作系统所管理的资源是( )。
I. 信号量
II. 缓冲区
III. 文件
IV. I/O 设备
A. I、II
B. II、III
C. I、II、IV
D. I、II、III、IV1.【参考答案】D
【解析】 操作系统对计算机的软、硬件资源进行管理。操作系统对资源的管理具体表现在对资源的分配与回收,操作系统有权决定这个资源此时可以分配给谁使用。I、II、III 和 IV 都属于计算机资源。所以正确答案为 D 选项。2.现代操作系统中最基本的两个特征是( )。
A. 并发和共享
B. 共享和虚拟
C. 异步和共享
D. 并发和虚拟2.【参考答案】A
【解析】 现代操作系统起源于多道批处理操作系统,可以说多道程序设计奠定了现代操作系统的基础,因此多道程序设计带来的并发、共享成为现代操作系统的基本特征。选 A 项。3.下列关于并发性和并行性的叙述中,正确的是( )。
A. 并发性是指若干事件在同一时刻发生
B. 并行性是指若干事件在不同时刻发生
C. 并发性是指若干事件在同一时间间隔内发生
D. 并行性是指若干事件在不同时间间隔内发生3.【参考答案】C
【解析】 并发性是指若干事件在同一时间间隔发生,并行性是指若干事件在同一时刻发生。4.下列选项中,操作系统为编程人员提供的接口是( )。
A. 图形用户接口
B. 原语
C. 系统调用
D. 脱机命令接口4.【参考答案】C
【解析】 操作系统为编程人员提供的接口是系统调用,图形用户接口和脱机命令接口是操作系统提供给普通用户的接口,原语不属于系统接口,而是一串不可中断的操作序列。选 C。5.下列选项中,操作系统提供给用户的接口不包括( )。
A. 联机命令接口
B. 键盘快捷键
C. shell 命令
D. 系统调用5.【参考答案】B
【解析】 操作系统向用户提供两种接口:命令接口和程序接口。命令接口又分为联机命令接口(如命令解释程序、shell 命令语言)和脱机命令接口。程序接口(又称为系统调用)是操作系统提供给程序设计人员的用于获取系统服务的接口。所以正确答案为 B 选项。6.下列选项中,有关操作系统的叙述正确的是( )。
A. 操作系统的四个特性是并发、共享、虚拟和异步
B. 操作系统向用户提供编译程序的服务
C. 操作系统是一种应用软件
D. 操作系统不对用户编辑的源程序文件进行管理6.【参考答案】A
【解析】 操作系统没有编译程序的功能,该功能是由编译器提供的,B 错。操作系统是系统软件,系统软件包括操作系统、编译器、解释器、公用程序(文件管理程序、格式化工具)、数据库管理系统等,C 错。源程序文件是文件,而文件管理是操作系统的一项重要内容,D 错。7.从用户的观点来看,操作系统是( )。
A. 用户与计算机之间的接口
B. 控制和管理计算机系统资源的软件
C. 合理组织计算机操作流程的软件
D. 一个大型的工具软件7.【参考答案】A
【解析】 从用户观点来看,操作系统向用户提供了接口,用户通过这些接口使用计算机资源。所以正确答案为 A 选项。8.下列选项中,不属于操作系统关心的主要问题的是( )。
A. 管理计算机裸机
B. 向用户和应用程序提供接口
C. 管理计算机中的软、硬件资源
D. 提供虚拟机管理程序8.【参考答案】D
【解析】 操作系统管理计算机裸机和计算机软、硬件资源,并向用户和应用程序提供接口。操作系统并不提供虚拟机管理程序,(第二类)虚拟机管理程序是一种应用程序。选 D。9.说明库函数与系统调用的区别和联系。
9.【参考答案】
库函数调用的对象是函数库中的一段程序(或函数),并在用户空间中执行,属于过程调用,调用的开销较小。系统调用所调用的是系统内核的服务,是操作系统的入口,调用发生在用户空间,但具体过程在内核空间执行,由于涉及到用户态与内核态之间的相互切换,所以开销较大。10.操作系统的 “虚拟” 特性表现在很多方面,请举出两个例子。
10.【参考答案】
虚拟设备技术:将一台物理设备虚拟为逻辑上的多台设备,当用户发出 I/O 请求时,系统实际上为用户分配一块空闲的磁盘区块,当设备空闲时,再执行用户的请求。
虚拟内存:利用了局部性原理,程序在装入内存时,只将其中一部分装入,其余部分存放在外存中,在程序执行过程中,如果用户访问的信息不在内存中,就从外存中将所需的部分装入内存,这样看起来系统为用户提供了一个比实际内存更大的虚拟存储器。1.2 操作系统的发展历程
操作系统的发展历程如图 1.2 所示。下面将对操作系统各阶段进行阐述,请考生思考:每一阶段的操作系统存在什么样的问题,在下一阶段为了解决这些问题,又采用什么样的新技术。
1.2.1 无操作系统阶段
在计算机发展初期,没有操作系统,人们通过手工方式操作计算机。用户将带有程序和数据的穿孔纸带(或卡片)放入输入机,然后启动输入机把它们送入计算机,通过控制台开关启动计算机运行。直到运行结束后,由用户将纸带和结果取走,下一个用户继续使用。
这种人工操作的方式有以下两个缺点:1.用户独占全机,所有计算机资源在一段时间内只能被一个用户使用。
2.CPU 需要等待人工操作,这造成 CPU 和内存资源大部分时间处于空闲状态。
上面两个缺点都体现了人工操作方式严重降低了计算机资源的利用率,也就是所谓的人机矛盾。由于 I/O 设备速度的提升没有 CPU 那么快,CPU 与 I/O 设备之间速度不匹配的矛盾更加突出。1.2.2 批处理操作系统
1.单道批处理系统
单道批处理操作系统的出现旨在解决上述两个缺点。为了连续处理作业,首先用脱机的方式将这批作业输入到磁带上,然后在监督程序的控制下实现连续工作。
具体步骤:
(1) 由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给作业。
(2) 等到该作业处理完成时,又把控制权交给监督程序,监督程序接着将第二个作业调入内存运行。
(3) 重复 (1)、(2) 两步,直至磁带上的所有作业完成。
这一过程可以看成是串行的,形成了早期的批处理系统。
优点:解决了人机矛盾和 CPU 与 I/O 设备速度不匹配问题,提高系统资源的利用率和系统吞吐量。
缺点:每次只能运行一道程序,不能充分地利用系统资源。2.多道批处理系统
用户所提交的作业先排成一个队列(后备队列)放在外存上,由作业调度程序按照一定的算法从队列中选择若干作业调入内存,共享系统中的各种资源。
当多个程序在内存中时,各程序可以根据 CPU 的空闲时间轮流使用 CPU,在一个 CPU 上同时执行多个任务,使得 CPU 一直处于忙碌状态,不会因等待 I/O 而闲置,资源得到充分利用。
(1) 优点:CPU 尽可能处于忙碌状态,中断技术的引入实现了 CPU 和外设的并行工作,提高了内存和 I/O 设备等资源的利用率,提高了系统吞吐量。
(2) 缺点:由于作业排队造成平均周转时间长,并且用户不能与程序交互。
【提示】单道和多道指的是有一个或多个进程(作业)在内存中。从单道演变为多道批处理操作系统具有跨时代意义,因为有了多道程序设计技术,才有了现代操作系统的雏形。1.2.3 分时操作系统
在批处理系统中,各联机作业总是串行执行,一段时间内仍然只有一个作业可以执行,如果遇到一个很长的作业,那么后面的作业可能需要长时间等待。而且整个过程中,用户无法与自己的作业进行交互。
通过分时技术可以将处理机的运行时间分成很短的时间片,轮流分配给各用户的作业使用。在规定的时间片内,无论作业是否完成计算,都要暂停运行,并被剥夺处理机给其他作业使用,直到下一轮得到时间片后继续运行。这使得多个用户可以同时使用系统,当用户在自己的终端上键入命令时,系统应能及时接收,并及时处理该命令,再将结果返回给用户。由于计算机和作业运行轮转的速度都很快,用户感觉不到延迟,仿佛自己独占计算机。
所以,分时操作系统具有以下特征:
(1) 多路性:一台计算机可以同时或几乎同时被多个用户使用。
(2) 交互性:用户通过与程序直接交互来控制程序的运行。
(3) 独立性:每个用户都感觉不到其他用户的存在,彼此之间互不影响,好像自己独占整个计算机。
(4) 及时性:每个用户的请求都能在很短的时间内得到响应。
虽然分时操作系统展现了很好的及时性和用户体验,解决了人机交互的问题,但并不能严格保证请求能在规定的时间内响应和处理,所以为了满足飞机订票或导弹制导等这类实时性要求非常高的系统的要求,又设计出了实时操作系统。1.2.4 实时操作系统
实时操作系统最重要的属性就是 “实时”,时间是该系统的关键因素。它要求系统不仅能保证结果的精确性,更重要的是在规定的时间内得到这一结果。所以,实时系统是指系统能够及时地对外部请求作出响应,并在规定的时间处理该事件,让所有实时任务协调一致地运行。
实时系统分为软实时系统和硬实时系统。之所以有 “软” 和 “硬” 的区别,主要是因为两者对实时这一要求的严格程度不同。
(1) 软实时系统:可以允许或者容忍偶尔出现某一事件没在规定的时间内完成处理,因为这种延迟不会造成永久性和灾难性的损害。比如飞机抢票系统和电商秒杀系统等。
(2) 硬实时系统:任何时刻都要绝对保证某个事件在规定的时刻(或时间范围)得到处理和响应,否则就会造成永久性和灾难性的损害。比如导弹制导系统和机床控制系统等。
所以,实时系统具有以下特征:
(1) 多路性:系统周期性地采集多路现场的信息,以及同时控制多个对象和执行机构。
(2) 独立性:系统在采集信息和控制对象的时候都是互不影响、彼此独立的。
(3) 实时性:系统的实时性是严格根据控制对象所规定的截止时间来确定的。
(4) 交互性:用户通过和程序直接交互来控制它的运行。
(5) 可靠性:实时系统要求高度可靠,因为任何差错都会产生无法预料的灾难性后果。1.2.5 其他操作系统
1.网络操作系统
网络操作系统是网络环境下管理和控制网络资源的操作系统,其建立在网络中不同计算机的单机操作系统之上,为用户提供了使用网络资源的接口。在多个用户争用系统资源时,网络操作系统对资源进行调度,依靠各个独立的计算机操作系统对所属资源进行管理和协调,并实现网络用户进程(或程序)和联机操作系统之间的交互。2.分布式操作系统
指配置在分布式系统上的操作系统。它能直接对分布式系统中的各种资源进行动态分配,并能有效地控制和协调分布式系统中各任务的并行执行,同时还向用户提供了一个方便、透明的使用整个分布式系统的界面。
分布式操作系统除了需要包括单机操作系统的主要功能外,还应该包括分布式进程通信、分布式文件系统、分布式进程迁移、分布式进程同步和分布式进程死锁等功能。
【提示】分布式操作系统管理若干计算机,使它们协调配合完成同一个任务。3.个人计算机操作系统
桌面操作系统主要用于个人计算机。个人计算机上的操作系统可以分为两大阵营,分别为类 Unix 操作系统(macOS、Linux 等)和 Windows 操作系统。1.2.6 习题精编
1.与分时操作系统相比,批处理系统的主要缺点是( )。
A. 资源利用率低
B. 不能实时响应
C. 系统吞吐量小
D. 无交互能力1.**【参考答案】**D
【解析】 分时操作系统将处理器的运行时间分成几个时间片,轮流分配给用户,用户的请求可以得到及时地响应,因此分时操作系统的一大特点就是用户可以和计算机交互,这也是批处理操作系统的主要缺点。B 选项,实时响应是实时操作系统的特点。A、C 选项并不是其主要缺点。所以正确答案为 D 选项。2.与单道批处理系统相比,多道批处理系统提高 CPU 利用率的关键技术是( )。
A. 交换技术
B. 多道程序设计
C. 覆盖技术
D. 紧凑技术2.**【参考答案】**B
【解析】 多道批处理系统相比于单道批处理系统,有了多道程序设计技术。这项技术可以使程序轮流使用 CPU,CPU 始终处于忙碌状态,提高 CPU 利用率。交换技术、覆盖技术和紧凑技术都是内存管理的内容。所以正确答案为 B 选项。3.操作系统中,引入多道程序的目的在于( )。
A. 提高 CPU 利用率,使 CPU 与设备并行工作
B. 有利于代码共享,减少主、辅存交换次数
C. 改善各用户的响应时间
D. 使多个用户程序可以同时运行3.**【参考答案】**A
【解析】 多道程序设计可以提高 CPU 利用率,使 CPU 与设备并行工作。B 选项,代码共享是内存管理的内容。C、D 选项,多道程序技术不是针对多用户的系统,而是针对多任务的系统。所以正确答案为 A 选项。4.引入多道程序技术的前提条件之一是系统具有( )。
A. 分时功能
B. 虚拟技术
C. 中断功能
D. SPOOLing 技术4.**【参考答案】**C
【解析】 引入多道程序设计的前提条件之一是系统具有中断功能。操作系统中,当一个程序因为 I/O 事件而等待,系统就会中断该程序的执行,转而执行另一个就绪的程序。所以正确答案为 C 选项。5.响应时间是衡量分时操作系统性能的重要指标,下列选项中,能够改善响应时间的是( )。
A. 允许用户修改系统时间
B. 加大时间片
C. 允许中断嵌套
D. 采用非抢占式优先级调度5.**【参考答案】**D
【解析】 采用非抢占式优先级调度,一方面对高优先级的进程能够及时响应,另一方面兼顾低优先级进程不会因为高优先级进程的到来而被抢占,这样的设计会有效改善响应时间。比如与用户交互的进程为高优先级进程,在后台进行复杂计算的进程为低优先级进程,用户希望与他交互的进程能够快速响应。A 选项,用户修改系统时间,并不影响系统对于时间片的分配。B 选项,加大时间片并不一定改善响应时间,如果时间片大到一定程度,时间片就失去意义了。C 选项,允许中断嵌套也不能改善响应时间。所以正确答案为 D 选项。6.下列关于分时操作系统叙述中,正确的是( )。
I. 用户间的操作是互不干扰的
II. 需要实现对共享资源的保护
III. 需要实现虚拟内存技术
A. 仅 I
B. 仅 II
C. 仅 I、II
D. I、II 和 III6.**【参考答案】**C
【解析】 分时操作系统将处理器时间分片,每个用户根据时间片轮流使用处理器,在系统切换用户时会保存上一个用户的操作,因此,每个用户的操作是互不干扰的。由于多个用户使用同一个系统,不可避免地出现对共享资源的访问,要保证每个用户都能获得正确的结果,要对共享资源进行保护。所以正确答案为 C 选项。7.在分时操作系统中,时间片一定时,响应时间越长,表明( )。
A. 占用内存越多
B. 占用内存越少
C. 用户数量越多
D. 用户数量越少7.**【参考答案】**C
【解析】 由于分时操作系统是将时间片分配给每个用户,因此时间片一定时,用户数量越多,响应时间越长。A 选项,占用内存多并不代表用户数量多。所以正确答案为 C 选项。8.在分时操作系统中,响应时间是响应所有就绪进程的时间之和,当有 100 个就绪进程,要求响应时间不超过 2s,则时间片最大为( )。
A. 10ms
B. 20ms
C. 50ms
D. 100ms8.**【参考答案】**B
【解析】 响应时间是响应所有就绪进程的时间之和,即响应时间 = 就绪进程数 × 时间片。因此当响应时间最大为 2s 时,时间片最大为 2s / 100 = 20ms。所以正确答案为 B 选项。9.为了实时操作系统能够及时处理来自外部的事件,必须( )。
I. 允许中断嵌套
II. 采用抢占式优先级调度
III. 是分布式系统
IV. 提供图形界面
A. 仅 I、II
B. 仅 II、III
C. I、II 和 IV
D. I、II 和 III9.**【参考答案】**A
【解析】 实时操作系统要保证实时性和可靠性,当更高优先级的事件到达时,必须优先执行该事件,因此必须允许中断嵌套和采用抢占式优先级调度。实时操作系统更注重实时性和可靠性,因此分布式操作系统和图形界面是不必要的。所以正确答案为 A 选项。10.下列选项中,采用了实时操作系统的是( )。
I. 飞行器控制
II. 股票交易系统
III. 火灾报警
IV. 员工信息管理系统
A. 仅 I、II
B. 仅 II、III
C. I、II 和 III
D. I、II 和 IV10.**【参考答案】**C
【解析】 实时操作系统要保证可靠性和实时性。对于飞行器控制、火灾报警、股票交易系统要进行实时控制,一旦在规定时间内没有响应事件,就会出现严重的后果,所以 I、II、III 正确。员工信息管理系统是一个管理员工信息的系统,不需要实时的操作,只需要管理员对员工信息进行操作。所以正确答案为 C 选项。11.下列选项中,关于操作系统的叙述正确的是( )。
A. 分时操作系统中时间片越小越好
B. Linux 系统是一个多用户多任务的分时操作系统
C. 批处理操作系统允许用户与计算机进行交互
D. 硬实时操作系统允许偶尔违反规定时间11.**【参考答案】**B
【解析】 A 选项,分时操作系统并不是时间片越小越好,时间片越小,切换用户越频繁,由此带来的时间开销也越多。C 选项,允许用户与计算机进行交互是分时操作系统的功能。D 选项,硬实时操作系统要保证任何一个事件都要在规定时间内完成。所以正确答案为 B 选项。12.下列选项中,关于操作系统的叙述正确的是( )。
A. 批处理操作系统必须在响应时间内处理完一个任务
B. 实时操作系统须在规定时间内处理完来自外部的事件
C. 分时操作系统必须在周转时间内处理完来自外部的事件
D. 分时操作系统必须在调度时间内处理完来自外部的事件12.**【参考答案】**B
【解析】 A 选项,批处理操作系统不需要与用户交互,也就没有响应时间的概念。C 选项,周转时间是从进程提交到进程结束的时间间隔。D 选项,分时操作系统并没有规定在一定时间内完成某个操作。所以正确答案为 B 选项。1.2.7 真题演练
13.【2009】单处理机系统中,可并行的是( )
I. 进程与进程
II. 处理机与设备
III. 处理机与通道
IV. 设备与设备
A. 仅 I、II 和 III
B. 仅 I、II 和 IV
C. 仅 I、III 和 IV
D. II、III、IV13.**【参考答案】**D
【解析】 单处理机系统中只有一个处理机,只有一条指令流水线,每个时钟周期只能完成一条指令,所以不能并行执行多个进程,只能实现并发执行。处理机与设备、通道之间都是并行工作的。当然,设备与设备之间也是可以并行工作的。所以正确答案为 D 选项。14.【2016】下列关于批处理系统的叙述中,正确的是( )
I. 批处理系统允许多个用户与计算机直接交互
II. 批处理系统分为单道批处理系统和多道批处理系统
III. 中断技术使得多道批处理系统的 I/O 设备可与 CPU 并行工作
A. 仅 II、III
B. 仅 II
C. 仅 I、II
D. I、III14.**【参考答案】**A
【解析】 批处理系统不能和用户进行交互,它是将作业排成队列放在外存,然后由作业调度程序逐一调入内存执行,I 错误。批处理系统可以分为单道批处理系统和多道批处理系统两种,单道批处理系统每次只能处理一个作业,多道批处理系统可以同时处理多个作业,使计算机资源得到更充分的利用,II 正确。中断技术可以让 CPU 在执行某个程序的同时,响应发生在程序执行期间的外部事件,例如 I/O 设备传输完成等,从而提高系统的效率和响应速度。在多道批处理系统中,多个程序可以同时运行,而中断技术可以让 CPU 在执行一个程序的同时,响应 I/O 设备的中断请求,从而实现并行工作,III 正确。所以正确答案为 A 选项。15.【2017】与单道程序系统相比,多道程序系统的优点是( )。
I. CPU 利用率高
II. 系统开销小
III. 系统吞吐量大
IV. I/O 设备利用率高
A. 仅 I、III
B. 仅 I、IV
C. 仅 II、III
D. I、III、IV15.**【参考答案】**D
【解析】 多道程序系统相较于单道程序系统的优点有:CPU 利用率高、系统吞吐量大以及 I/O 设备利用率高。故 I、III、IV 正确。由于多道程序系统需要在多个程序之间来回切换,会给系统带来额外的开销。所以正确答案为 D 选项。16.【2018】下列关于多任务操作系统的叙述中,正确的是( )。
I. 具有并发和并行的特点
II. 需要实现对共享资源的保护
III. 需要运行在多 CPU 的硬件平台上
A. 仅 I
B. 仅 II
C. 仅 I、II
D. I、II、III16.**【参考答案】**C
【解析】 多任务操作系统可以在同一段时间运行多个应用程序,所以 I 正确。多个任务执行时会导致资源的竞争,必须要互斥地访问共享资源,因此 II 正确。单个 CPU 通过进程间的切换也可以同时执行多个任务。所以正确答案为 C 选项。1.3 程序的运行环境
前面提到,操作系统处于计算机硬件与应用程序之间。程序在运行时,也要不断与操作系统和计算机硬件(如 CPU、内存等)打交道,操作系统负责使程序运行变得更加简单,使程序不必再考虑复杂的硬件细节。为此,操作系统要创建出可供程序使用的抽象资源并进行管理,为多道程序提供运行环境。
1.3.1 内核模式和用户模式
要为多道程序提供良好的运行环境,仅靠计算机硬件是无法办到的。现代操作系统都引入了进程这个概念,进程间的切换无法通过硬件直接实现,因此还需要一层系统软件来对处理器和硬件资源进行抽象改造。这一层系统软件即为操作系统内核。内核是一组运行在内核态的程序模块。现代处理机都有内核态和用户态两种运行状态,处于内核态时可以运行全部指令,访问全部内存空间,具有对硬件的完全访问权限;处于用户态时则只能运行部分指令,访问特定范围的内存空间。如果用户程序能直接访问内核空间并修改其中的代码和数据,那么操作系统的运行将会遭到破坏,进而影响到其他程序,甚至导致系统崩溃或无法预料的后果。
所以要想访问内核空间,必须通过操作系统提供的 API 函数去间接执行内核提供的代码,让内核自身来访问,这样才不会出现内核代码被用户程序随意修改的情况,才能保证操作系统本身和其他程序的稳定性。用户程序调用系统 API 函数称为系统调用,一旦发生了系统调用,将暂停用户程序的运行,转而执行内核代码,访问内核空间,这称为内核模式(Kernel Mode),也称为内核态。而应用程序的代码和数据保存在用户空间,当在用户空间执行应用程序自己的代码时,称为用户模式(User Mode),也称为用户态。
一般来说,操作系统内核有以下几种功能。
(1) 资源抽象:屏蔽底层的硬件细节,使应用程序独立于实际使用的物理资源。
(2) 资源分配和回收:将抽象的资源分配给应用程序,并在适当的时机进行回收。
(3) 资源共享:允许进程共享资源,并提供进程同步和互斥机制,以协调多道程序并发执行。
【提示】常见的事件如系统调用、外部中断和缺页等都是发生在用户态的,进程切换和缺页处理等只能发生在核心态;常见的指令如陷阱指令、跳转指令、数据传送指令和设置断点指令等都在用户态执行,所有特权指令如关中断指令、I/O 指令等只能在内核态执行。1.3.2 中断和异常
操作系统的内核为应用程序提供服务,具体方式是在内核态执行操作系统的内核代码,那么如何让操作系统从应用程序手中夺得 CPU 控制权,执行内核代码呢?答案是通过中断或异常机制,这种机制是操作系统获得 CPU 控制权的唯一方式,当中断或者异常事件发生时,CPU 切换至内核态,操作系统得以获得所有特权指令的权限,通过执行操作系统提供的异常或中断处理程序处理异常或中断事件。
【提示】不同教材关于中断与异常的定义各有特色,本书采用袁春风《计算机系统基础》的定义,有时为了强调,将中断称为外部中断,将异常称为内部异常。1.中断(外部中断)
中断是一种由 I/O 外部设备触发的事件,它与 CPU 正在执行的指令无关,中断提供了外设与 CPU 交流的机制,它也是一种重要的输入输出方式(见本书第 5 章)。CPU 会在当前指令执行完毕后响应中断请求,进而转移到对应的中断处理程序,处理完毕后返回到发生中断那条指令(被中断指令已经执行结束)的下一条指令。
(1) 可屏蔽中断
可屏蔽中断主要来自于 I/O 设备的中断请求。CPU 可以通过设置中断屏蔽字的方式屏蔽可屏蔽中断,若一种中断类型被屏蔽,则 CPU 不会检测到其对应的中断信号。典型的可屏蔽中断如打印机中断。
(2) 不可屏蔽中断
不可屏蔽中断主要来自于非常紧急的硬件故障,CPU 无法屏蔽该类型的中断,所以 CPU 一定能检测出该类中断并及时通过中断服务程序进行处理。典型的不可屏蔽中断如电源掉电。
【提示】对于可屏蔽中断,可以通过中断屏蔽字和关中断指令进行屏蔽;对于不可屏蔽中断,一旦出现,CPU 需要立即响应。2.异常(内部异常)
异常是 CPU 执行当前指令产生的事件,是同步发生的,与 CPU 正在执行的指令密切相关。异常事件可以分为故障(fault)、陷阱(trap)、终止(abort)。
(1) 故障
故障是一种可能恢复的异常事件,若当前指令执行产生故障,CPU 转到故障处理程序进行修复。若可以修复,则 CPU 转到引起故障的指令继续执行。若不能修复,则终止当前进程。常见的故障事件如缺页异常,若当前指令访问的页面不在内存中时,会发生缺页异常,由操作系统的缺页异常处理程序负责将页面调入,CPU 返回到当前指令,指令再次执行时即可恢复故障顺利执行了。
(2) 陷阱(trap)
陷阱是一种有意安排的异常事件。陷阱最重要的用途是在用户程序和操作系统内核之间提供一个接口,即为系统调用。关于系统调用的知识会在随后一节进行介绍。陷阱指令 (也称访管指令、陷入指令) 一般用于请求操作系统服务,当陷阱发生后,CPU 转到对应的内核程序执行,执行结束后再返回到用户程序的下一条指令继续执行。
(3) 终止
终止是一种无法恢复的异常事件,比如内存损坏引起的奇偶校验错误。当终止事件发送后,终止处理程序会调用 abort 例程终止应用程序。
中断和异常的典型事件如图 1.3 所示。
3.中断与异常的处理过程
实际上计算机对于中断与异常事件的处理过程大同小异,只是不同的事件执行的中断或异常处理程序不同,这里以外部中断为例,阐述中断与异常的处理过程。
(1) 中断响应过程
当 CPU 检测到未被屏蔽的中断请求信号时,进入中断响应阶段,这一阶段由硬件自动完成。
中断响应阶段主要有三个步骤:关中断,保存断点和程序状态字,引出中断服务程序。·关中断:CPU 首先要关中断,禁止在进行中断处理时又去响应新的中断,防止保存的断点、程序状态字、现场信息被破坏。
·保存断点和程序状态字:断点就是程序的返回地址,程序状态字是一个进程产生的各种状态信息。断点和程序状态字信息在特殊的寄存器中(PC 和 PSW),CPU 会将这两个寄存器内容压栈,以便后续恢复被中断进程的执行流和状态。
【提示】C 语言的函数调用时也是要保存程序返回地址的,但并不需要保存程序状态字信息。·引出中断服务程序:CPU 检测到中断信号后对具体中断源进行识别,以此引出对应的中断服务程序。
(2) 中断处理过程
中断响应过程是由硬件自动完成的,当 CPU 完成最后一步:引出中断服务程序后,CPU 控制权交由操作系统,通过执行操作系统提供的中断服务程序完成中断处理过程。
中断处理阶段主要有三个步骤:保护现场,执行中断处理程序,恢复现场。保护现场指的是保存一些通用寄存器信息,防止接下来执行中断处理程序后寄存器内容被破坏,该过程由操作系统完成。当具体的中断服务程序执行完毕时,恢复现场通用寄存器信息,开中断,恢复 PC 和 PSW 的信息,使得被中断进程完全恢复原来的状态。至此,中断的处理过程结束。
综上,对中断的处理过程如图 1.4 所示。
4. 小结
中断和异常是现代操作系统处理外部 I/O 事件和内部异常事件的重要方式,关于中断和异常的小结如表 1.1 所示。
表 1.1 中断和异常的小结
类型
产生原因
同步 / 异步
来源
返回
中断
I/O 设备的请求信号
异步
外部设备
返回下一条指令
故障
可能恢复的异常事件
同步
访存、除法等指令
可能返回当前指令
陷阱
有意安排的异常事件
同步
陷入指令
返回下一条指令
终止
无法恢复的异常事件
同步
计算机硬件的损坏
不会返回
1.3.3 系统调用
前面介绍过陷阱是一种有意安排的内部异常事件,这样安排的目的是实现系统调用。用户程序运行在用户态,并不允许执行特权指令或者直接访问硬件,所以经常需要请求操作系统内核的服务。用户程序通过陷阱指令使 CPU 转向并执行一个陷阱处理程序,这个程序就负责解析系统调用参数并调用相应的操作系统内核代码,当实现系统调用功能代码,当实现系统调用功能的程序执行完毕时,返回到陷阱指令的下一条指令继续执行用户程序。
系统调用的例子有很多,比如读取一个文件(read)、打开一个文件(open)、创建一个新进程(fork)。以 open 系统调用为例:一个正在用户态运行的用户程序,需要打开一个文件,那么它就必须执行一个陷阱或系统调用指令,将控制权转移到操作系统。操作系统接着通过传递的参数确定文件所在路径,并调用适当的内核代码,最终返回一个文件描述符 fd 给用户进程(关于 open 系统调用的具体细节请查阅第 4 章文件管理相关内容)。上述过程如图 1.5 所示。
所以,执行系统调用的过程包括如下主要操作:①传递系统调用参数;②执行陷阱(trap)指令;③执行相应的服务程序;④返回用户态。
【拓展】陷阱机制除了可以实现系统调用,还可以实现程序调试的功能。以单步调试为例,将 CPU 设为单步调试状态后,每一条指令都会变成陷阱指令,因此,执行每条指令都会触发陷阱并将控制流转移到一个异常处理程序,该程序的功能就是将当前指令执行结果输出。1.3.4 程序的链接与装入
要使一个程序能在多道程序环境下运行,首先要做的事情是创建进程。而创建进程的首要任务是将程序和数据装入内存。要将一个用户源代码变为一个可在内存中执行的程序,一般有以下几个步骤(图 1.6):
(1) 编译:由编译程序将用户源代码编译成 CPU 可执行的目标代码,产生了若干个目标模块(即若干程序段)。
(2) 链接:由链接程序将编译后形成的一组目标模块(程序段),以及它们所需要的库函数链接在一起,形成一个完整的装入模块。
(3) 装入:由装入程序将装入模块装入内存。
1. 程序的装入(地址的变换)
(1) 绝对装入方式
在编译时,如果知道程序将驻留在内存的什么位置,那么,编译程序将产生绝对地址的目标代码。即按照物理内存的位置赋予实际的物理地址。
(2) 静态地址重定位(可重定位装入方式)在单道程序环境下,可将目标模块直接装入到内存中事先指定的位置,所以采用绝对装入方式。而在多道程序环境下,编译程序事先无法确定所编译的目标模块在内存中应该存放的具体位置。在多道程序环境下,所得到的目标模块将 0 作为起始地址,程序中的其他地址也都是相对于起始地址计算的。此时在将装入模块装入到内存中时,将根据内存的实际情况进行重定位,然后放入到合适的位置。
因此静态地址重定位是指在程序开始运行前,程序中指令和数据的各个地址均已完成重定位,此时就已经完成了虚拟地址到内存地址的变换,并且以后不再改变。
(3) 动态地址重定位(动态运行时装入方式)和静态地址重定位方式不同的是,动态地址重定位方式是在程序执行过程中进行地址变换。更确切的说,是把这种地址转换推迟到程序真正要执行时才进行,即在每次访问内存单元前才将要访问的程序或数据地址变换成内存地址。动态重定位可使装配模块不作任何修改就直接装入内存。为使地址转换不影响指令的执行速度,这种方式需要一个重定位寄存器的支持。
2. 程序的链接
源代码经过编译后,可得到一组目标模块,再利用链接程序将这组目标模块链接,形成装入模块。根据链接时间的不同,可把链接分成如下三种:
(1) 静态链接:在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,不再拆开。
(2) 装入时动态链接:将用户源代码编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。
(3) 运行时动态链接:在程序执行中需要该目标模块时,才对某些目标模块进行链接。1.3.5 程序运行时的内存映像与地址空间
所谓地址空间,指的是一组非负整数地址的集合。现代操作系统采用虚拟存储管理,系统同时存在物理地址空间和虚拟地址空间,并且允许主存中的每个字节同时拥有物理地址空间的一个物理地址和虚拟地址空间的一个虚拟地址。系统最终要使用物理地址进行寻址,所以如果有虚拟地址,则还需要进行虚实地址转换,那么采用虚拟地址的好处有哪些呢?主要有如下几点:
(1) 每个进程的虚拟地址空间是独立的,方便操作系统之上的用户编程,在多道程序并发的情况下,防止其他进程的干扰破坏。
(2) 所有进程的虚拟地址空间的大小和结构划分一致,这简化了操作系统对存储器的管理。
(3) 将主存看做外部存储器的缓存副本,根据实际运行需要进行信息的交换,可节省主存空间。
前面提到,源代码要经过编译、链接等处理生成可执行二进制目标代码,然后装入内存后经过操作系统抽象,变成一个进程。程序运行时的内存映像指的是进程在内存中存放和组织的方式,进程会被映射到一个统一的虚拟地址空间。该地址空间的结构划分如图 1.7 所示。
下面将按照虚拟地址递增顺序依次进行介绍。1. 只读代码和数据区
进程虚拟地址从此区域开始,该区域存放进程的只读代码和只读数据。
2. 可读 / 写数据区
该区域存放进程的可读可写数据,如 C 语言的全局变量。
3. 运行时堆
由进程在运行时动态创建,该区域可以动态增长和收缩,例如 C 语言的 malloc () 可以申请该区域的内存,free () 可以释放该区域的内存。
4. 共享库
该区域用于存放公共的共享库代码和数据,例如 C 语言的标准库函数。
5. 用户栈
该区域用来存放局部变量、返回地址,函数调用参数等信息,可以利用该区域实现函数调用。和堆一样,该区域也可以动态增长和收缩。
6. 操作系统内核区
该区域是操作系统内核使用的地址空间,包括内核程序、代码、内核栈等信息,这些信息对用户程序不可见。
1.3.6 习题精编
1.下列说法中,正确的是( )。
I. 使用 read 系统调用读取文件不需要文件名
II. 用户模式下不可以执行 I/O 指令
III. 中断过程中不需要硬件的参与
IV. 采用多道程序设计技术可以提高系统交互能力
A. 仅 I、II
B. 仅 II、III
C. II、IV
D. II、III 和 IV1.**【参考答案】**A
【解析】 当使用 read 系统调用读取文件之前,进程会调用 open 返回一个指针(文件描述符),之后进程对文件的读写操作都通过该指针进行,因此不需要文件名,I 正确。I/O 指令是对 I/O 设备进行操作的指令,只有操作系统可以执行,II 正确。中断过程需要硬件的参与,比如中断隐指令的执行,III 错误。多道程序设计没有交互功能,IV 错误。选 A。2.操作系统必须提供的功能是( )。
A. 程序编译
B. 中断处理
C. 图形用户界面
D. 虚拟内存管理2.**【参考答案】**B
【解析】 现代操作系统必须拥有的功能是中断处理。中断处理是多道程序技术的前提条件,对现代操作系统的发展影响深远。操作系统不提供程序编译功能,图形用户界面和虚拟内存管理也不是操作系统必须提供的功能。选 B。3.用户程序执行时,使模式切换的原因不可能是( )。
A. 出现中断事件
B. 发生异常
C. 执行系统调用
D. 程序内跳转3.**【参考答案】**D
【解析】 出现中断事件或是发生异常,都需要操作系统进行模式切换(从用户模式切换至内核模式)来解决。用户程序请求系统服务时,需要切换模式至内核模式来执行系统调用。而程序内跳转一般是使用跳转指令来完成,不需要模式的切换。选 D。4.如果 CPU 取出一条指令后拒绝执行,并形成 “非法操作” 时间,可能的原因是( )。
I. 从应用程序中取到了特权指令
II. 从编译程序中取到了特权指令
III. 用户态取到了 “启动 I/O” 指令
IV. 内核态取到了 “启动 I/O” 指令
A. I、II 和 III
B. I、III 和 IV
C. I、II 和 IV
D. II、III 和 IV4.**【参考答案】**A
【解析】 特权指令(如 I/O 指令)只能由操作系统在内核态下执行,因此应用程序、编译程序和在用户态使用特权指令都是非法操作。选 A。5.下列选项中,可以执行特权指令的是( )。
A. 普通用户程序
B. 设备驱动程序
C. 动态库函数
D. 管理员用户程序5.**【参考答案】**B
【解析】 普通用户程序、动态库函数和管理员用户程序都是在用户态下执行的用户程序,不能执行特权指令。而设备驱动程序属于内核程序,可以执行特权指令(如 I/O 指令)。选 B。6.下列选项中,必须在 CPU 内核态下运行的程序是( )。
A. 虚拟机
B. 网络浏览器
C. 中断处理程序
D. 库函数6.**【参考答案】**C
【解析】 内核态是操作系统处理异常事件和提供服务时需要进入的状态。中断处理是操作系统必须要提供的功能,因此中断处理程序需要在内核状态下运行。选 C。7.操作系统中存在用户态和内核态之间的相互转换。下列选项中,不能引起用户态到内核态的转换的是( )。
A. read 函数调用
B. read 系统调用
C. 网络数据包到达
D. 缺页异常7.**【参考答案】**A
【解析】 注意区分函数调用和系统调用,第一个 read 是用户编写的函数,第二个 read 是操作系统提供的系统调用,函数调用在用户空间执行,无需系统状态的转换。C 中网络数据包到达属于外部中断。D 中缺页是属于内部异常,需操作系统转到内核态去处理。选 A。8.操作系统中某些操作需要使用特权指令完成。下列操作中不需要使用特权指令的是( )。
A. 设置时钟初值
B. 关中断
C. 修改界地址寄存器
D. 触发访管指令8.**【参考答案】**D
【解析】 特权指令是只有操作系统才能使用的指令,设置时钟初值、关中断、修改界地址寄存器需要操作系统使用特权指令来完成;触发访管指令是应用程序进行系统调用使用的指令。选 D。9.时钟中断事件属于( )。
A. 自愿性中断事件
B. 程序性中断事件
C. I/O 中断事件
D. 外部中断事件9.**【参考答案】**D
【解析】 自愿性中断事件是程序为了请求系统服务,而使用访管指令自愿发生的中断。程序性中断事件是指与硬件无关,而与正在执行的程序有关的中断,如除零、缺页。I/O 中断事件是指由 I/O 控制器发出的中断,与 I/O 控制方式有关。外部中断事件是指 CPU 因为外部事件的到来,不得不暂停现有程序的运行,转而去处理外部事件而产生的中断。时钟中断事件是操作系统内一项基本的外部中断事件,CPU 接收到时钟发来的中断信号,开始执行时钟中断处理程序。分时操作系统的时间片就与时钟中断有着密切的联系。选 D。10.下列关于(外)中断和异常的描述,正确的是( )。
A. 异常可被屏蔽
B. (外)中断又称同步中断
C. 访管中断是异常的一种
D. 异常又称内中断,或异步中断10.**【参考答案】**C
【解析】 异常是与程序相关的中断,不可被屏蔽,A 错。外中断是异步中断,B 错。异常是同步中断,D 错。访管中断即系统调用,也称系统异常,是异常的一种。选 C。11.用户程序在用户态下要使用系统调用命令引起的中断属于( )。
A. 可屏蔽中断
B. 外部中断
C. 访管中断
D. 硬件故障11.**【参考答案】**C
【解析】 用户程序在用户态下要使用系统调用命令引起的中断属于访管中断。用户进行系统调用,系统会由用户态(又称目态)转换为内核态(又称管态),因此该操作引起的中断为访管中断。选 C。12.CPU 执行两类指令 —— 特权指令和非特权指令,下列选项中可以使用特权指令的是( )。
A. 普通用户
B. 操作系统
C. 用户程序
D. 超级用户12.**【参考答案】**B
【解析】 特权指令只有操作系统可以使用。D 选项,超级用户是对系统进行管理的特殊用户,虽然它拥有比普通用户更高的管理权限,但其管理的范围仍受系统限制。可把超级用户理解为操作系统的代理人,对于一些重要事件(如执行特权指令),还需通过操作系统来完成。选 B。13.操作系统由多个功能模块组成。下列选项中,不需要硬件支持的是( )。
A. 地址转换
B. 进程调度
C. 中断处理
D. 设备驱动13.**【参考答案】**B
【解析】 进程调度是由进程调度程序来完成的。A 选项,地址转换需要用到基址寄存器和界限寄存器。C 选项,中断处理时中断隐指令的执行是由硬件自动完成的。D 选项,设备驱动需要设备控制器的参与。选 B 项。14.下列指令中,只能在内核态执行的是( )。
A. 读时钟指令
B. I/O 指令
C. 加法指令
D. 陷入指令14.**【参考答案】**B
【解析】 I/O 指令是对 I/O 设备进行操作的指令,只能操作系统在内核态执行,读时钟指令、加法指令和陷入指令可以在用户态执行,其中陷入指令只能在用户态执行。选 B。15.下列指令中,只能在内核态执行的是( )。
A. 跳转指令
B. 取数指令
C. 寄存器清零
D. 清理内存指令15.**【参考答案】**D
【解析】 内存属于计算机资源,应该由操作系统进行管理,因此清理内存指令(也属于特权指令)只能在内核态执行。跳转指令、取数指令和寄存器清零可以在用户态执行。其中寄存器清零,考生可能存在一个误区,认为寄存器是接近 CPU 的,应用程序不可以随意对寄存器进行操作,实际上当程序作为进程在 CPU 上运行时,这些寄存器是被运行的进程独占的,不会影响其他进程或操作系统内核。在进程释放处理器时,会释放这些寄存器,也就是保存现场。选 D。16.当操作系统处于内核态时,可以执行的指令是( )。
A. 只有特权指令
B. 只有非特权指令
C. 只有陷入指令
D. 除了陷入指令之外的所有指令16.**【参考答案】**D
【解析】 陷入指令(也称访管指令),是用户为了请求系统服务而执行的指令。内核态下,操作系统可以执行的指令是除了陷入指令之外的所有指令。选 D。17.发生中断后,进入中断处理的程序属于( )。
A. 用户程序
B. 操作系统程序
C. 可能是应用程序,也可能是操作系统程序
D. 既不是应用程序,也不是操作系统程序17.**【参考答案】**B
【解析】 进入中断处理的程序属于操作系统程序。比如一个进程就是一个班级,当班级需要教室进行教学活动(请求系统调用)或者班级的学生违反纪律(发生内部异常),都需要等待(中断)教务处(操作系统)来处理,教务处处理完毕后,将控制权重新交给班级。选 B。18.下面关于 UNIX 系统中用户接口的描述正确的是( )。
A. shell 命令是用户与 UNIX 系统的接口
B. 终端用户可以直接使用系统调用取得操作系统服务
C. 终端用户通过 trap 指令可以取得 UNIX 系统的服务
D. 用户程序通过 shell 命令使用系统,终端用户通过系统调用使用系统18.**【参考答案】**A
【解析】 一般操作系统向用户提供两种接口:命令接口和程序接口。命令接口包括脱机命令接口(如,Windows 中后缀为 bat 的文件)和联机命令接口(如 Windows 中命令解释程序,UNIX 中 shell 命令),这一类接口提供给终端用户使用。程序接口即系统提供的一组系统调用,主要提供给应用程序使用。所以 B、C、D 错误,选 A。19.用户程序在读取文本文件时,使用的操作系统提供的接口是( )。
A. 图形用户接口
B. 系统调用
C. 库函数
D. 应用程序19.**【参考答案】**B
【解析】 用户程序在读取文本文件时,会使用到 read 系统调用。选 B。20.下列关于系统调用的说法中,正确的是( )。
I. 系统调用是操作系统向用户程序提供的接口
II. 系统调用命令经过编译后,形成若干参数和屏蔽中断指令
III. 执行陷入指令前,要传入系统调用参数
IV. 用户模式下不可以执行系统调用命令
A. 仅 I、II
B. 仅 II、III
C. II、IV
D. I、III 和 IV20.**【参考答案】**D
【解析】 I、III 和 IV 正确。系统调用命令经过编译后,形成若干参数和陷入指令,II 错误。21.在程序运行前,先将一个程序的所有模块以及所需要的库函数链接成一个完整的装配模块。这种链接程序的链接与装入方式称为( )。
A. 静态链接
B. 装入时动态链接
C. 可重定位链接
D. 运行时动态链接21.**【参考答案】**A
【解析】 在程序运行前,先将一个程序的所有模块以及所需要的库函数链接成一个完整的装配模块。这种链接程序的链接与装入方式称为静态链接。选 A。22.多道程序设计中,中断的作用是什么?
22.【参考答案】
【解析】 中断技术的出现才使得多道程序成为可能。当一个正在运行的程序因为 I/O 事件而等待,多道程序技术使得系统可以选择另一个就绪的程序上处理器运行。当系统切换程序时需要用到中断机制。1.3.7 真题演练
23.【2009】下列选项中,能引起外部中断的事件是( )
A. 键盘输入
B. 除数为 0
C. 浮点运算下溢
D. 访存缺页23.**【参考答案】**A
【解析】 外中断是指来自 CPU 执行指令外部的事件。内中断(异常)是指来自 CPU 执行指令内部的事件。故键盘输入属于外中断,其他均属于内中断。所以正确答案为 A 选项。24.【2010】下列选项中,操作系统提供给应用程序的接口是( )
A. 系统调用
B. 中断
C. 库函数
D. 原语24.**【参考答案】**A
【解析】 系统调用(也叫 trap 指令)是应用程序访问操作系统的接口。库函数中有一部分是高级语言提供的对系统调用进行封装的函数,主要是为了隐藏访管指令的细节。库函数是系统调用的上层,属于用户程序。所以正确答案为 A 选项。25.【2011】下列选项中,在用户态执行的是( )
A. 命令解释程序
B. 缺页处理程序
C. 进程调度程序
D. 时钟中断处理程序25.**【参考答案】**A
【解析】 命令解释程序是在用户态执行的命令接口。缺页处理程序和时钟中断处理程序都属于中断,中断必须在内核态执行。进程调度程序是系统调用,在内核态执行。选 A。26.【2012】下列选项中,不可能在用户态发生的事件是( )
A. 系统调用
B. 外部中断
C. 进程切换
D. 缺页26.**【参考答案】**C
【解析】 系统调用、外部中断和缺页等事件都是发生在用户态的,具体过程是在内核态执行的。进程切换属于系统调用执行过程中的事件,只能发生在内核态。选 C。27.【2012】中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需要保存其内容的是( )
A. 程序计数器
B. 程序状态字寄存器
C. 通用数据寄存器
D. 通用地址寄存器27.**【参考答案】**B
【解析】 子程序调用只需要保存程序断点(即程序计数器 PC 的值),方便调用结束后返回到原程序继续执行。中断处理既要保存断点,又要保存程序状态字寄存器(PSW)的内容。选 B。28.【2013】下列选项中,会导致用户进程从用户态切换到内核态的操作是( )
I. 整数除以零
II. sin () 函数调用
III. read 系统调用
A. 仅 I、II
B. 仅 I、III
C. 仅 II、III
D. I、II 和 III28.**【参考答案】**B
【解析】 整数除以零会发生中断,中断必须在内核态进行;read 系统调用将用户态切换为内核态。sin () 函数调用是在用户态对库函数的调用。所以正确答案为 B 选项。29.【2014】下列指令中,不能在用户态执行的是( )
A. trap 指令
B. 跳转指令
C. 压栈指令
D. 关中断指令29.**【参考答案】**D
【解析】 trap 指令、跳转指令和压栈指令都可以在用户态执行。其中 trap 指令即系统调用,它主要用来完成从用户态到内核态的切换。跳转指令,比如执行循环程序时,当执行完循环代码块的最后一条指令后,就会使用跳转指令跳转到循环的入口位置重新开始执行。压栈指令,比如主程序在调用其他函数接口时就会使用压栈指令将调用信息压入栈中暂存。而关中断是特权指令,只能在内核态执行。所以正确答案为 D 选项。30.【2015】处理外部中断时,应该由操作系统保存的是( )
A. 程序计数器 (PC) 的内容
B. 通用寄存器的内容
C. 快表 (TLB) 中的内容
D. Cache 中的内容30.**【参考答案】**B
【解析】 处理外部中断时,由专门的硬件(中断隐指令)自动保存断点(PC 值)信息(用户不可见),比如 PC、PSWR 等的内容,A 选项错误;由操作系统保存现场(用户可见),比如通用寄存器的内容等,B 选项正确;Cache、TLB 的内容在处理外部中断时通常无需保存,C、D 选项错误。31.【2015】假定下列指令已装入指令寄存器,则执行时不可能导致 CPU 从用户态变为内核态 (系统态) 的是( )
A. DIV R0, R1; (R0)/(R1)→R0
B. INT n; 产生软中断
C. NOT R0; 寄存器 R0 的内容取非
D. MOV R0, addr; 把地址 addr 处的内存数据放入寄存器 R0 中31.**【参考答案】**C
【解析】 对于 A 选项中的指令,可能会出现零作为除数的情况而导致中断。B 选项中的指令为中断指令。对于 C 选项中的指令,取非操作不会产生异常。对于 D 选项中的指令,可能会产生缺页中断。所以正确答案为 C 选项。32.【2017】执行系统调用的过程包括如下主要操作( )
(1) 返回用户态
(2) 执行陷入(trap)指令
(3) 传递系统调用参数
(4) 执行相应的服务程序
正确的执行顺序是:
A. (2) → (3) → (1) → (4)
B. (2) → (4) → (3) → (1)
C. (3) → (2) → (4) → (1)
D. (3) → (4) → (2) → (1)32.**【参考答案】**C
【解析】 执行系统调用的过程为:传递系统调用参数、执行陷入(trap)指令、执行相应的服务程序、返回用户态。所以正确答案为 C 选项。33.【2018】定时器产生时钟中断后,由时钟中断服务程序更新的部分内容是( )
I. 内核中时钟变量的值
II. 当前进程占用 CPU 的时间
III. 当前进程在时间片内的剩余执行时间
A. 仅 I、II
B. 仅 II、III
C. 仅 I、III
D. I、II 和 III33.**【参考答案】**D
【解析】 时钟中断主要用来处理时间有关的信息及决定是否执行调度程序。故 I、II、III 均正确。34.【2019】下列关于系统调用的叙述中,正确的是( )
I. 在执行系统调用服务程序的过程中,CPU 处于内核态
II. 操作系统通过提供系统调用避免用户程序直接访问外设
III. 不同的操作系统为应用程序提供了统一的系统调用接口
IV. 系统调用是操作系统内核为应用程序提供服务的接口
A. 仅 I、IV
B. 仅 II、III
C. 仅 I、II 和 IV
D. I、III 和 IV34.**【参考答案】**C
【解析】 对于 III,不同的操作系统底层的实现不同、标准不同,因此提供给应用程序的也是不同的接口。所以正确答案为 C 选项。35.【2021】下列指令中,只能在内核态执行的是( )
A. trap 指令
B. I/O 指令
C. 数据传送指令
D. 设置断点指令35.**【参考答案】**B
【解析】 除了陷阱指令之外的任何指令都可以在内核态执行。指令可分为特权指令和非特权指令,而特权指令只能在内核态执行。A、C、D 都是提供给用户使用的指令,都可在用户态执行。I/O 指令为特权指令,只能在内核态执行。所以正确答案为 B 选项。1.4 操作系统的体系结构
1.4.1 无结构
很多操作系统在最初都是小而简单且功能有限的系统。此时的操作系统是众多过程的集合,这些过程可以相互调用,这导致操作系统内部混乱无章,而且结构复杂。这种方式只适合较小的系统,如果系统扩大,操作系统将会变得庞杂,致使调试困难,而且难于理解和维护。
1.4.2 模块化结构
20 世纪 60 年代出现了模块化程序设计技术,使用该技术设计的操作系统不再是众多过程的集合,而是按照功能划分为彼此独立的模块,并规定好各模块之间交互的接口,各模块还可以进一步细分为更小的功能子模块。这种设计方法称为模块 - 接口法。
在模块 - 接口法中,需要注意两个关键问题:模块的划分和模块的独立性。1. 模块的划分
(1) 如果模块划分的太大,则每个模块内部会变得复杂,内部联系增加,不利于编程。
(2) 如果模块划分的太小,虽然模块本身相对简单,但是模块间的联系会增多,系统会变得复杂。2. 模块的独立性
模块的独立性越高,各模块间的交互就越少,系统结构也就相对更简单。衡量模块独立性的标准主要是内聚性和耦合度。内聚性是指在一个模块中功能相关的元素结合的程度,内聚性越高,代码可读性和复用的程度越高。耦合度是指模块间的依赖程度,低耦合的系统中可读性和可维护性更好。内聚性越高,耦合度越低,模块独立性越强。
1.4.3 分层结构
在硬件的支持下,操作系统可以分成更小、更合适的块,这种结构可以使操作系统更好地控制计算机和使用计算机的应用程序。系统的模块化有许多方法,一种方法是分层法,即操作系统分成若干层,其中硬件层为最低层,用户接口层为最高层。其结构如图 1.8 所示。
分层法中,对于每个层次都只能调用更低层的功能和服务,并不需要知道实现这些操作的具体细节。因此,每层要对更高层隐藏数据结构、操作和硬件。
分层结构的优点在于容易保证系统的正确性,方便扩充和维护。因为每层都建立在较为可靠的基础上,且每层相对独立,只要不改变各层次间的接口,各层次的修改不会相互影响。分层结构的缺点在于效率比较低,因为每一层都要为系统调用增加额外的开销,所以与非分层的系统相比,这样的系统调用需要执行更长时间。
1.4.4 宏内核
宏内核是一种传统的内核结构,它将进程管理、内存管理、文件系统、驱动、网络协议等各项功能都放到内核中去,将内核从整体上作为一个大过程实现,所有内核服务和用户服务都运行在相同的地址空间。
宏内核的优点在于效率高,缺点在于随着内核的增大,内核代码难以维护,系统稳定性差。
宏内核的操作系统有:Unix、Linux 等。1.4.5 微内核
微内核技术是对内核进行模块化,提供操作系统核心功能的内核的精简版本。这种方法构造的操作系统只保留基本功能,所以内核较小。不过,通常微内核至少会提供基本的进程管理、低级存储器管理以及中断与陷入处理等功能。微内核中用户服务和内核服务在不同的地址空间中实现。
(1) 便于扩展操作系统。所有新服务的增加都发生在用户空间,内核不用改变。如果内核需要修改,由于内核比较小,所做修改也会很小,这样也有利于操作系统从一种硬件平台移植到另一种硬件平台。
(2) 提供了更好的安全性和可靠性。这是由于用户空间和内核空间彼此隔开,用户空间的程序出错不会影响内核空间的操作系统。
微内核的主要功能是,通过消息传递为客户端程序和运行在用户空间中的各种服务提供通信。例如,一个用户程序要访问一个文件时,它是通过微内核的消息传递来间接通信,而不会直接和文件服务器通信。
【举例】微内核的操作系统有:Windows NT、Minix 等。宏内核和微内核区别如图 1.9 所示。
1.4.6 外核
上世纪 90 年代,一些研究者提出了这样的观点:操作系统所提供的服务是针对所有类型应用程序的通用服务,其设计对一些具体的应用场景(如数据库、云服务提供商)来说往往不是最优的选择。因此,他们提出了外核(Exokernel)架构。外核是一种 “库操作系统”(LibOS),将大部分操作系统功能直接封装到库中,成为应用程序的一部分;剩下的操作系统内核则只负责分配硬件资源,处理硬件资源的共享。
外核架构提供了对计算机系统的深度定制能力,最小化非必要的代码,从而提供了更高的性能;多个 LibOS 之间具有强隔离性,因此整个计算机系统的安全性与可靠性较强。外核架构的问题在于 LibOS 往往是为某一种应用定制的,缺乏通用性,应用生态较差;且难以用于功能需求复杂的场景。当前有一些领域已经使用了外核架构,其中一个重要的应用场景就是虚拟机托管平台。虚拟机托管平台中,内核只需负责记录分配给各个虚拟机的相关资源,而虚拟环境中的用户操作系统可以直接访问硬件。1.5 操作系统引导
1.5.1 传统 BIOS 引导
基本输入输出系统(BIOS,Basic Input Output System)是一种固件(Firmware),这种固件是固化到计算机内主板上的一个只读存储器(ROM)芯片内的一组程序,它保存着计算机最重要的基本输入输出程序、开机后自检程序和系统自启动程序,它可从 CMOS(一块可读写的 RAM 芯片,用来保存 BIOS 设置完电脑硬件参数后的数据)中读写系统设置的具体信息。它给用户提供了可以修改主板参数、引导设备顺序等内容的菜单项。固件代码本身还可以存储在可编程只读存储器(PROM)或者电可擦除只读存储器(EEPROM)中。目前,大部分计算机仍然支持 BIOS 引导。
BIOS 的引导流程
当计算机启动后,固化在 ROM 中的 BIOS 会被加载到内存中运行,在 BIOS 运行的过程中,BIOS 首先会进行硬件自检,在自检结束后,它会加载 CMOS 的参数,按照参数中的 “启动顺序”,BIOS 把控制权交给排在第一位的存储设备,然后把设备的主引导记录 MBR 加载到内存。在运行 MBR 代码的过程中,将标记为活动分区的磁盘分区 PBR(Partition Boot Record,分区引导记录)加载到内存运行。在 PBR 运行结束后,bootloader(也称启动管理器,如 Windows 的 BOOTMGR、Linux 的 GRUB)的代码被加载到内存中运行,然后操作系统内核通过启动管理器被加载到内存中运行,进而完成 BIOS 的引导流程。
所以,传统 BIOS 引导可以总结为如下几个步骤,如图 1.10 所示。
(1) 计算机启动,CPU 执行第一条指令后找到基本输入输出系统(BIOS)。
(2) 加载 BIOS 进内存执行。BIOS 的任务是进行硬件自检,读取启动顺序,然后加载启动顺序为第一位的设备的主引导记录(MBR)。
(3) 加载 MBR 进内存执行。MBR 的任务是找到该设备的活动分区(有操作系统的分区),所以 MBR 会扫描磁盘分区表,然后加载活动分区的分区引导记录(PBR)。
(4) 加载 PBR 进内存执行。PBR 的任务是找到该分区根目录下的 bootloader。
(5) 加载 BOOTMGR 进内存执行。BOOTMGR 的任务是加载操作系统内核,至此,传统 BIOS 引导操作系统的过程结束。1.5.2 下一代 BIOS:EFI
EFI(Extensible Firmware Interface)是一种取代传统 BIOS 的技术。与固定且封闭的 BIOS 不同,EFI 在引导和运行期间都提供了统一的接口,是一个全功能的运行时系统,能够在计算机启动后运行自定义的二进制程序。
EFI 的引导流程
【提示】考生应重点掌握操作系统的传统 BIOS 引导过程,本节知识点为拓展内容。
计算机启动后,EFI 初始化引导过程中所需的硬件(硬盘、键盘等);然后读取引导项,以决定要启动哪一个 EFI 应用程序,以及从哪启动(比如从哪一个硬盘和分区);最后启动选中的 EFI 应用程序。特定的 EFI 应用程序则实现了 bootloader 的功能,可以运行操作系统内核。1.6 虚拟机
虚拟机(Virtual Machine )是一种对整个计算机系统的抽象,包括处理器、主存、I/O 设备、操作系统。可以通过虚拟机管理程序对计算机资源进行抽象配置,以供虚拟机使用。通过虚拟机管理程序模拟出的若干虚拟机上可以运行不同的操作系统。
虚拟机技术由于上述特性,得到了广泛运用:
(1) 从用户的角度,虚拟机技术可以服务于希望在一台计算机上同时运行两个或多个操作系统的用户。这样,无论一台虚拟机内部运行什么程序,都不会干扰其他虚拟机或者主机上其他进程。
(2) 从服务器的角度,服务商可在一台物理服务器上提供租用虚拟机的服务,比如现在市面上流行的 “云主机”,可按使用的资源来计费,用户不需要租用一个完整的、性能过剩的服务器。1.6.1 两类虚拟机管理程序
1. 第一类虚拟机管理程序(type 1 hypervisor)
第一类虚拟机管理程序直接运行在裸机上,是计算机系统中拥有最高权限的程序,它为在其上运行的虚拟机精确模拟出整套计算机硬件。每个虚拟机可以运行不同的操作系统。
虚拟机上的操作系统是运行在用户态的,当它需要某个特权指令时,比如 I/O 指令,实际上是陷入到虚拟机管理程序代为执行,即管理程序模拟出虚拟机上的操作系统可以执行特权指令的效果。
【举例】常见的第一类虚拟机管理程序比如 Xen 和 ESXi。
【拓展】比较第一类虚拟机管理程序和操作系统会发现:它们都拥有计算机系统的最高权限。操作系统向上提供了一个扩展的计算机并进行管理,例如文件系统;第一类虚拟机管理程序向上提供了若干虚拟机并进行管理,每台虚拟机是整个计算机系统的抽象。所以可认为第一类虚拟机管理程序是一种特殊的操作系统。2. 第二类虚拟机管理程序(type 2 hypervisor)
第二类与第一类虚拟机管理程序最大的区别在于:前者需要利用宿主操作系统提供的创建进程、分配资源等服务;而第一类虚拟机管理程序没有底层操作系统的支持,只能自行实现这些功能。
第二类虚拟机管理程序将其上的客户操作系统安装在虚拟盘上,该盘实际上是宿主操作系统管理的文件系统中分配的一个大文件。而第一类虚拟机管理程序由于没有操作系统提供的文件服务,必须要使用和管理原始的硬盘分区。
【举例】个人计算机上流行的虚拟机软件如 VMware Workstation 和 Oracle VM VirtualBox 均为第二类虚拟机管理程序。
第一、二类虚拟机管理程序在计算机系统的位置如图 1.11 所示。
1.6.2 习题精编
1.下列关于分层式结构操作系统的说法中,错误的是( )。
A. 各层次可以相互调用
B. 各层次间的依赖性低
C. 系统效率较低
D. 对于某一层次的修改不会影响其他层次1.**【参考答案】**A
【解析】 每个层次只可以调用更低层次的功能和服务,A 选项错误。分层式结构操作系统,各层次相互独立,依赖性低,对某一层次的修改不会影响其他层次,但由于每一层都要对下层进行系统调用,增加了开销,造成系统效率较低,因此 B、C、D 选项正确。所以正确答案为 A 选项。2.与微内核操作系统相比,下列不属于宏内核操作系统的缺点的是( )。
A. 可靠性较差
B. 可扩展性差
C. 内核切换效率低下
D. 占用的内存空间大2.**【参考答案】**C
【解析】 宏内核操作系统将主要模块都放在内核态运行,占用的内存空间大,通常一个模块的崩溃会导致整个系统的崩溃,所以可靠性和可扩展性较差。每个模块之间可以相互调用,内核切换次数少,所以效率更高。所以正确答案为 C 选项。3.下列说法中,对微内核操作系统描述错误的是( )。
A. 基于 C/S 架构
B. 用户空间和内核空间分离
C. 便于扩展和移植
D. 功能分层设计3.**【参考答案】**D
【解析】 微内核操作系统是基于 C/S 架构的功能模块化设计的操作系统。微内核操作系统的用户空间和内核空间分离,用户服务的崩溃不会影响内核服务。当需要增加一个服务时,只需要在用户空间增加一个模块就可以,不需要修改内核,因此便于扩展和移植。所以本题选 D。4.微内核是一种只提供必要服务的操作系统内核。下列服务中可以放在微内核中的是( )。
I. 内存管理
II. 进程通信机制
III. 进程调度
IV. 文件系统服务
V. 中断处理
A. I、II 和 IV
B. I、III 和 V
C. I、II、III 和 V
D. I、II、III 和 IV4.**【参考答案】**C
【解析】 微内核只提供一组必要的服务,如内存管理、进程调度、进程通信、中断处理等,所以 C 选项正确。文件系统服务不是必要的服务,非必要的服务还有设备驱动等。所以正确答案为 C 选项。5.与宏内核操作系统相比,采用微内核结构的操作系统具有很多优点。下列选项中,不属于微内核的优点的是( )。
A. 运行效率高
B. 可扩展性好
C. 可靠性较好
D. 便于移植系统5.**【参考答案】**A
【解析】 微内核的用户空间和内核空间分离,用户服务的崩溃不会影响到内核空间,因此可靠性较好。微内核需要增加服务时,只需要在用户空间增加模块,不需要修改内核,因此具有较好的可扩展性和可移植性。微内核由于各模块之间的通信要经过内核的消息传递,系统运行效率较低。所以正确答案为 A 选项。6.对于计算机操作系统引导,叙述错误是( )。
A. BIOS 被存储在 ROM 中,开机后自动执行
B. 开机后进行硬件自检,如果硬件出现问题,启动中止
C. 引导程序要加载完整的操作系统,才能正确启动
D. 引导程序按照分区表启动操作系统6.**【参考答案】**C
【解析】 引导程序只需要加载操作系统内核,就可以正确启动,不需要加载完整的操作系统,C 选项错误。A 选项,BIOS 被存储在主板上的 ROM 芯片里,开机后计算机会自动将其加载到内存中执行。B 选项,开机后 BIOS 会检查硬件,如果硬件出现问题,无法正常启动,则主板会发出不同含义的蜂鸣,启动中止。D 选项,一个计算机内可以安装多个操作系统,引导程序需要知道用户要启动哪一个操作系统,每一个操作系统存放在不同的区块中,分区表中记录了操作系统位置的相关信息。所以正确答案为 C 选项。7.计算机启动后,BIOS 被加载到( )。
A. RAM
B. CMOS
C. ROM
D. 硬盘7.**【参考答案】**A
【解析】 计算机启动后,(在 X86 系统中)CPU 加电后跳转至 BIOS 的固定物理地址 0xFFFFF0,然后将 BIOS 加载到内存中。所以正确答案为 A 选项。8.计算机的启动过程是( )。
(1) 扫描磁盘分区表,加载分区引导记录(PBR)
(2) 硬件自检,并将结果存放到 CMOS 中
(3) 计算机加电,加载 BIOS
(4) 读取主引导记录(MBR)
(5) 加载操作系统内核
A. 34125
B. 32415
C. 54321
D. 123458.**【参考答案】**B
【解析】 计算机启动过程:首先计算机加电,加载 BIOS 到内存,硬件自检,并将结果存放到 CMOS 中,BIOS 根据启动顺序将控制权交到顺序为第一位的存储设备,读取主引导记录(MBR)到内存,扫描磁盘分区表,加载分区引导记录(PBR),加载操作系统内核。9.BIOS 在硬件自检后,按照启动顺序将控制权交给第一位的存储设备,读取该设备的第一个扇区是( )。
A. CMOS
B. MBR
C. PBR
D. 操作系统内核9.**【参考答案】**B
【解析】 该设备的第一个扇区是主引导记录(MBR),一般包括调用操作系统的机器码、分区表、主引导记录签名。所以正确答案为 B 选项。10.下列关于虚拟机的说法中,正确的是( )。
I. 第一类虚拟机管理程序屏蔽硬件细节,向上层虚拟机程序提供接口
II. 虚拟机可以用硬件实现
III. 计算机内的每台虚拟机的操作系统互不干扰
A. 仅 I、III
B. 仅 II、III
C. 仅 II
D. I、II 和 III10.**【参考答案】**D
【解析】 第一类虚拟机管理程序是直接运行在裸机上的,相当于一般意义上的操作系统,因此会屏蔽硬件细节,向上层提供接口,I 正确。硬件虚拟机基于硬件实现,II 正确。计算机内的每台虚拟机都是一个应用程序,它们之间的操作互不干扰,III 正确。所以正确答案为 D 选项。11.下列关于 VMware workstation 虚拟机的叙述,正确的是( )。
A. 虚拟机中的操作系统可以执行特权指令
B. 虚拟机是运行在计算机中的一个应用程序
C. 每台计算机上只能同时运行一台虚拟机
D. 虚拟机中的操作系统可以管理 I/O 设备11.**【参考答案】**B
【解析】 C 选项,注意这里的 “同时” 并不是指 “并行”,是指用户体验到的 “同时”,所以每台计算机并不一定只能同时运行一台虚拟机。A 选项,虚拟机是运行在计算机中的一个应用程序,所以不可以执行特权指令。D 选项,I/O 设备属于硬件资源,应该由计算机内的操作系统进行管理。所以正确答案为 B 选项。12.有关虚拟机的叙述中,正确的是( )。
I. 每个虚拟机完全与其他虚拟机独立
II. 虚拟机在并行运行的几个不同操作系统中能够共享相同的硬件
III. 虚拟机的所有指令都能够直接在硬件上执行
A. 仅 I、III
B. 仅 I、II
C. 仅 II、III
D. I、II 和 III12.**【参考答案】**B
【解析】 虚拟机中的特权指令不能直接在硬件上执行,需要虚拟机管理程序对虚拟机中特权指令的执行进行模拟,III 错误。每个虚拟机与其他虚拟机相互独立,且能够共享相同的硬件,I、II 正确。所以正确答案为 B 选项。1.6.3 真题演练
13.【2013】计算机开机后,操作系统最终被加载到( )。
A. BIOS
B. ROM
C. EPROM
D. RAM13.**【参考答案】**D
【解析】 系统开机后,操作系统的程序会被自动加载到 RAM 中。所以正确答案为 D 选项。1.7 章末总结
1.7.1 本章知识点提炼
本章主要介绍了操作系统,内容多为基本概念,下面进行简单地回顾。
操作系统的基本概念一节,分别从三个角度引入操作系统的定义,接着对操作系统的四个特征(并发、共享、虚拟和异步)和操作系统的四大功能(处理器管理、内存管理、文件管理和设备管理)进行阐述。
操作系统的发展历程一节,主要从发展的角度介绍了几种经典的操作系统,有批处理操作系统、分时操作系统以及实时操作系统,并对它们的特点进行叙述。考生要学会区分它们的不同,并结合它们所具备的技术(如多道程序技术、中断技术、分时技术)理解不同的操作系统。
操作系统的运行环境一节,内容较多且较重要。首先区分了操作系统的两种模式 —— 内核模式和用户模式,又详细介绍了中断和异常、系统调用。这三个知识点是有关系的,用户请求操作系统服务(系统调用)需要从用户模式(用户态)转换为内核模式(内核态),用户模式转换为内核模式则需要通过中断机制。本小节还介绍了程序的链接与装入、程序的内存映像,这些都是内存管理的前置知识,考生也要认真学习。
操作系统的体系结构一节,介绍了几种操作系统体系结构,有模块化结构、分层结构、宏内核、微内核。它们各有特点,比如分层结构,层次结构清晰独立,但效率低下;宏内核效率高但内核庞杂,不易维护和移植;微内核内核更小,可扩展性和可移植性好,系统更加可靠,但相比宏内核效率较低。
操作系统引导一节,主要介绍了计算机启动过程中,计算机内部如何引导,最终将操作系统内核加载到内存中。
虚拟机一节,主要介绍了两种虚拟机管理程序 —— 第一类虚拟机管理程序和第二类虚拟机管理程序。第一类虚拟机管理程序直接运行在裸机上,第二类虚拟机管理程序是计算机内的一个应用程序,两类虚拟机管理程序所管理的虚拟机都不能使用特权指令。1.7.2 思考题解析
1. 操作系统的主要目的是什么?
首先操作系统是一种运行在裸机的系统软件,它的主要目的有三个:
(1) 管理计算机软、硬件资源,包括 CPU、内存、I/O 设备等。
(2) 向用户和应用程序提供接口,以便它们可以使用系统服务。如 Windows 系统向用户提供图形界面(GUI)。
(3) 协调整个计算机系统的运作,保证计算机安全、可靠和高效地运行。2. 系统调用与库函数调用的区别?
库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或动态库)向程序员提供功能性调用。
库函数调用所调用的是函数库中的一段程序(或函数)并在用户空间中执行,它的运行时间属于 “用户时间”,属于过程调用,调用的开销较小。
系统调用所调用的是系统内核的服务,是操作系统的入口,调用发生在用户空间,但具体过程在内核空间执行,它的运行时间属于 “系统” 时间,由于涉及到用户态与内核态之间的相互切换,所以开销较大。3. 什么是上下文切换?
考虑单 CPU 情况下,系统中只能有一道运行的程序,当正在运行的程序因为 I/O 事件发生等待,操作系统选择另一道就绪的程序运行,这时就发生了上下文切换。上下文切换是将 CPU 资源从一个进程(线程)分配到另一个进程(线程)的机制。在切换进程时,操作系统要先保存当前进程的现场信息(如寄存器、内存指针等),然后读入另一个进程的信息,并运行该进程。