计算机系统概述

1. 操作系统的基本概念

1.1 操作系统的概念

操作系统(OS):是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。

操作系统(一)——计算机系统概述——操作系统层次结构.png

注意:操作系统是最接近硬件的一层软件。

1.2 操作系统的特征

1.2.1 并发

并发:并发是指两个或多个事件在同一时间间隔内发生。(宏观上是同时发生的,微观上是交替的。

并发与并行的辨析:

​ (1)并行性指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。而并发性在同一时刻只能运行一种工作。

​ (2)并发之所以让人类感觉工作是在同时进行的,是因为并发运行交替速度过快,所以人类在感官上觉得是在同时运行。

操作系统(一)——计算机系统概述——并发.png

1.2.2 共享

共享:即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

两种共享方式:

  1. 互斥共享

    系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。这种资源共享方式称为互斥共享。而将在一段时间内只允许一个进程访问的资源称为临界资源

  2. 同时访问

    系统中的某些资源,允许同一个时间段内由多个进程”同时“进行访问。注意,”同时”通常是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问即“分时共享”的。

1.2.3 虚拟

虚拟:虚拟是指将一个物理上的实体变为若干逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。用于实现虚拟的技术称为虚拟技术。

虚拟技术:时分复用技术(如虚拟处理器)、空分复用技术(如虚拟存储器)

  1. 时分复用技术:通过多道程序设计技术,让多道程序并发执行,来分时使用一个处理器。此时,虽然只有一个处理器,但它能同时为多个用户服务,使每个终端用户都感觉有一个CPU在专门为它服务。利用多道程序设计技术将一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器。
  2. 空分复用技术:采用虚拟存储器技术将一台机器的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。当然,这时用户所感觉到的内存容量是虚的。我们将用户感觉到(但实际不存在)的存储器称为虚拟存储器。

1.2.4 异步

异步:多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。

举例:程序A、B并发执行,两道程序都有占用CPU的指令,如果A先执行占用CPU了,此时B并发的执行到占用CPU指令时,B会停止运行进行等待,等待A将CPU资源释放,B才会占用CPU。例如打印机,两个人同时使用,但A已经在打印,B需要等A打印完才可使用打印机。

1.2.5 小结

(1)共发和共享是操作系统两个最基本的特征,两者之间互为存在的条件。资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题;若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行。

(2)如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义。因此,没有并发性就谈不上虚拟性。

(3)如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。

操作系统(一)——计算机系统概述——特征总结.png

1.3 操作系统的目标和功能

为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系统,还必须向用户提供接口。同时,操作系统可用来扩充机器,以提供更方便的服务、更高的资源利用率。

1.3.1 操作系统作为计算机系统资源的管理者

操作系统作为计算机系统资源的管理者提供四种功能,分别是处理机管理、存储器管理、设备管理和文件管理。目标是为了程序运行安全、高效。

(1)处理机管理

处理机管理也称进程管理,在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。

注意区分处理机和处理器:

​ 处理机:是处理计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。

​ 处理器:作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

(2)存储器管理

存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率。

(3)文件管理

计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。

(4)设备管理

设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率。

补充知识点:每一个程序执行前都需要将该程序放到内存中,才能被CPU处理。

1.3.2 操作系统作为用户与计算机硬件系统之间的接口

硬件只能听得懂二进制指令,所以在硬件之上安装了操作系统,操作系统把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。

操作系统提供的接口主要分为两类:命令接口与程序接口。

(1)命令接口(用户利用这些操作命令来组织和控制作业的执行。):使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。

​ 联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口。用户每输入一条命令,控制权就转给操作系统的命令解释程序。(用户说一句系统跟着做一句。)

​ 脱机命令接口:又称批处理命令接口,适用于批处理系统,它由一组作业控制命令组成。脱机用户不能直接干预作业的运行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。(用户说一堆,系统做一堆。)

(2)程序接口(编程人员可以使用它们来请求操作系统服务):程序接口由一组系统调用(也称广义指令。系统调用类似于函数调用,是应用程序请求操作系统服务的唯一方式。)组成。用户通过在程序中使用这些系统调用来请求操作系统为其提供服务。(普通用户不能直接使用,只能通过程序代码间接使用。)当前最流行的是图形用户界面(GUI),即图形接口。

1.3.3 操作系统实现了对计算机资源的扩充

没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强,使用更方便的机器。通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机

1.3.4 小结

操作系统(一)——计算机系统概述——操作系统功能.png

2. 操作系统的发展与分类

2.1 手工操作阶段(此阶段无操作系统)

手工操作阶段用户在计算机上算题的所有工作都要人工干预。

手工操作阶段有两个突出的缺点:

  1. 用户独占全机,资源利用率低。
  2. CPU等待手工操作,CPU的利用不充分。

对于手工操作阶段的缺点,唯一的解决办法是用高速的机器代替相对较慢的手工操作来对作业进行控制。

操作系统(一)——计算机系统概述——手工操作阶段.png

2.2 批处理阶段(操作系统开始出现)

为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。按发展历程又分为单道批处理系统、多道批处理系统(多道程序设计技术出现以后)。

2.2.1 单道批处理系统(操作系统的雏形)

为实现对作业的连续处理,要先将一批作业以脱机方式输入磁带,并在系统中配上监督程序,再其控制下,使这批作业能一个接一个地连续处理。虽然系统对作业的处理是成批的,但内存中始终保持一道作业。这就是单道批处理系统

单道批处理系统主要特征:

  1. 自动性。自动运行作业。
  2. 顺序性。磁带上各道作业按顺序地进入内存。
  3. 单道性。内存中仅有一道程序运行。

单道批处理系统面临的问题:每次主机内存中仅存放一道作业,每当它在运行期间发出输入/输出请求后,高速的CPU便处于等待低速的I/O完成的状态。为了进一步提高资源的利用率和系统的吞吐量,所以引入了多道程序技术。

操作系统(一)——计算机系统概述——单道批处理.png

2.2.2 多道批处理系统(操作系统正式诞生)

多道批处理系统:在内存中存放多道程序,当某道程序因某种原因如执行I/O操作时而不能继续运行放弃CPU时,操作系统便调度另一程序运行,这样CPU就尽量忙碌,达到提高系统效率的目的。

多道程序设计的特点:

  1. 多道。计算机内存中同时存放多道相互独立的程序。
  2. 宏观上并行。同时进入系统的多道程序都处于运行过程中,但都未运行完毕。
  3. 微观上串行。内存中的多道程序轮流占有CPU,交替执行。

多道程序设计的优点:资源利用率高;系统吞吐量大。

多道程序设计的缺点:用户响应时间长;不提供人机交互能力。

操作系统(一)——计算机系统概述——多道批处理.png

2.3 分时操作系统

分时操作系统:是指将处理器的运行时间分成很短的时间片,按时间片轮流将处理器分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成计算,则该作业暂时停止运行,将处理器让给其它作业使用,等待下一轮在继续运行。

分时操作系统的主要特征:

  1. 同时性。多个用户可以同时使用一台计算机。
  2. 交互性。可以进行人机交互。
  3. 独立性。系统中多个用户可以彼此独立地进行操作,互不干扰。
  4. 及时性。用户请求能在很短时间内获得响应。

分时操作系统的缺点:不能优先处理一些紧急任务。在一些场合需要系统能对外部信号在规定时间内做出处理,为此操作系统在某些场合就要优先处理某些程序。

操作系统(一)——计算机系统概述——分时操作系统.png

2.4 实时操作系统

为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统。这里的时间限制分为两种情况,若某个动作必须绝对地在规定的时刻(或规定的时间范围)发生,则称为硬实时系统。若能够偶尔接受违反时间规定且不会引起任何永久性的损害,则称为软实时系统

在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并在严格的时限内处理完接收的事件。

实时操作系统的主要特点·:及时性和可靠性。

操作系统(一)——计算机系统概述——实时操作系统.png

2.5 其它几种操作系统(了解)

(1)网络操作系统:将计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各计算机之间数据的互相传送。网络操作系统最主要的特点是网络中各种资源的共享及各台计算机之间的通信。

(2)分布式计算机系统:分布式计算机系统由多台计算机组成,且系统中任意两台计算机通过通信方式交换信息;系统中的每台计算机都具有同等的地位;系统中每台计算机上的资源为所有用户共享;系统中任意台计算机都可以构成一个子系统;任何工作都可以分布在几台计算机上。用于管理分布式计算机系统的操作系统称为分布式计算机系统。该系统的主要特点:分布性和并行性。

(3)个人计算机操作系统:个人计算机操作系统是目前使用最广泛的操作系统,常见的有Windows、linux。

操作系统(一)——计算机系统概述——其它操作系统.png

2.6 小结

操作系统(一)——计算机系统概述——操作系统发展历程.png

手工阶段,计算机造价昂贵,但工作时却有大量时间处于空闲状态,为了解决这个问题人类发明了单道批处理系统。单道批处理系统虽然较手工阶段资源利用率有所提升,但仍有大量空闲时间等待I/O操作完成,资源利用率仍然很低。为了进一步提高资源利用率,人类发明了多道批处理系统。这个阶段操作系统正式诞生,但在这阶段,用户无法进行程序调试,所以为了实现人机交互,人类发明了分时操作系统。分时操作系统给每个用户分配相同的时间段,导致不能优先处理一些紧急任务,为了解决这个问题,于是发明了实时操作系统

操作系统(一)——计算机系统概述——操作系统发展小结.png

3. 操作系统的运行环境

3.1 处理器运行模式

3.1.1 内核程序&应用程序

在计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(系统外层的应用程序,简称应用程序)。

我们普通程序员写的程序是“应用程序”,而像微软公司有一部分人负责实现操作系统,他们写的就是“内核程序”。很多内核程序就组成了“操作系统内核”,简称“内核”

内核是操作系统最重要最核心的部分,也是最接近硬件的部分。

对于操作系统内核程序和用户自编程序,前者是后者的管理者,因此“管理程序”(内核程序)要执行一些特权指令,而“被管理程序”(用户自编程序)出于安全考虑不能执行这些特权指令。

3.1.2 特权指令&非特权指令

特权指令:是指不允许用户直接使用的指令,如I/O指令、关中断指令等。(内核程序使用)

非特权指令:是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这是为了防止用户程序对系统造成破坏。(应用程序使用)

注意:CPU在设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。

3.1.3 内核态&用户态

CPU的运行模式划分为两态:用户态(又称目态)和核心态(又称管态、内核态)。

用户态:不能直接使用系统资源,也不能改变 CPU 的工作状态,并且只能访问这个用户程序自己的存储空间。(运行应用程序,只能执行非特权指令。)

内核态:系统中既有操作系统的程序,也有普通用户程序。为了安全性和稳定性,操作系统的程序不能随便访问,这就是内核态。即需要执行操作系统的程序就必须转换到内核态才能执行。(运行内核程序,可以执行特权指令。)

拓展:CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。

操作系统(一)——计算机系统概述——内核态用户态切换.png

3.1.4 运行机制小结

操作系统(一)——计算机系统概述——运行机制.png

3.2 中断和异常

在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态如何切换。要想使用户程序实现核心态功能,就需要通过中断或异常。发生中断或异常时,运行用户态的CPU会立即进入核心态,而CPU进入核心态是通过硬件实现的(可参考3.1.3中的核心态、用户态切换)。

3.2.1 中断和异常的定义

中断:又称外中断,是指来自CPU执行指令外部的事件,通常用于信息输入输出。

异常:又称内中断,是指来自CPU执行指令内部的时间,如程序的非法操作码,地址越界,陷入指令等。

注意:

异常和中断是计算机科学和工程领域中两个不同的概念,尽管它们在某些方面有相似之处,但并非彼此包含。

异常通常是在程序运行过程中,由于某种错误或不可预期的情况而发生的,它会中断程序的正常执行流程。异常处理机制是程序设计中用来处理运行时错误的重要部分,它允许程序在遇到问题时能够以一种可控的方式做出响应,而不是简单地崩溃。

而中断则更多地涉及到硬件和操作系统的交互。在计算机科学中,中断是一种由CPU外部的设备或事件触发的信号,要求CPU暂停当前正在执行的程序,转而处理这个中断请求。中断处理完毕后,CPU会返回到被中断的程序继续执行。中断常用于实现设备之间的通信、处理硬件事件等。

因此,虽然异常和中断都会导致程序或CPU的运行流程发生变化,但它们产生的原因、处理方式和应用场景是不同的。异常主要关注于程序运行时的错误处理,而中断则涉及到硬件和操作系统的交互。所以,异常并不是中断的一部分,它们是两个独立的概念。

3.2.2 中断和异常的分类

外中断可分为可屏蔽中断和不可屏蔽中断:

  1. 可屏蔽中断:指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。
  2. 不可屏蔽中断:指通过NMI线发出的中断请求,通常是紧急的硬件故障。

异常可分为故障、自陷和终止:

  1. 故障(Fault):通常是由指令执行引起的异常。
  2. 自陷(Trap,又称陷入):是一种事先安排的“异常”事件,用于在用户态下调用操作系统内核程序,如条件陷阱指令、系统调用指令等。
  3. 终止(Abort):是指出现了使得CPU无法继续执行的硬件故障,如控制器出错、存储器校验错等。

注意:

(1)故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断

(2)有时候应用程序想请求操作系统内核的服务,会执行一条特殊的指令——陷入指令。执行“陷入指令”意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用就是通过陷入指令完成的”。

操作系统(一)——计算机系统概述——中断分类.png

3.2.3 中断的作用

操作系统(一)——计算机系统概述——中断的作用.png

3.2.4 中断的基本原理

操作系统(一)——计算机系统概述——中断机制的基本原理.png

3.2.5 中断小结

操作系统(一)——计算机系统概述——中断小结.png

3.3 系统调用

3.3.1 系统调用的定义及性质

系统调用:指用户在程序中调用操作系统所提供的一些子功能,它可被视为特殊的公共子程序。

操作系统(一)——计算机系统概述——系统调用.png

3.3.2 系统调用的功能

(1)设备管理。完成设备的请求或释放,以及设备启动等功能。

(2)文件管理。完成文件的读、写、创建及删除等功能。

(3)进程控制。完成进程的创建,撤销,阻塞及唤醒等功能。

(4)进程通信。完成进程之间的消息传递或信号传递等功能。

(5)内存管理。完成内存的分配,回收以及获取作业占用内存区大小和起始地址等功能。

操作系统(一)——计算机系统概述——系统调用功能.png

3.3.3 系统调用的过程

第一步:用户程序首先将系统调用号和所需的参数压入堆栈;接着,调用实际的调用指令,然后执行一个陷入指令,将CPU状态从用户态转为核心态,再后由硬件和操作系统内核程序保护被中断进程的现场,将程序计数器(PC)、程序状态字(PSW)及通用寄存器内容等压入堆栈。

第二步:分析系统调用类型,转入相应的系统调用处理子程序。在系统中配置了一张系统调用入口表,表中每个表项都对应一个系统调用,根据系统调用号可以找到该系统调用处理子程序的入口地址。

第三步:在系统调用处理子程序执行结束后,恢复被中断的或设置新进程的CPU现场,然后返回被中断进程或新进程,继续往下执行。

补充:

  1. 陷入指令是非特权指令,在用户态执行,执行陷入指令后立即引发一个内中断,使CPU进入核心态。
  2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。
操作系统(一)——计算机系统概述——系统调用过程.png

3.3.4 系统调用小结

操作系统(一)——计算机系统概述——系统调用小结.png

4. 操作系统体系结构

4.1 内核

4.1.1 内核的定义

内核:指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本,最核心的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。

简单来说,内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。

内核就是操作系统背后黑盒的核心

操作系统(一)——计算机系统概述——操作系统内核.png

4.1.2 大内核&微内核

从操作系统的内核架构来划分,可分为宏内核和微内核。

宏内核:又称单内核或大内核,是指将系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。

微内核:是指将内核中最基本的功能保留在内核,而将那些不需要再核心态执行的功能移到用户态执行,从而降低内核的设计复杂性。

操作系统(一)——计算机系统概述——内核.png 操作系统(一)——计算机系统概述——大内核和微内核详细图解.png

4.1.3 宏内核和微内核的比较

宏内核 微内核
通信效率 高(函数调用) 低(进程间的通信)
稳定性 低(模块集成在一起) 高(模块间互不影响)
扩展性 低(模块集成在一起) 高(模块间互不影响)
代码量 多(需要实现所有模块) 少(只需要实现核心功能)

4.1.4 补充知识——混合内核和外内核

混合内核:看了宏内核和微内核的实现,就会发现,两者各有千秋,也各有缺点,所以混合内核就是集中了两者的特点,让微内核中的一些核心模块运行在内核中,从而使内核效率更高一些。

外内核:外内核是把硬件暴露给应用程序,应用程序可以直接访问硬件,外内核对系统提供保护。目前还在研究阶段。

4.1.4 内核小结

操作系统(一)——计算机系统概述——内核小结.png

4.2 分层结构

分层结构是将操作系统分为若干层,底层(0层)为硬件,顶层(层N)为用户接口。每层只能调用紧邻它的低层的功能和服务(单向依赖)。

操作系统(一)——计算机系统概述——分层操作系统.png

分层的优点:

  1. 便于系统的调试和验证。
  2. 易扩充和易维护。

分层的缺点:

  1. 合理定义各层比较困难。
  2. 效率较差。

4.3 模块化结构

模块化结构是将操作系统按功能划分为若干具有一定独立性的模块(将内核划分为多模块)。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。

操作系统(一)——计算机系统概述——模块化.png

4.4 外核

外核是针对不同的上层软件定制化开发对应的内核部分,它并不提供通用的服务能力,而是和应用程序联合起来作为一个整体,对用户程序提供操作硬件的能力,进而提高计算性能。外核操作系统提供对硬件资源的应用程序级别的管理,通过向应用程序提供一系列库文件的方式来实现这一目的。程序在编译时连接上这些库文件,就获得了操作硬件的能力。这种资源保护与管理的分离使得应用程序能够方便地扩展系统抽象层。

插一句,在操作系统中,外核和外内核是同一个概念。外内核(外核系统)也被称为纵向结构操作系统,它的设计理念是让用户程序的设计者来决定硬件接口的设计。外内核本身非常小,通常只负责系统保护和系统资源复用相关的服务。它允许应用程序直接访问硬件,比如直接请求一块特定的物理空间或磁盘块(外核能给用户直接分配一个未经抽象的系统资源)。由于外核系统只提供比较低级的硬件操作,没有提供高级的硬件抽象,因此需要额外的运行库支持来为用户提供完整的功能。

总的来说,外核(外内核)在操作系统中是一个特定的设计概念,旨在改变应用程序与硬件的交互方式,提高系统的性能和灵活性。

4.5 总结

操作系统(一)——计算机系统概述——操作系统结构小结.png

5. 操作系统引导

操作系统是一种程序,程序以数据的形式存放在硬盘中,而硬盘通常分为多个区,一台计算机中又可能有多个或多种外部存储设备。操作系统引导是指计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统。

常见操作系统引导过程:

  1. 激活CPU。
  2. 硬件自检。
  3. 加载带有操作系统的硬盘。
  4. 加载主引导记录。
  5. 扫描硬盘分区表。
  6. 加载分区引导记录。
  7. 加载启动管理器。
  8. 加载操作系统。
操作系统(一)——计算机系统概述——操作系统引导.png

注:完整的操作系统初始化程序(即启动管理器)可在根目录下找到。

6. 虚拟机

6.1 虚拟机的基本概念

虚拟机是指利用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境。有两类虚拟化方法,分别是第一类虚拟机管理程序和第二类虚拟机管理程序。

操作系统(一)——计算机系统概述——虚拟机.png

6.1.1 第一类虚拟机管理程序

第一类虚拟机管理程序就像一个操作系统,它不需要安装在实际的操作系统之上,在实际使用它的时候,它作为一个中间层,下面是运行操作系统需要的各种硬件,上面就是虚拟机需要支持的各种系统(windows,linux),操作系统们通过第一类虚拟机管理程序来完成对硬件的调用。

虚拟机作为用户态的一个进程运行,不允许执行敏感指令。然而,虚拟机上的操作系统认为自己运行在内核态(实际上不是),称为虚拟内核态。虚拟机中的用户进程认为自己运行在用户态(实际上确实是)。

当虚拟机操作系统执行了一条CPU处于内核态才允许执行的指令时,会陷入虚拟机管理程序。在支持虚拟化的CPU上,虚拟机管理程序检查这条指令是由虚拟机中的操作系统执行的还是由用户程序执行的。如果是前者,虚拟机管理程序将安排这条指令功能的正确执行;如果是后者,虚拟机管理程序将模拟真实硬件面对用户态执行敏感指令时的行为。

在过去不支持虚拟化的CPU上,真实硬件不会直接执行虚拟机中的敏感指令,这些敏感指令被转为对虚拟机管理程序的调用,由虚拟机管理程序模拟这些指令的功能。

6.1.2 第二类虚拟机管理程序

第二类虚拟机管理程序依赖于Windows、Linux等操作系统分配和调度资源的程序,很像一个普通的进程。它仍然把自己伪装成具有CPU和各种设备的完整计算机,实际上还是需要运行它的操作系统来提供大量的功能。当它启动的时候,也会像真实的操作系统启动那样,寻找DVD,U盘,CD-ROM。然后虚拟机管理程序运行DVD上的安装程序,把操作系统安装到虚拟磁盘中(虚拟机管理程序假装从DVD驱动器中读取操作系统的ISO文件,然后再安装这个操作系统,而这个ISO文件实际上是作为文件保存在计算机上的,同时,这个虚拟磁盘也是计算机中的一个文件,这也就印证了上面提到的伪装的说法,把自己的各种操作伪装成真实计算机操作的样子)。

运行在两类虚拟机管理程序上的操作系统称为客户操作系统。对于第二类虚拟机管理程序,运行在底层硬件上的操作系统称为宿主操作系统

6.2 虚拟机小结

操作系统(一)——计算机系统概述——虚拟机小结.png

注意:有的教材会将第一类虚拟化技术称为裸金属架构,将第二类虚拟化技术称为寄居架构