操作系统第一章 计算机系统概述
计算机学科基础:操作系统第一章计算机系统概述的学习笔记
一.操作系统的基本概念(✠)
1.操作系统的基本概念
- 操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,
进而为用户和其他软件提供方便接口与环境的程序集合。 - 操作系统是计算机系统中最基本的系统软件。
2.操作系统的特征(✪)
- 1.并发
- 并发是指两个或多个事件在同一时间间隔内发生,这些事件宏观上是同时发生的,但微观上是交替发生的
- 并行:指两个或多个事件在同一时刻同时发生。
- 操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。
在操作系统中,引入进程的目的是使程序能并发执行。 - 多道技术需要进程间能够并发,并发性的实现需要中断功能的支持
- 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
- 2.共享
- 共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用
- 资源共享的两种方式
- 互斥共享方式
- 规定在一段时间内只允许一个进程访问该资源。
- 在一段时间内只允许一个进程访问的资源称为临界资源
- 访问资源过程(互斥式共享)
- 进程A访问某个资源时,必须先提出请求,若此时该资源空闲,则系统便将之分配给进程A使用,
- 此后有其他进程也要访问该资源时(只要A未用完)就必须等待。
- 仅当进程A访问完并释放该资源后,才允许另一个进程对该资源进行访问。
- 同时访问方式
- 这类资源允许在一段时间内由多个进程“同时”访问,如磁盘设备。
- “同时”通常是宏观上的,
而在微观上,这些进程可能是交替地对该资源进行访问即“分时共享”的。
- 互斥共享方式
- 并发和共享是操作系统的两个最基本的特征,两者之间互为存在的条件
- 3.虚拟
- 虚拟是指把一个物理上的实体变为若干逻辑上的对应物,
物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。 - 虚拟技术
- 时分复用技术(虚拟处理器)
- 通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器
- 虽然只有一个处理器,但它能同时为多个用户服务,使每个终端用户都感觉有一个中央处理器在专门为它服务。
- 利用多道程序设计技术把一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器。
- 空分复用技术(虚拟存储器)
- 将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。
- 时分复用技术(虚拟处理器)
- 虚拟是指把一个物理上的实体变为若干逻辑上的对应物,
- 4.异步
- 多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,
它以不可预知的速度向前推进,这就是进程的异步性。 - 异步性使得操作系统运行在一种随机的环境下,可能导致进程产生与时间有关的错误
但是只要运行环境相同,操作系统就须保证多次运行进程后都能获得相同的结果。
- 多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,
3.操作系统的目标与功能
- 操作系统作为计算机系统资源的管理者
- 处理机管理
- 在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,
因而对处理机的管理可归结为对进程的管理。 - 并发是指在计算机内同时运行多个进程,因此进程何时创建、何时撤销、如何管理、如何避免冲突、合理共享就是进程管理的最主要的任务。
- 进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
- 在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,
- 存储器管理
- 存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率
- 主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
- 文件管理
- 计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。
- 文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。
- 设备管理
- 设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,
- 主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。
- 处理机管理
- 操作系统提供给用户和其他软件方便的接口和环境
向上层提供方便易用的服务- 为了让用户方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统提供了用户接口,分为两类。
- 命令接口(直接给用户使用)
- 用户利用这些操作命令来组织和控制作业的执行
- 联机命令接口(强调交换性,说一句做一句)
- 又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。
- 用户通过控制台或终端输入操作命令,向系统提出各种服务要求。
- 用户每输入一条命令,控制权就转给操作系统的命令解释程序,
然后由命令解释程序解释并执行输入的命令,完成指定的功能 - 之后,控制权转回控制台或终端,此时用户又可输入下一条命令
- 脱机命令接口(说一堆做一堆)
- 又称批处理命令接口,适用于批处理系统,它由一组作业控制命令组成。
- 脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,
连同作业一起提交给系统。 - 系统调度到该作业时,由系统中的命令解释程序逐条解释执行作业说明书上的命令,从而间接地控制作业的运行
- 程序接口(也称系统调用,给软件和程序员使用)
- 程序接口由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务
如使用各种外部设备、申请分配和回收内存及其他各种要求。 - 当前最为流行的是图形用户界面(GUI),即图形接口。GUI最终是通过调用程序接口实现的
严格来说,图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分。
- 程序接口由一组系统调用(也称广义指令)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务
- 操作系统实现了对计算机资源的扩充
- 没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础,
而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在最里层,其外面是操作系统。 - 操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器
- 因此,我们通常把覆盖了软件的机器称为扩充机器或虚拟机
- 没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础,
二.操作系统的发展历程
1.批处理阶段(操作系统开始出现:多道)
- 单道批处理系统
- 每次主机内存中仅存放一道作业,每当它在运行期间发出输入/输出请求后
高速的CPU便处于等待低速的I/O完成的状态。 - 资源的利用率和系统的吞吐量太低
- 每次主机内存中仅存放一道作业,每当它在运行期间发出输入/输出请求后
- 多道批处理系统(具有并发和并行的特点)
- 多道程序设计技术(多道,宏观上并行,微观上串行)
- 多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行(并发)
这些程序共享系统中的各种硬/软件资源,需要实现对共享资源的保护 - 当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序
- 多道程序设计技术允许多个程序同时进入内存并允许它们在CPU中交替地运行(并发)
- 中断技术使得I/O设备可以与CPU并行工作,I/O设备利用率高
- 优点:资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分利用
系统吞吐量大,CPU和其他资源保持“忙碌”状态 - 缺点:用户响应的时间较长,不提供人机交互能力
用户既不能了解自己的程序的运行情况,又不能控制计算机。
- 多道程序设计技术(多道,宏观上并行,微观上串行)
2.分时操作系统
- 分时操作系统的概述
- 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
- 若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行
把处理器让给其他作业使用,等待下一轮再继续运行。 - 由于计算机速度很快,作业运行轮转得也很快,因此给每个用户的感觉就像是自己独占一台计算机。
可以及时响应用户
- 分时操作系统的特点
- 分时系统也是支持多道程序设计的系统,用户请求可以被即时响应,解决了人机交互问题。
- 允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
- 缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,
循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
3.实时操作系统
实时操作系统的特点
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统。
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,
并在严格的时限内处理完接收的事件实时操作系统的主要特点是及时性和可靠性。
实时操作系统的分类
硬实时系统
- 某个动作必须绝对地在规定的时刻(或规定的时间范围)发生的系统
自动控制系统,导弹发射系统
- 某个动作必须绝对地在规定的时刻(或规定的时间范围)发生的系统
软实时系统
- 若能够接受偶尔违反时间规定且不会引起任何永久性的损害
如飞机订票系统、银行管理系统。
- 若能够接受偶尔违反时间规定且不会引起任何永久性的损害
三.操作系统运行环境(✪)
1.操作系统运行的机制(✠)
内核程序与应用程序
- 通常CPU执行两种不同性质的程序,一种是操作系统内核程序,另一种是用户自编程序(即应用程序)
- 对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此内核程序要执行一些特权指令
而应用程序出于安全考虑不能执行这些指令。 - 由很多内核程序组成操作系统内核(Kernel)
特权指令与非特权指令
指令是指CPU能识别、执行的最基本指令,指二进制机器指令
特权指令
- 是指不允许用户直接使用的指令,只能由操作系统内核来使用
- 如I/O指令、置中断指令,内存清零等指令
- 核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令
非特权指令
- 是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,
这也是为了防止用户程序对系统造成破坏。如加减法指令
- 是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,
用户态与核心态
- 用户态与内核态的概念
- 将CPU的运行模式划分为用户态(目态)和核心态 (又称管态、内核态)
- 用户态上运行应用程序,只能执行非特权指令
操作系统内核程序运行在核心态,可以执行特权指令,也可以执行非特权指令 - CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”
- 用户态与核心态之间的转换
- 用户态→核心态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
但凡需要操作系统介入的地方,都会引发中断(此前在用户态中可能发生了系统调用,使用了访管指令) - 核心态→用户态:执行一条特权指令(一般是中断返回指令),修改PSW的标志位为“用户态”,
这个动作意味着操作系统将主动让出CPU使用权 - 操作系统会对引发中断的事件进行处理,处理完了再把CPU使用权交给别的应用程序
- 用户态→核心态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
- 在操作系统中由用户态转变为核心态的例子
- 用户程序要求操作系统的服务,即系统调用。
- 发生$1$次中断。
- 用户程序中产生了一个错误状态。
- 用户程序中企图执行一条特权指令。
- 只能在核心态下运行的指令是:置时钟指令、广义指令(系统调用)、输入输出、中断指令
- 可以在用户态下运行的指令是:读时钟、取数、寄存器清零
- 用户态与内核态的概念
操作系统的内核(✪)
内核的定义
- 内核是计算机上配置的底层软件,它管理着系统的各种资源,可以看作是连接应用程序和硬件的一座桥梁
是操作系统最基本最核心的部分
- 内核是计算机上配置的底层软件,它管理着系统的各种资源,可以看作是连接应用程序和硬件的一座桥梁
内核的构成(内核中的指令操作工作在核心态)
与硬件关系紧密的模块
时钟管理:实现计时功能
中断机制:通过时钟与中断的管理,可以实现进程的切换
现代操作系统是靠中断驱动的软件原语(一种特殊的程序)
原语的概述
- 处于操作系统的最底层,是最接近硬件的部分。
- 这些程序的运行具有原子性,其操作只能一气呵成(出于系统安全性和便于管理考虑)
- 这些程序的运行时间都较短,而且调用频繁。
原语的定义
- 定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。
- 系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分
对系统资源进行管理的功能:
这些管理工作更多的是对数据结构的操作,不会直接涉及硬件- 进程管理:进程状态管理、进程调度和分派、创建与撒销进程控制块等。
- 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
- 设备管理:缓冲区管理、设备分配和回收等。
操作系统的体系结构
- 大(宏、单)内核
- 将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:高性能
- 缺点:内核代码庞大,结构混乱,难以维护
- 微内核
- 只把最基本的功能保留在内核
- 优点:内核功能少,结构清晰,方便维护
- 缺点:需要频繁地在核心态和用户态之间切换,性能低
- 图片
- 注:Ubuntu、CentOS的开发团队,其主要工作是实现非内核功能,而内核都是用了Linux内核
- 大(宏、单)内核
2.中断和异常的概念(✪)
中断的作用
- 实现核心态与用户态的切换
- 发生中断或异常时,运行用户态的CPU会立即进入核心态,这是通过硬件自动实现的
- 用一个特殊寄存器的一位来表示CPU所处的工作状态,0表示核心态,1表示用户态
若要进入核心态,则只需将该位置0即可
- 释放程序对资源的占有(实现并发)
- 实现核心态与用户态的切换
中断在广义上的分类
内中断(异常)
内中断也称为异常,与当前执行的指令有关,中断信号来源于CPU内部
异常不能被屏蔽,一旦出现,就应立即处理。异常的分类
软件中断
故障(Fault):由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,
让它继续执行下去。如:缺页故障陷入(Trap):由陷入指令引发,是应用程序故意引发的,用于在用户态下调用操作系统内核程序,
注:陷入指令(访管指令)在用户态中使用,属于非特权指令
硬件中断
- 终止(Abort):由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,
而是直接终止该应用程序。如:整数除0、非法使用特权指令
- 终止(Abort):由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,
外中断(狭义上的中断,属于硬件中断)
- 与当前执行的命令无关,中断信号来自CPU外部
- I/O中断:通常用于信息输入/输出
如设备发出的I/O结束中断,表示设备输入/输出处理已经完成。 - 时钟中断:表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
中断机制的基本实现原理
步骤
- 检查中断信号
- 内中断:CPU在执行指令时会检查是否有异常发生
- 外中断:每个指令周期末尾CPU都会检查是否有外中断信号需要处理
- 找到相应的中断处理程序:根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
- 检查中断信号
- 在中断机制中CPU和操作系统的作用
- 进入中断的程序属于操作系统程序
- 中断操作中由操作系统完成的是:提供中断服务、初始化中断向量表、保存中断屏蔽字、保存通用寄存器的内容、执行系统调用服务例程
- 中断操作中由CPU完成的是:保存被中断程序的中断点和程序状态字,将CPU模式改为内核态
- 中断处理需要保存程序断点/程序计数器(PC)、程序状态字寄存器(PSW),而子程序只需要保存断点/程序计数器(PC)
- 定时器产生时钟中断后,由时钟中断服务程序更新的内容是
- 内核中时钟变量的值
- 当前进程占用CPU的时间
- 当前进程在时间片内的剩余执行时间
3.系统调用(✪)
- 系统调用的定义
- 操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,
由用户进程发起,应用程序可以通过系统调用来请求获得操作系统内核的服务 - 应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,
因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求 - 系统调用由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
- 完全由操作系统自动完成的和不涉及请求操作系统服务的不属于系统调用
- 如进程调度,页置换由操作系统自动完成
- 生成随机整数,只需要普通的函数调用,不涉及请求操作系统的服务
- 操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,
- 系统调用与库函数的区别
- 普通应用程序可直接进行系统调用,也可使用库函数用程序,有的库函数涉及系统调用,有的不涉及
- 编程语言向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。
- 图片
- 系统调用的功能
- 设备管理:完成设备的请求/释放/启动等功能
- 文件管理:完成文件的读/写/创建/删除等功能
- 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能
- 进程通信:完成进程之间的消息传递/信号传递等功能
- 内存管理:完成内存的分配/回收等功能
- 系统调用的过程(在用户态发生,在内核态执行)
- 在用户态中使用传参指令:将系统调用需要的参数放到某些通用寄存器中
- 用户程序可以执行陷入指令(又称访管指令或trap指令)来发起系统调用,请求操作系统提供服务。
- 当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序
此时相当于应用程序把CPU的使用权主动交给操作系统内核程序(CPU状态会从用户态进入核心态) - 在核心态中,操作系统内核程序再对系统调用请求做出相应处理。
- 处理完成后,操作系统内核程序又会把CPU的使用权还给用户程序(即CPU状态会从核心态回到用户态)
- 图片
系统调用的注意事项
- 由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,
但这个系统堆栈也是属于该进程的。 - 若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。
- 系统调用中由操作系统完成的是:保存通用寄存器的内容、执行系统调用服务例程
- 系统调用中由CPU完成的是:保存断点和程序状态字、将CPU模式改为内核态
- 由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,
四.操作系统结构(✠)
1.分层结构
- 分层法的概述
- 将操作系统分为若干层,最底层(层0)为硬件,最高层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖)
- 分层法的优点
- 便于系统的调试和验证,简化了系统的设计和实现
- 易扩充和易维护:各层之间调用接口清晰固定
- 分层法的缺点
- 仅可调用相邻低层,难以合理定义各层的边界
- 效率低,不可跨层调用,系统调用执行时间长
- 操作系统每执行一个功能,通常要自上而下地穿越多层,
各层之间都有相应的层间通信机制,这无疑增加了额外的开销,导致系统效率降低。
- 操作系统每执行一个功能,通常要自上而下地穿越多层,
2.模块化
- 模块化的概述
- 模块-接口法:将操作系统按功能划分为若干具有一定独立性的模块。
- 每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信
- 模块化的优点
- 模块间逻辑清晰易于维护,确定模块间接口后,即可多模块同时开发
- 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
- 模块化的缺点
- 模块间的接口定义未必合理、实用
- 模块间相互依赖,更难调试和验证
3.宏内核与微内核
宏内核
- 宏内核也称单内核或大内核,将所有的系统功能都放在内核里,通常也采用了“模块化“的设计思想
- 优点:性能高,内核内部各种功能都可以直接相互调用
缺点:内核庞大功能复杂,难以维护;大内核中某个功能模块出错,就可能导致整个系统崩溃
目前的主流操作系统均使用的宏内核的架构:Linux、UNIX
微内核(机制与策略分离)
- 只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态
优点
- 内核小功能少、易于维护,内核可靠性高
- 内核外的某个功能模块出错不会导致整个系统崩溃(可靠性与安全性)
缺点
- 性能低,需要频繁的切换用户态/核心态。
- 用户态下的各功能模块不可以直接相互调用,只能通过内核的”消息传递”来间接通信
微内核的特点
扩展性和灵活性
- 许多功能从内核中分离出来,当要修改某些功能或增加新功能时,
只需在相应的服务器中修改或新增功能,或再增加一个专用的服务器,而无须改动内核代码。
- 许多功能从内核中分离出来,当要修改某些功能或增加新功能时,
可靠性和安全性
- 内核外的某个功能模块出错不会导致整个系统崩溃
可移植性
- 与CPU和I/O硬件有关的代码均放在内核中,而其他各种服务器均与硬件平台无关,
因而将操作系统移植到另一个平台上所需做的修改是比较小的。
- 与CPU和I/O硬件有关的代码均放在内核中,而其他各种服务器均与硬件平台无关,
分布式计算
- 客户和服务器之间、服务器和服务器之间的通信采用消息传递机制,
这就使得微内核系统能很好地支持分布式系统和网络系统。
- 客户和服务器之间、服务器和服务器之间的通信采用消息传递机制,
虽然宏内核在桌面操作系统中取得了绝对的胜利,但是微内核在实时、工业、航空及军事应用中特别流行,
这些领域都是关键任务,需要有高度的可靠性。
图片
五.操作系统引导(boot ✠)
- 操作系统引导程序(boot)位于磁盘,操作系统在初始化过程中需要创建中断向量表
- 活动分区又称主分区,即安装了操作系统的分区,通常在C盘,MBR(主引导记录可以确定活动分区)
操作系统引导过程
- ①激活CPU。激活的CPU读取ROM中的boot程序,开始执行BIOS的指令(自举程序)
- ②硬件自检。启动BIOS程序后,先进行硬件自检,检查硬件是否出现故障。如有故障,主板会发出不同含义的蜂鸣,启动中止;如无故障,屏幕会显示CPU、内存、硬盘等信息。
- ③加载带有操作系统的硬盘。将磁盘读入内存
- ④加载主引导记录MBR。主引导记录MBR告诉CPU去硬盘的哪个主分区去找操作系统。
- ⑤扫描硬盘分区表,并加载硬盘活动分区。
- ⑥加载分区引导记录PBR。其作用是寻找并激活分区根目录下用于引导操作系统的程序(启动管理器)。
- ⑦加载启动管理器
- ⑧加载操作系统
图片
六.虚拟机
- 虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,VM)
每个虚拟机器都可以独立运行一个操作系统 - 也可称为虚拟机管理程序/虚拟机监控程序Virtual Machine Monitor/Hypervisor
运行在两类虚拟机管理程序上的操作系统都称为客户操作系统,Guest OS
对于第二类虚拟机管理程序,运行在底层硬件上的操作系统称为宿主操作系统,Host OS1.第一类VMM(裸金属架构)
- 直接运行在硬件之上,能直接控制和分配物理资源
- 运行在最高特权级(Ring 0),可以执行最高特权的指令是唯一一个运行在最高特权级的程序
- 在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件
- 性能更好;虚拟机的可迁移性更差
- 可支持的虚拟机数量更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机
2.第二类VMM(寄宿架构)
- 它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程
运行在Host OS之上,依赖于Host OS为其分配物理资源 - 第二类VMM分运行在用户态、部分运行在内核态。
GuestOS发出的系统调用会被VMM截获,并转化为VMM对HostOS的系统调用 - GuestOS拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统中的一个大文件。GuestOS分配到的内存是虚拟内存。
- 首次启动时,第二类虚拟机管理程序像一台刚启动的计算机那样运转,期望找到的驱动器可以是虚拟设备。
然后将操作系统安装到虚拟磁盘上(其实只是宿主操作系统中的一个文件)
- 首次启动时,第二类虚拟机管理程序像一台刚启动的计算机那样运转,期望找到的驱动器可以是虚拟设备。
- 性能更差,需要HostOS作为”中介”;可迁移性更好,只需导出虚拟机镜像文件即可迁移到另一台HostOS上,商业化应用更广泛
- 可支持的虚拟机数量更少,Host OS本身需要使用物理资源,HostOS上运行的其他进程也需要物理资源
- 它是一个依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程
- 图片