基于王道计算机考研 操作系统。
笔记目录
第一章-计算机系统概述
第二章-进程与线程
第三章-内存管理
第四章-文件系统
第五章-输入/输出管理
第一章 计算机系统概述
1.1 操作系统的基本概念
1.1.1 操作系统的概念
计算机系统自下而上可以分为:硬件
、操作系统
、应用程序
、用户
。操作系统管理各种计算机硬件,为应用程序提供基础,并且充当计算机硬件与用户之间的中介。
操作系统
是指控制和管理整个计算机系统硬件与软件资源,合理地组织、调度计算机的工作和资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。
1.1.2 操作系统的目标和功能
操作系统的功能和目标是向上层提供方便易用的服务,使用户能无需关心底层硬件的原理,只需对操作系统发出命令即可。
计算机系统资源的管理者
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
用户与计算机硬件系统之间的接口
为了用户操纵计算机硬件并运行自己的程序,操作系统还提供了用户接口。接口主要分为命令接口
和程序接口
。用户可以利用命令接口来组织和控制作业的进行;编程人员可以通过程序接口来请求操作系统服务。
- 命令接口
命令接口进行作业控制的方法有联机控制方式
和脱机控制方式
。按作业控制方式的不同可以将命令接口分为联机命令接口
和脱机命令接口
。
联机命令接口
又称为交互式命令接口
,适用于分时或实时系统的接口。它由一组键盘操作命令组成,用户通过控制台或中断输入操作命令,每输入一条命令,控制权就转给操作系统的命令解释程序,解释并执行输入的命令,完成指定功能,然后控制权转回控制台或中断,用户输入下一条命令。(Windows终端命令行)
脱机命令接口
又称为批处理命令接口
,适用于批处理系统,由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应该事先用相应的作业控制命令写成一份操作说明书,连通作业一起提交给系统。系统调度到该作业时,由系统中的命令解释程序逐条解释说明书上的命令,间接地控制作业的运行。(批处理文件)
- 程序接口
程序接口
由一组系统调用
(也称为广义指令
)组成。用户通过在程序中使用这些系统调用来请求操作系统提供服务。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
当今最流行的是图形用户界面(GUI)
,即图形接口
。GUI最终是通过调用程序接口实现的,严格来说,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分。
对计算机资源的扩充
没有任何软件支持的计算机称为裸机
,仅构成计算机系统的物质基础。一般的计算机,裸机
在最里层,操作系统在外面。通常将覆盖了软件的机器称为扩充机器
或虚拟机
。
1.1.3 操作系统的特征
操作系统的基本特征包括并发
、共享
、虚拟
和异步
。其中并发和共享是两个最基本的特征,二者互为存在条件。
并发
并发
指的是两个或多个事件在同一时间间隔内发生。区别于并行
,并行指的是两个或多个事件在同一时刻同时发生。操作系统的并发性指的是计算机系统宏观上有多道程序在同时执行,微观上实际是交替运行的。操作系统的并发性是通过分时实现的。
在操作系统中,引入进程的目的是使程序能并发执行。
共享
资源共享
即共享
,指系统中的资源可供内存中多个并发执行的进程共同使用。可分为互斥共享
和同时访问
两种方式。
- 互斥共享
一段时间内只允许一个进程访问的资源称为临界资源
,同一个资源一段时间内只允许一个进程访问的资源共享方式称为互斥共享
。计算机系统中的大多数物理设备和某些软件中所用的栈、变量和表格,都属于临界资源。
互斥共享要求一种资源在一段时间内只能满足一个要求。
- 同时访问方式
系统中还有允许一段时间内多个进程“同时”访问的资源(微观上是交替地分时共享)。典型例子是磁盘设备,一些用重入代码编写的文件也允许若干用户同时访问该文件。
同时访问共享要求一个请求分几个时间片段间隔地完成,其效果与连续完成的效果相同。
并发和共享是操作系统两个最基本的特征,两者互为存在的条件:
- 资源共享是以程序的并发为条件的,如果没有程序并发自然不会有资源共享。
- 如果系统不能对资源共享实现有效的管理,必然会影响程序的并发执行。
虚拟
虚拟
是指将一个物理上的实体变为逻辑上的对应物。用于实现虚拟的技术称为虚拟技术
。操作系统的虚拟技术可以归纳为时分复用技术
(虚拟处理器)和空分复用技术
(虚拟存储器)。
通过多道程序设计技术,可以分时使用一个CPU,让每个终端用户都感觉有一个CPU在为他服务,这种技术将一个CPU虚拟为多个逻辑上的CPU,称为虚拟处理器
。
采用虚拟存储器
技术可以将一台机器的物理存储变为虚拟存储,以便从逻辑上扩充存储器的容量,用户感觉到(但实际不存在)的存储器称为虚拟存储器
。
还可以使用虚拟设备技术
将一台I/O设备虚拟为多台逻辑上的I/O设备,使得设备(临界资源)变为在一段时间内允许多个用户同时访问的共享设备。
异步
多道程序环境下,进程的执行不是一贯到底的,而是以不可预知的速度向前推进,这就是程序的异步性
。
异步性使得操作系统运行在一种随机的环境下,可能导致产生与时间有关的错误。然而只要运行环境相同,操作系统就需要保证多次运行进程后都能获得相同的结果。
没有并发和共享,也就谈不上虚拟和异步。
1.2 操作系统的发展与分类
1.2.1 手工操作阶段(此时无操作系统)
用户在计算机上的所有工作都需要人工干预,例如程序的装入、运行、输出。
手工操作阶段两个突出的缺点:
- 用户独占全机,虽然没有资源竞争导致的等待,但是资源利用率低。
- CPU等待手工操作,利用不充分。
唯一的解决办法就是用高速的机器代替手工来对作业进行控制。
1.2.2 批处理阶段(操作系统开始出现)
为了解决人机矛盾(速度和资源利用),和CPU与I/O设备之间速度不匹配的矛盾,出现了批处理系统
,按发展历程又可以分为单道批处理系统
和多道批处理系统
。
单道批处理系统
先将一批作业以脱机方式输入磁带,并在系统中配上监督进程,在其控制下使这批作业一个接一个连续处理,虽然对作业是成批进行的,但是内存中始终保存一道作业。
单道批处理系统
主要特征如下:
- 自动性。在顺利的情况下,磁带上的作业可以自动地逐个运行。
- 顺序性。各作业顺序地进入内存,先调入内存的先完成。
- 单道性。内存中只有一道程序运行,只有该程序完成或发生异常,才换如后继程序进入内存运行。
缺点是:每次直往内存放入一道程序,运行期间发出I/O请求后,高速的CPU便处于等待低速I/O完成的状态。
为了进一步提高资源利用率和系统吞吐量,引入了多道程序技术。
多道批处理系统
用户提交的作业都先存放在外存上排成一个队列,作业调度程序按一定的算法从后备队列中选择若干作业调入内存,在管理程序的控制下交替进行。
当某道程序因请求I/O操作暂停运行,CPU便立即转去运行另一道程序,实现系统各部件之间并行工作。
多道程序设计的特点是多道、宏观上并行、微观上串行。
- 多道。计算机内存中同时存放多道相互独立的程序。
- 宏观上并行。同时进入系统的多道程序都处于运行过程中,但都未运行完毕。
- 微观上串行。内存中的多道程序轮流占有CPU,交替执行。
多道程序设计技术的实现需要解决一下问题:
- 如何分配处理器。
- 多道程序的内存分配问题。
- I/O设备如何分配。
- 如何组织和存放大量的程序和数据,以方便用户使用并保证其安全性和一致性。
在批处理系统中采用多道设计技术就形成了多道批处理操作系统
。该系统将用户提交的作业成批地送入内存,然后由作业调度程序自动地选择作业运行。
优点:资源利用率高,系统吞吐量大。
缺点:用户响应时间较长;不提供人机交互能力。
1.2.3 分时操作系统
分时技术
就是将处理器的运行时间分为很短的时间片
,按时间片轮流将处理器分配给各联机作业使用。
分时操作系统
是指多个用户通过终端同时共享一台主机,用户可以同时与主机进行交互操作而互不干扰。实现分时系统的关键是如何使用户能与自己的作业进行交互。
分时系统也支持多道程序,但不同于多道批处理系统。多道批处理是实现作业自动控制而无需人工干预的系统,而分时系统是实现人机交互的系统。
分时系统的主要特征如下:
- 同时性。也称为多路性,指允许多个终端用户同时使用一台计算机。
- 交互性。用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互。
- 独立性。系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感觉不到别人也在使用这台计算机。
- 及时性。用户请求能在很短时间内获得响应。
缺点:不能优先处理一些紧急任务。
虽然分时系统较好的解决了人机交互问题,但是还是需要系统能对外部的信息在规定的时间内(比时间片的时间还短)做出处理,因此实时操作系统诞生。
1.2.4 实时操作系统
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统
。这里的时间限制分两类:某个动作必须绝对的在规定的时刻发生,不能有差错,称为硬实时系统
。若能接受偶尔违反时间规定且不会引起任何永久性的损害,则称为软实时系统
。
实时操作系统的主要特点是及时性和可靠性。
1.2.5 网络操作系统和分布式计算机系统
网络操作系统
将计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送。网络操作系统的最主要特点是网络中各种资源的共享以及各台计算机之间的通信。
分布式计算机系统
由多台计算机组成并满足:
- 系统中任意两台计算机通过通信方式交换信息。
- 系统中的每台计算机都有同等地位,没有主机和从机。
- 每台计算机的资源为所有用户共享。
- 任一台计算产都可以构成一个子系统,而且支持重构。
- 任何工作都可以分布在几台计算机上,由他们并行工作、协同完成。
该系统的主要特点是分布性和并行性。
分布式操作系统和网络操作系统的本质不同是,分布式操作系统的若干计算机相互协同完成同一任务。
1.2.6 个人计算机操作系统
个人计算机操作系统是目前使用最广泛的操作系统,广泛应用于文字处理、电子表格、游戏中,常见的有Windows、Linux和MacOS等。
此外还有嵌入式操作系统、服务器操作系统、智能手机操作系统等。
1.3 操作系统的运行环境
1.3.1 处理器运行模式
通常CPU执行两种不同性质的程序:操作系统内核程序
、用户自编程序(应用程序)
,前者是后者的管理者,内核程序需要执行一些特权指令
,应用程序不能执行这些特权指令。
- 特权指令是不允许用户直接使用的指令,例如I/O指令、关中断指令等等。
- 非特权指令是允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间。
CPU的运行模式划分为用户态
(目态)和核心态
(管态、内核态)。应用程序运行在用户态,内核程序运行在和形态,应用程序向操作系统请求服务时通过使用访管指令
,访管指令是用户态执行的,属于非特权指令。
操作系统的各项功能被设置在不同的层次上,如时钟管理、中断处理、设备驱动的最底层以及进程管理、存储器管理、和设备管理的高层等,这两部分组成了操作系统的内核,这部分内容的指令运行在核心态。
内核
是计算机上配置的底层软件,管理着系统的各种资源,可以看做是连接应用程序和硬件的一座桥梁。大多数的内核包括四方面内容:
时钟管理
时钟的第一功能是计时;通过时钟中断的管理可以实现进程的切换。分时系统采用时间片轮转调度;实时系统按截止时间控制运行;批处理系统通过时钟管理衡量作业运行程度。系统管理的方方面面都依赖于时钟。
中断机制
引入中断机制是为了提高多道程序运行时的CPU利用率,在等待I/O期间执行其他指令。后来发展出多种类型,称为操作系统各项操作的基础。现代操作系统是靠中断驱动的软件。
中断机制中只有一小部分功能属于内核,他们负责保护和恢复现场的信息,转移控制权到相关的处理程序,这样可以减少中断的处理时间。
原语
按层次结构设计的操作系统,底层有一些可以被调用的公用小程序,各自完成一个规定的操作,通常称为原语
,特点如下:
- 处于操作系统的最底层,是最接近硬件的部分。
- 他们的运行具有原子性,其操作只能一气呵成。
- 运行时间都较短,且调用频繁。
定义原语的直接方法是关中断,让所有动作不可分割地完成后再开中断。系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使他们成为内核的组成部分。
系统控制的数据结构及处理
系统中用来登记状态信息的数据结构有很多,为了实现有效的管理,系统需要进行一些基本的操作,常见的有:
- 进程管理。
- 存储器管理。
- 设备管理。
核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
1.3.2 中断和异常的概念
CPU运行用户程序时想要进入内核态,就要通过中断
或异常
,这是通过硬件实现的。通常让PSW的一位表示CPU所处的工作状态。
中断是让操作系统夺回CPU使用权的唯一途径。
中断和异常的定义
中断也称为外中断,是指来自CPU执行指令外部的事件,通常用于信息输入/输出。
异常也称为内中断,是指来自CPU执行指令内部的事件,异常不能被屏蔽,一旦出现就必须立即处理。
中断和异常的分类
外中断可分为可屏蔽中断
和不可屏蔽中断
。可屏蔽中断是INTR线发出的中断请求,更改屏蔽字可实现多种中断。不可屏蔽中断是通过NMI线发出的中断请求,通常是紧急的硬件故障。
异常可分为故障、自陷和终止。故障是指令执行引起的异常。自陷是一种事先安排的异常事件,用于在用户态下调用操作系统内核程序。终止是指出现了使得CPU无法继续执行的硬件故障。故障和自陷属于软件中断(程序性异常),终止和外中断属于硬件中断。
中断和异常的处理过程
当CPU在执行到第i条指令检测到异常事件或发现中断请求信号,CPU打断当前的用户程序,然后转到相应的中断或异常处理程序中执行。
如果顺利解决,在处理程序的最后,CPU通过执行返回指令回到被打断的第i条指令或第i+1条指令继续执行;如果无法解决,则终止用户程序。
通常情况下,对中断和异常的具体处理过程由操作系统和驱动程序完成。
中断处理和子程序调用的区别:
- 中断处理程序和被中断的当前程序是相互独立的;子程序和主程序是统一程序的两部分,有主从关系。
- 通常中断的产生都是随机的,子程序调用是通过call指令引起的,是程序设计者事先安排的。
- 调用子程序的过程完全属于软件处理过程;中断的处理还需要有专门的硬件电路。
- 中断处理程序的入口地址可由硬件向量法产生向量地址,再由向量地址找到入口地址;子程序的入口地址是call指令中的地址码给出的。
- 调用中断处理程序和子程序都需要PC中的内容,前者由中断隐指令完成,后者由call指令完成。
- 响应中断时,需要对同时检测到的多个中断请求进行裁决,调用子程序时没有这种操作。
1.3.3 系统调用
系统调用
是指用户在调用操作系统提供的一些子功能,可被视为特殊的公共子程序。
在用户程序中,凡是和资源相关的操作都必须通过系统调用的方式向操作系统提出服务请求,并由操作系统代为完成。通常一个操作系统的系统调用命令有几十到上百条,每个系统调用都有唯一的调用号,大致可分为:
- 设备管理
- 文件管理
- 进程通信
- 内存管理
系统调用的处理要由操作系统内核程序完成,要运行在核心态。
系统调用的步骤:
- 用户程序先将系统调用号和所需的操作压入堆栈,调用实际的调用指令,执行一个陷入指令,将用户态转为内核态,再由硬件和操作系统内核程序保护现场。
- 分析系统调用类型,转入相应的系统调用处理子程序。
- 在系统调用处理子程序结束后,恢复现场,然后返回被中断进程或新进程继续往下执行。
用户通过操作系统运行上层程序,需要管理程序服务,主动通过硬件中断机制进入核心态;也有可能是出现异常,被动进入核心态。处理结束后,用户程序需要继续执行,通过之前保存的现场退出中断/异常处理程序,返回断点处继续执行。
1.4 操作系统结构
分层法
分层法
将操作系统分为若干层,底层为硬件,顶层为用户接口,每层只能调用紧邻它的低层功能和服务。
分层法的优点:
- 便于系统的调试和验证,简化了系统的设计与实现。调试到某层才发现错误,那么错误就在这一层。
- 易扩充和维护。在系统中增加修改、替换一层中的模块或整层,只要不改变相应层的接口就不会影响其他层。
分层法的问题:
- 合理定义各层比较困难。
- 效率较差,需要自上而下地穿越多层,每层都有响应的层间通信机制。
模块化
模块化
是将操作系统按功能划分为若干具有一定独立性的模块。还可以进一步将各模块细分为若干具有一定功能的子模块,同样也规定好各子模块之间的接口。
划分模块时要充分考虑模块的独立性问题,独立性越高,各模块之间的交互就越少,系统结构就越清晰。
衡量模块的独立性有两个标准:
- 内聚性,模块内部各部分之间的紧密程度。内聚性越高,独立性越好。
- 耦合度,模块间相互联系和相互影响的程度。耦合度越低,独立性越好。
模块化的优点:
- 提高了操作系统设计的正确性、可理解性和可维护性。
- 增强了操作系统的可适应性。
- 加速了操作系统的开发过程。
模块化的缺点:
- 模块间的接口规定很难满足对接口的实际需求。
- 各模块设计者齐头并进,无法找到一个可靠的决定顺序。
宏内核
从操作系统的内核架构划分可分为宏内核
和微内核
。
宏内核
,也称为单内核
或大内核
,是将系统的主要功能模块都作为一个紧密联系的整体运行在内核态。各管理模块之间共享信息,能有效利用相互之间的有效特性,有无可比拟的性能优势。
随着体系结构的不断发展,操作系统的设计规模急剧增长,面临软件危机,所以出现了微内核
技术,将一些非核心功能移动到用户空间。这样的好处是方便扩展系统,所有新服务都可以在用户空间增加,内核基本不用改动。
宏内核的缺点是:
- 内核庞大且功能复杂,难以维护。
- 大内核的某个功能模块出错,就可能导致整个系统崩溃。
目前主流的操作系统都是基于宏内核的框架,但是微内核和宏内核一直是同步发展的,如今主流的操作系统是广泛吸取微内核架构的优点后柔和而成的混合内核。
微内核
- 微内核的基本概念
微内核框架是将内核中最基本的功能保留在内核,其他不需要在核心态执行的功能移到用户态执行,降低内核设计复杂性。那些被分离出去的代码依照分层的原则被划分成若干服务程序,他们的执行相互独立,交互借助微内核进行通信。
微内核结构将操作系统分为微内核
和多个服务器
。
微内核是精心设计的、能实现操作系统最核心功能的小型内核,通常包括:
- 与硬件处理紧密相关的部分。
- 一些较基本的功能。
- 客户与服务器之间的通信。
操作系统的绝大部分功能都放在微内核外的一组服务器中实现,它们都是作为进程来实现的,运行在用户态。客户和服务器之间是借助微内核提供的消息传递机制来实现交互的。
只有微内核运行在内核态,其余模块全部运行在内核态。一个模块的错误只会使这个模块崩溃,而不会使整个模块崩溃。
- 微内核的基本功能
微内核结构通常利用机制与策略分离的原理来构造OS结构,将机制部分以及与硬件紧密相关的部分放入微内核。
微内核通常具有以下功能:
- 进程/线程管理。进程之间通信属于微内核基本功能;进程调度功能应该放入微内核,进程优先级等策略问题放入微内核外的进程管理服务器中。
- 低级存储器管理。依赖硬件的逻辑地址变换为物理地址的页表机制和地址变换机制应该放入微内核,采用何种页面置换算法,何种内存分配策略等虚拟存储器管理的策略应该放在微内核外的存储器管理服务器中。
- 中断和陷入处理。微内核OS将与硬件紧密相关的一小部分放入微内核,主要捕获中断和陷入时间,并进行中断响应处理,识别中断或陷入的事件后再发送给相关的服务器来处理。
微内核将进程管理、存储器管理、以及I/O管理这些功能一分为二,属于机制的很小一部分放入微内核,而绝大部分放入微内核外的各种服务器实现,大部分服务器都比微内核大。采用客户/服务器模式时,能将微内核做的很小。
- 微内核的特点
- 扩展性和灵活性。许多功能从内核分离出来,增加或修改功能只需要在相应的服务器修改,或再加一个专用的服务器,无需改动内核代码。
- 可靠性和安全性。
- 可移植性。与CPU和I/O硬件有关的代码放在内核中,其他服务器均与硬件平台无关,将操作系统移植到其他平台的修改比较少。
- 分布式计算。客户和服务器、服务器和服务器之间的通信采用消息传递机制,能很好的支持分布式系统和网络系统。
微内核结构的主要问题是性能问题。需要频繁地在核心态和用户态之间切换,操作系统的执行开销偏大。为了改善效率可以将频繁使用的系统服务移回内核,但是又会使微内核容量明显增大。
外核
不同于虚拟机克隆真实机器,另一种策略是对资源进行划分,给每个用户划分整个资源的一个子集。在底层,外核
程序在内核态运行。它的任务是为虚拟机分配资源,并检查这些资源的安全性,以确保没有机器会使用别人的资源。每个虚拟机都可以运行自己的操作系统,但是只能使用已经申请并且获得分配的那部分资源。
外核机制的优点是减少了资源的映射层,分配的是未经抽象的连续的物理地址空间,只需要记录分配给各个虚拟机的有关资源即可,它将多道程序(外核内)与用户操作系统代码(用户空间内)加以分离,而且负载并不重。
外核的缺点是:降低了系统的一致性;使系统变的更复杂。
1.5 操作系统引导
操作系统是一种程序,以数据的方式存放在硬盘中。操作系统
引导是指计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别分区上的操作系统,然后通过程序启动操作系统。
常见的操作系统引导过程如下:
- 激活CPU,读取ROM中的boot程序,将指令寄存器置为BIOS的第一条指令。
- 硬件自检。BIOS在内存最开始的空间构建中断向量表,然后进行通电自检。
- 加载带有操作系统的硬盘。BIOS开始读取Boot Sequence,将控制权交给启动顺序第一位的存储设备,CPU将存储设备引导扇区的内容加载到内存中。
- 加载主引导记录(MBR)。主引导记录MBR的作用是告诉CPU去磁盘的哪个分区去找操作系统。MBR包含磁盘引导程序和分区表。
- 扫描硬盘分区表,加载硬盘活动分区。
- 加载分区引导记录(PBR)。读取活动分区的第一个扇区,这个分区被称为
分区引导记录(PBR)
,其作用是寻找并激活分区根目录下用于引导操作系统的程序。 - 加载启动管理器。
- 加载操作系统。将操作系统的初始化程序加载到内存中执行。
主要可以总结为:
- CPU从特定主存地址开始,取指令,执行ROM中的引导程序(先自检再开机)。
- 将磁盘区的第一块——主引导记录读入内存,执行磁盘引导程序,扫描分区表。
- 从活动分区读入分区引导记录,执行其中的程序。
- 从根目录下找到完整的操作系统初始化程序(启动管理器)并执行。
1.6 虚拟机
1.6.1 虚拟机的基本概念
虚拟机
是指利用虚拟化技术,将一台物理的机器虚拟化为多台虚拟机器,隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算机环境。
第一类虚拟机管理程序
第一类虚拟机管理程序像一个操作系统,它是唯一一个运行在最高特权的程序。它在裸机上运行并且具备多道程序功能。虚拟机管理程序向上层提供若干虚拟机,这些虚拟机是逻辑硬件的精确复制品。不同的虚拟机上可以运行任何不同的操作系统。
虚拟机作为一个用户态的进程运行,不允许执行敏感指令。但是虚拟机上的操作系统认为自己运行在内核态,称为虚拟内核态
。当虚拟机操作系统执行了一条内核态指令时,会陷入虚拟器管理程序,在支持虚拟化的CPU上,虚拟机管理程序检查是虚拟机操作系统执行的还是用户程序执行的。如果是前者,虚拟机管理程序将安排这条指令正确执行,否则将模拟真实硬件面对用户态执行敏感命令的行为。
在过去不支持虚拟化的CPU上,真实硬件不会直接执行虚拟机的敏感指令,这些敏感指令被转为对虚拟机管理程序的调用,由虚拟机管理程序模拟这些指令的功能。
第二类虚拟机管理程序
第二类虚拟机管理程序依赖于操作系统,很像一个普通的进程。第二类虚拟机管理程序仍然伪装成具有CPU和各种设备的完整计算机。VMware Workstation
是首个x86平台的第二类虚拟机管理程序。
运行在两类虚拟机管理程序上的操作系统称为客户操作系统
。对于第二类虚拟机管理程序,运行在底层硬件上的操作系统称为宿主操作系统
。
首次启动时,第二类虚拟机管理程序像一台刚启动的计算机一样运转,期望找到的驱动器可以是虚拟设备。然后将操作系统安装到虚拟磁盘上(其实只是宿主操作系统中的一个文件),客户操作系统安装完成后就可以运行。
虚拟化在Web主机领域很流行。例如云主机。
有的教材将第一类虚拟化技术称为
裸金属架构
,第二类虚拟化技术称为寄居架构
。