• 计算机操作系统-第九天


    1、虚拟机

    传统计算机的特点:一台物理机器只能运行一个操作系统

    虚拟机的特点: 使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Virtual Machine,简称VM)每个虚拟机都可以独立运行一个操作系统

    虚拟机也可以被称作:虚拟管理程序、虚拟机监控程序、Virtual Machine Monitor、Hypervisor

    第一类VM:直接运行在硬件上

    特点:一台机器的硬件资源被第一类虚拟机管理程序划分为多个部分分别给各个虚拟机使用

    划分方法:CPU通过时间片的方法划分,磁盘和内存分别将自己的磁盘/内存空间进行划分

    注意事项:

    1、只有虚拟机管理程序运行在内核态中,只有它可以执行特权指令,但是上层位于用户态的操作系统仍将自己视作是处于内核态中所以它也会执行特权指令,此时当上层管理系统尝试使用特权指令时它的动作会被虚拟机管理程序截获,此时管理程序将该消息经过一系列的转换重新传递给上层操作系统让它以为自己运行成功了(楚门的世界)

    关于虚拟管理程序的拓展:

            虚拟机管理程序通过虚拟化技术创建了一个虚拟的执行环境,使得每个虚拟机实例都认为自己在独立的物理机上运行。它会对特权指令进行转换和模拟,以确保虚拟机实例之间的隔离性和安全性,这种虚拟化技术的好处包括:

    1. 多个虚拟机实例可以在同一台物理机上同时运行,提高硬件资源的利用率。
    2. 虚拟机实例之间相互隔离,互不干扰,提高了系统的安全性和稳定性。
    3. 可以在不同的操作系统之间切换和运行,方便进行开发、测试和部署。
    4. 简化了系统管理和维护的工作,提供了更灵活和可扩展的部署方式。

    第二类VM:运行在宿主操作系统上

    特点:一台机器的硬件资源仍由宿主操作系统(本台机器上原有的操作系统)进行分配,当第二类虚拟机管理程序创建虚拟机进行资源分配时仍需向宿主管理系统发出申请然后宿主操作系统为它分配硬件资源(寄生)

    第二类虚拟机管理程序(VMM):VirtualBox、VMware等

            使用第二类虚拟机管理系统时只需要在创建一台虚拟机后为虚拟机配置需要的操作系统镜像文件即可:

    两类虚拟机管理程序的对比:

    第一类VMM第二类VMM
    对物理资源的控制权直接运行在硬件上,能直接控制和分配物理资源运行在Host OS上,依赖于Host OS为其分配物理资源
    资源分配方式在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件Guest OS拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统中的一个大文件,Guest OS分配到的内存是虚拟内存
    性能性能更好性能更差,需要Host OS作为“中介”
    可支持的虚拟机数量更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机更少,Host OS本身需要使用物理资源,Host OS上运行的其他进程也需要物理资源
    虚拟机的可迁移性更差更好,只需要导出虚拟机镜像文件即可迁移到另一台Host OS上,商业化应用更广泛
    运行模式第一类VMM运行在最高特权级(Ring 0),可以执行最高特权的指令第二类VMM部分运行在用户态、部分运行在内核态,Guest OS发出的系统调用会被VMM截获,并转化为VMM对Host OS的系统调用

    关于上述最高级特权指令的解释:

    在近几年的CPU中,指令的特权级会被进一步划分为更多层次:

    环数越低,指令的权限越高 

            有了这样的划分就可以做到,将发生在上层操作系统的特权指令和第一类虚拟机管理程序中的特权指令重新划分为不敏感指令和敏感指令,当上层操作系统执行不敏感特权指令时直接执行就可以,当上层操作系统要执行敏感特权指令时该行为就会被第一类虚拟机管理程序所解惑(原本的条条都检查到现在的只看重点)

    ~over~

  • 相关阅读:
    docker介绍、安装及卸载
    Redis订阅发布
    java计算机毕业设计基于安卓Android微信的学生家庭个人支出管理小程序 uniAPP
    MySQL 5.7 安装教程(全步骤、保姆级教程)
    Shell脚本学习指南(五)——变量、判断、重复动作
    基于Spring boot轻松实现一个多数据源框架
    Spring Boot中如何接入jetcache缓存
    Logrus日志框架:简介与入门指南
    Elasticsearch:什么是检索增强生成 - RAG?
    知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - Java SpringBoot 操作 Neo4j
  • 原文地址:https://blog.csdn.net/m0_73975164/article/details/133876865