注:内容参考王道2024考研复习指导
操作系统的基本概念
操作系统的概念
计算机系统自下而上可以大致分为4部分:硬件、操作系统、应用程序和用户。
操作系统(OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
操作系统的功能和目标
操作系统作为系统资源的管理者
- 处理机管理
在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。
并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务。
进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
- 存储器管理
存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
- 文件管理
计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
- 设备管理
设备管理的主要任务是完成用户的1/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
操作系统作为用户与计算机硬件系统之间的接口
向上层提供方便易用的服务
GUI:图形化用户接口(Graphical User Interface):用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。
联机命令接口实例(Windows系统):联机命令接口=交互式命令接口。特点是用户说一句,系统跟着做一句。
脱机命令接口实例(Windows系统) 脱机命令接口=批处理命令接口。特点是用户说一堆,系统跟着做一堆。
程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
操作系统实现了对计算机资源的扩充
作为最接近硬件的层次,操作系统需要实现对硬件机器的拓展。
没有任何软件支持的计算机成为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机。
操作系统的特征
并发和共享互为存在条件。
没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征。
并发
并发,指两个或多个事件在同一时间间隔内发生。这些时间宏观上是同时发生的,但微观上是交替发生的。
注:并行是指两个或多个事件在同一时刻同时发生。
操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。
注:单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行;多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享方式
系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
这种在一段时间内只允许一个进程访问的资源称为临界资源。
同时共享方式
系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。
注:所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)
虚拟
虚拟是指把一个物理上的实体变成若干个逻辑上的对应物。物理实体是实际存在的,逻辑对应物是用户感受到的。
操作系统的虚拟技术可以归纳为:空分复用技术,如虚拟存储器技术;时分复用技术,如虚拟存储器。
例:
- 虚拟 CPU
在采用多道程序设计技术的系统中,对 CPU 时间都是采用分时共享的方式。如在分时系统中,CPU时间被分为很小的时间片,每个进程每次只能分到一个时间片,若未完成任务而时间已用完,系统将会CPU的使用权赋给另一个进程。处理机使用权的切换对用户而言是完全透明的,从而给用户造成他在独占CPU的错觉。对物理CPU的分时共享为进程实现了一个虚拟的CPU。
- 虚拟存储技术
现代操作系统提供给用户的是逻辑地址和用户程序的虚存空间(作业地址空间),而程序实际存储在物理主存中,以实际的物理地址进行主存的存取操作。在逻辑与物理之间的映射由操作系统的地址映射机构自动完成。
- 虚拟设备和虚拟分配技术
应用程序将一批数据在打印机上输出,实际上是写到一个虚拟打印机上。由操作系统的假脱机系统负责,在适当的时候,真正在物理打印机上输出。正式由于操作系统提供假脱机技术,多个进程可以并行“打印”,每个进程都有自己的虚拟打印机。
**注:**如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发
性,就谈不上虚拟性。
异步
异步是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进。
注:如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有
可能导致异步性。
并发和共享的关系
并发性指计算机系统中同时存在着多个运行着的程序。
共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
例:使用QQ发送文件A,同时使用微信发送文件B
- 两个进程正在并发执行(并发性)
- 需要共享地访问硬盘资源(共享性)
如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义。
如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。
操作系统的发展历程
手工操作阶段
注:此阶段无操作系统
用户在计算机上算题的所有工作都要人工干预,如程序的装入、运行、结果的输出等。随着计算机硬件的发展,人机矛盾(速度和资源利用)越来越大,必须寻求新的解决办法。
手工操作阶段有两个突出的缺点:
- 用户独占全机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。
- CPU等待手工操作,CPU的利用不充分。
唯一的解决办法就是用高速的机器代替相对较慢的手工操作来对作业进行控制。
批处理阶段
注:操作系统开始出现
为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。按发展历程又分为单道批处理系统、多道批处理系统(多道程序设计技术出现以后)。
单道批处理系统
引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。
单道批处理系统的主要特征有:
- 自动性。在顺利的情况下,磁带上的一批作业能自动地逐个运行,无须人工干预。
- 顺序性。磁带上地各道作业顺序地进入内存,先调入内存的作业先完成。
- 单道性。内存中仅有一道程序运行,即监督程序每次从磁带上只调入一道程序进入内存运行。
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
多道批处理系统
注:引入中断之后才出现了多任务操作系统,而中断方式的特点是CPU与外部设备并行工作,同时系统中任务并发进行,即多任务操作系统具有并发和并行的特性。
每次往内存中读入多道程序,操作系统正式诞生,用于支持多道程序并发运行。
用户所提交的作业都先存放在外存上并排成一个队列,作业调度程序按一定的算法从后备队列中选择若干作业调入内存,它们在管理程序的控制下相互穿插地运行,共享系统中的各种硬/软件资源。当某道程序因请求I/O操作而暂停运行时,CPU便立即转去运行另一道程序(注:这是借助中断技术实现的)。
多道程序设计的特点是多道、宏观上并行、微观上串行。
注:引入多道程序后,程序的执行就失去了封闭性和顺序性,程序执行因为共享资源及相互协同的原因产生了竞争,相互制约。
主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数)
分时操作系统
分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
分时系统的主要特征如下:
- 同时性。同时性也称多路性,指允许多个终端用户同时使用一台计算机。
- 交互性。用户通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互。
- 独立性。系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感觉不到别人也在使用这台计算机,好像只有自己单独使用这台计算机一样。
- 及时性。用户请求能在很短时间内获得响应。
主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
实时操作系统
- 硬实时系统,必须在绝对严格的规定时间内完成处理。
- 软实时系统,能接受偶尔违反时间规定。
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性。
其他几种操作系统
网络操作系统、分布式操作系统、个人计算机操作系统…
操作系统的运行环境
操作系统的运行机制
程序的运行
“指令”就是处理器(CPU)能识别、执行的最基本命令。
程序运行的过程其实就是CPU执行一条一条的机器指令的过程。
内核程序、应用程序
在计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(系统外层的应用程序,简称应用程序)。
操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。
为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。
特权指令、非特权指令
应用程序只能使用“非特权指令”,如:加法指令、减法指令等。
操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许“管理者”——即操作系统内核来使用。
注:在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。
内核态、用户态
CPU有两种状态,“内核态”和“用户态”。内核态也叫核心态、管态,用户态也叫目态。
处于内核态时,说明此时正在运行的是内核程序,此时特权指令、非特权指令都可执行。
处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。
注:CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
内核态与用户态的切换
内核态切换到用户态:执行一条特权指令,修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
用户态切换到内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。
操作系统的内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
大多数操作系统的内核应该包括4方面的内容:
- 时钟管理
时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。
例如,在分时操作系统中采用时间片轮转调度,在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等。
- 中断机制
引入中断技术的初衷是提高多道程序运行时的CPU利用率,使CPU可以在IO操作期间执行其他指令。后来逐步得到发展,形成了多种类型,成为操作系统各项操作的基础。
例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。
可以说,现代操作系统是靠中断驱动的软件。中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。
- 原语
按层次结构设计的操作系统,底层是一些可被调用的公用小程序,它们各自完成一个规定的操作,通常将具有这些特点的程序称为原语(AtomicOperation)。它们的特点如下:
- 处于操作系统的底层,是最接近硬件的部分。
- 这些程序的运行具有原子性,其操作只能一气呵成(出于系统安全性和便于管理考虑)。
- 这些程序的运行时间都较短,而且调用频繁。
定义原语的直接方法是关中断,让其所有动作不可分割地完成后再打开中断。系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分。
- 系统控制的数据结构及处理
系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:
- 进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等。
- 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
- 设备管理。缓冲区管理、设备分配和回收等。
可见,核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
中断和异常
由CPU内部产生的意外事件被称为异常,也称内中断。
由来自CPU外部的设备向CPU发出的中断请求被称为中断,通常用于信息的输入和输出,也称外中断。
中断的作用
“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
CPU上会运行两种程序,一种是操作系统内核程序,一种是应用程序。
在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。“中断”是让操作系统内核夺回CPU使用权的唯一途径。如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。
中断的类型
- 内中断
与当前执行的指令有关,中断信号来源于CPU内部。如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。异常不能被屏蔽,一旦出现,就应立即处理。
- 外中断
与当前执行的指令无关,中断信号来源于CPU外部。通常用于信息输入/输出(,如设备发出的1/0结束中断,表示设备输入/输出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
中断的分类
陷入中断,由陷入指令引发,是应用程序故意引发的,将用户态转变为核心态(访管指令,trap指令)。
故障中断,由错误条件引起,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
终止中断,由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。
注:大多数的教材、试卷中,“中断”特指狭义的中断,即外中断。而内中断一般称为“异常”。
中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
注:中断处理程序一定是内核程序,需要运行在“内核。
系统调用
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中程序接口由一组系统调用组成。
在用户程序中,凡是与资源有关的操作(如存储分配、I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并
由操作系统代为完成。
”系统调用“式操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用按功能分为如下几类:
- 设备管理。完成设备的请求或释放,以及设备启动等功能。
- 文件管理。完成文件的读、写、创建及删除等功能。
- 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
- 进程通信。完成进程之间的消息传递或信号传递等功能。
- 内存管理。完成内存的分配、回收以及获取作业占用内存区大小和起始地址等功能。
系统调用与库函数的区别
普通应用程序可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及。
系统调用的过程
简要过程如下:
- 传递系统调用参数
- 执行陷入指令(用户态)
- 执行相应的内请求核程序处理系统调用(核心态)
- 返回应用程序
具体过程如下:
- 第一步是,用户程序首先将系统调用号和所需的参数压入堆栈;接着,调用实际的调用指令,然后执行一个陷入指令,将CPU状态从用户态转为核心态,再后由硬件和操作系统内核程序保护被中断进程的现场,将程序计数器(PC)、程序状态字(PSW)
及通用寄存器内容等压入堆栈。 - 第二步是,分析系统调用类型,转入相应的系统调用处理子程序。在系统中配置了一张系统调用入口表,表中的每个表项都对应一个系统调用,根据系统调用号可以找到该系统调用处理子程序的入口地址。
- 第三步是,在系统调用处理子程序执行结束后,恢复被中断的或设置新进程的CPU现场,然后返回被中断进程或新进程,继续往下执行。
注:陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态。发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。
操作系统结构
操作系统的体系结构
分层结构
最底层是硬件,最高层是用户接口每层可调用更低一层。
特性、思想
内核分多层,每层可单向调用更低一层提供的接口。
优点
- 便于调试和验证,自底向上逐层调试验证。
- 易扩充和易维护,各层之间调用接口清晰固定。
缺点
- 仅可调用相邻低层,难以合理定义各层的边界。
- 效率低,不可跨层调用,系统调用执行时间长。
模块化
特性、思想
将内核划分为多个模块,各模块之间相互协作。内核=主模块+可加载内核模块。
主模块:只负责核心功能,如进程调度、内存管理。
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。
优点
- 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发。
- 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强理OS适应性。
- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点
- 模块间的接口定义未必合理、实用。
- 模块间相互依赖,更难调试和验证。
宏内核(大内核)
特性、思想
所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化"的设计思想)
优点
性能高,内核内部各种功能都可以直接相互调用
缺点
- 内核庞大功能复杂,难以维护
- 大内核中某个功能模块出错,就可能导致整个系统崩溃
微内核
特性、思想
只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态。
优点
- 内核小功能少、易于维护,内核可靠性高
- 内核外的某个功能模块出错不会导致整个系统崩溃
缺点
- 性能低,需要频繁的切换用户态/核心态。用户态下的各功能模块不可以直接相互调用,只能通过内核的"消息传递"来间接通信
- 用户态下的各功能模块不可以直接相互调用只能通过内核的"消息传递"来间接通信
外核
特性、思想
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
优点
- 外核可直接给用户进程分配"不虚拟、不抽象的硬件资源,使用户进程可以更灵活的使用硬件资源。
- 减少了虚拟硬件资源的"映射层",提升效率。
缺点
- 降低了系统的一致性。
- 使系统变得更复杂。
操作系统引导
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)。
- 将磁盘的第一块——主引导记录读入内存,执行磁盘引导程序,扫描分区表。
- 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序。
- 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作。
常见操作系统的引导过程如下:
- 激活CPU。激活的CPU读取ROM中的boot程序,将指令寄存器置为BIOS(基本输入/输出系统)的第一条指令,即开始执行BIOS的指令。
- 硬件自检。BIOS程序在内存最开始的空间构建中断向量表,接下来的POST过程要用到中断功能。然后进行通电自检,检查硬件是否出现故障。如有故障,主板会发出不同含义的蜂鸣,启动中止;如无故障,屏幕会显示CPU、内存、硬盘等信息。
- 加载带有操作系统的硬盘。通电自检后,BIOS开始读取BootSequence(通过CMOS里保存的启动顺序,或者通过与用户交互的方式),将控制权交给启动顺序排在第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载到内存中。
- 加载主引导记录(MBR)。硬盘以特定的标识符区分引导硬盘和非引导硬盘。如果发现一个存储设备不是可引导盘,就检查下一个存储设备。如无其他启动设备,就会死机。主引导记录MBR的作用是告诉CPU去硬盘的哪个主分区去找操作系统。
- 扫描硬盘分区表,并加载硬盘活动分区。MBR包含硬盘分区表,硬盘分区表以特定的标识符区分活动分区和非活动分区。主引导记录扫描硬盘分区表,进而识别含有操作系统的硬盘分区(活动分区)。找到硬盘活动分区后,开始加载硬盘活动分区,将控制权交给活动分区。
- 加载分区引导记录(PBR)。读取活动分区的第一个扇区,这个扇区称为分区引导记录(PBR),其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)。
- 加载启动管理器。分区引导记录搜索活动分区中的启动管理器,加载启动管理器。
- 加载操作系统。将操作系统的初始化程序加载到内存中执行。
虚拟机
传统计算机
虚拟机
虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统,也称:虚拟机管理程序/虚拟机监控序/Virtual Machine Monitor/Hypervisor。
共有两类VMN,第一种直接运行在硬件上;第二种运行在宿主操作系统上。
第一类VMN | 第二类VMN | |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上,能直接控制和配物理资源 | 运行在HostOS之上,依赖于HostOS为其分配物理资源 |
资源分配方式 | 在安装GuestOS时,VMM要在原本的硬盘上自行分配存储空间,类似于"外核"的分配方式,分配未经抽象的物理硬件 | GuestOS拥有自己的虚拟磁盘,该盘实际上是HostOS文件系统中的一个大文件。GuestOS分配到的内存是虚拟内存 |
性能 | 性能更好 | 性能更差,需要HostOS作为”中介“ |
可支持的虚拟机数量 | 更多,不需要和HostOS竞争资源,相同的硬件资源可以支持更多的虚拟机 | 更少,HostOS本身需要使用物理资源,HostOS上运行的其他进程也需要物理资源 |
虚拟机的可迁移性台 | 更差 | 更好,只需导出虚拟机镜像文件即可迁移到另一HostOS上,商业化应用更广泛 |
运行模式 | 第一类VMM运行在最高特权级(Ring0),可以执行最高特权的指令。 | 第二类VMM部分运行在用户态、部分运行在内核态。GuestOS发出的系统调用会被VMM截获,并转化为VMM对HostOS的系统调用 |