操作系统-虚拟机(传统计算机 虚拟机 两类VMM对比 指令等级 特权与敏感)

文章目录

  • 传统计算机
  • 虚拟机
  • VMM的对比
  • 支持虚拟化的CPU通常分更多指令等级(特权 敏感)

传统计算机

传统物理机只有一个操作系统
两个进程在一个操作系统上运行会存在一些隐患(相互影响 争夺资源等)
解决方法:如果各个进程在不同操作系统)(不同物理机),那就不存在这些隐患了。但这样浪费了物理机的硬件资源,因为一个物理机可能可以运行多个进程

虚拟机

第一类是VMM管理硬件资源,把硬件资源分配给各个虚拟机
单核CPU可以通过划分时间片从而不同虚拟机对应不同时间片使用,这样看来就是一个独立CPU(其实就是讲CPU的某些时间片分配给虚拟机而已)磁盘和内存都是划分区域给不同虚拟机
VMM运行在内核态,可以使用特权指令,虚拟机的内核态和用户态运行在客户态
虚拟机的操作系统以为自己在内核态,当其使用特权指令时,会被VMM截获,然后VMM会将该特权指令进行等价转换,使得虚拟机以为自己执行成功了,
在这里插入图片描述

第二类是VMM是作为一个进程运行在操作系统上,VMM需要向操作系统请求分配硬件资源,然后VMM进行再分配。硬件资源的管理者依然是宿主操作系统

注意两类虚拟机的运行都是相当于宿主机的一个进程
在这里插入图片描述

VMM的对比

资源分配方式:第一类直接得到物理地址,划分分配给虚拟机后虚拟成其虚拟机的虚拟地址,第二类VMM会向Host OS申请一个大的虚拟空间,这个再去划分分配给各个虚拟机(内外存都是虚拟地址的),然后虚拟机将得到的这个虚拟地址(虚拟机将这个看为物理地址,所以还需转为虚拟地址)还需虚拟一次为其虚拟机所认为的虚拟地址

支持的虚拟机数量:第一类没有宿主操作系统,也没有宿主操作系统的进程,完全是运行各个进程虚拟机,所以虚拟机占用大部分硬件资源,支持更多的虚拟机。第二类宿主操作系统和宿主操作系统的进程都需要硬件资源,所以虚拟机可利用的虚拟资源相对来说较少,自然支持的虚拟机数量更少

可迁移性:第一类虚拟机是获得物理地址的,如果迁移到别的VMM,其相关的物理地址要求比较繁琐。而第二类虚拟机是获得宿主操作系统分配的虚拟地址的,这个要求比较容易满足。

运行模式:第一类假设VMM在ring0,虚拟机操作系统在ring1,虚拟机用户空间在ring2,此时根据指令类型跳转到不同地方执行,此时可以认为将特权指令分为ring1和ring0,将不敏感指令防在ring1(对虚拟机操作系统做相关要求即可实现ring1指令会跳转到虚拟操作系统执行),敏感指令放在ring0,这样对于跳转到VMM的指令就比较少了,同时切换VMM次数自然也就少了。第二类VMM一部分在内核一部分在用户,此时系统调用类似套娃,虚拟机应用呈现发出系统调用后转换到虚拟机内核态,虚拟机操作系统再将该系统调用给VMM,VMM再向宿主操作系统请求。
在这里插入图片描述

支持虚拟化的CPU通常分更多指令等级(特权 敏感)

特权指令通常包括敏感指令。

在虚拟化技术中,特权指令和敏感指令都是与CPU的运行权限和资源管理紧密相关的概念。具体来说:

特权指令:是指那些只能在最高特权级别(通常是内核模式或环0)执行的指令。这些指令能够访问和操作计算机的关键资源,如内存管理单元、I/O设备等。
敏感指令:是指在虚拟化环境中,虚拟机监视器(VMM)需要捕获并模拟的指令,以便客户操作系统能够在没有直接访问硬件的情况下运行。
在大多数情况下,敏感指令确实是特权指令,因为它们通常涉及到对关键系统资源的访问和管理。例如,对于RISC处理器(如MIPS、PowerPC、SPARC),敏感指令是特权指令的一部分。然而,在x86架构中,虽然绝大多数敏感指令是特权指令,但也存在一些敏感而非特权的指令,这些指令在执行时不会自动触发陷阱(Trap)被VMM捕获。

总的来说,特权指令和敏感指令在虚拟化技术中都扮演着重要的角色,它们确保了系统的安全性和稳定性。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/427361.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker部署

Docker简介 Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。 &a…

HCIP 交换

拓扑图&IP划分如下: 第一步,配制VLAN LSW1,LSW2&LSW3同理 检测 LSW1 LSW2 测试

硬件之相机选型

1. 相机成像原理 相机成像原理如图所示: 注: 当物距为无穷远时,像距等于焦距,成像在焦平面上;当物距为无穷无与两倍焦距之间时,像距在焦距与两倍焦距之间,成缩小的实像;当物距等于两…

MySQL的主从复制

主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制, 从库同时也可…

什么是JMeter?我们为什么要用JMeter做性能测试

什么是JMeter?我们为什么要用JMeter做性能测试 什么是JMeter?为什么选择JMeterJMeter的优点JMeter是如何工作的 什么是JMeter? Apache JMeter TM是纯Java开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在…

使用模方时,使用手动备份功能恢复备份前的状态没有效果,是什么原因?

在使用备份恢复时,鼠标应点击在要恢复的瓦块上,再点击还原备份;见下图: 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建…

【Web前端开发基础】前端基础布局之百分比布局、flex布局

前端基础布局 目录 前端基础布局布局简介盒模型1. 标准盒模型2. 怪异盒模型3. 解决方案4. 代码示例 常见的布局单位百分比布局flex布局一、Flex布局是什么?二、基本概念三、容器属性flex-direction属性:决定主轴的方向(即项目的排列方向&…

SwiftUI 打造酷炫流光边框 + 微光滑动闪烁的 3D 透视滚动卡片墙

功能需求 有时候我们希望自己的 App 能向用户展示与众不同、富有创造力的酷炫视觉效果: 如上图所示,我们制作了一款流光边框 + 微光滑动闪烁的 3D 透视卡片滚动效果。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求1. 3D 透视滚动2. 灵动边框流光效果3. 背景…

《幻兽帕鲁》被指AI缝合,开发过程疑点重重,最后附游戏安装教程

由日本游戏工作室Pocketpair开发的《Palworld / 幻兽帕鲁》毫无疑问成为了2024年的首个巨热游戏!上周五(2024年1月19日)游戏上线抢先体验,仅在3天内销量就已突破400万!并于2024年1月21日创下了1291967名同时在线玩家的…

一种解决常用存储设备无法被电脑识别的方法

一、通用串行总线控制器描述 通用串行总线(Universal Serial Bus,简称USB),是连接电脑与设备的一种序列总线标准,也是一种输入输出(I/O)连接端口的技术规范,广泛应用于个人电脑和移动…

前沿重器[41] | 综述-面向大模型的检索增强生成(RAG)

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…

生命在于折腾——WeChat机器人的研究和探索

一、前言 2022年,我玩过原神,当时看到了云崽的QQ机器人,很是感兴趣,支持各种插件,查询游戏内角色相关信息,当时我也自己写了几个插件,也看到很多大佬编写的好玩的插件,后来因为QQ不…