操作系统-虚拟机(传统计算机 虚拟机 两类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.mzph.cn/news/643040.shtml

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

相关文章

[Linux]HTTP状态响应码列举

1xx:信息响应类,表示接收到请求并且继续处理 2xx:处理成功响应类,表示动作被成功接收、理解和接受 3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理 4xx:客户端错误&#x…

Elasticsearch:使用 Gemini、Langchain 和 Elasticsearch 进行问答

本教程演示如何使用 Gemini API创建 embeddings 并将其存储在 Elasticsearch 中。 我们将学习如何将 Gemini 连接到 Elasticsearch 中存储的私有数据,并使用 Langchian 构建问答功能。 准备 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasticsearch 及 Ki…

HIVE中关联键类型不同导致数据重复,以及数据倾斜

比如左表关联键是string类型,右表关联键是bigint类型,关联后会出现多条的情况 解决方案: 关联键先统一转成string类型再进行关联 原因: 根据HIVE版本不同,数据位数上限不同, 低版本的超过16位会出现这种…

微信小程序底部按钮适配iPhoneX以上,显示遮挡问题

只需要在给底部按钮加个样式 /* 底部导航栏容器 */ .button-box {/* 使用 safe-area-inset-bottom 属性适配 iPhone X 及以上型号设备 */padding-bottom: constant(safe-area-inset-bottom);padding-bottom: env(safe-area-inset-bottom);/* 其他样式属性 */ }iPhone6/7/8效果 …

vue全局公共样式

vue公共样式代码存放在/src/styles文件夹里 index里引入其他组件公共样式,index.scss文件内容如下: import ./sidebar.scss; import ./searchForm.scss;body {height: 100%;-moz-osx-font-smoothing: grayscale;-webkit-font-smoothing: antialiased;t…

hcip高级网络知识

一:计算机间信息传递原理 抽象语言----编码 编码---二进制 二进制---转换为电流(数字信号) 处理和传递数字信号 二:OSI--七层参考模型 ISO--1979 规定计算机系统互联的组织: OSI/RM ---- 开放式系统互联参考模型 --- 1…

【模拟】力扣38(Java)

题目 class Solution {public String countAndSay(int n) {String ret "1";for(int i1;i<n;i)//解释n-1次ret{StringBuffer tmp new StringBuffer();int len ret.length();for(int left 0,right 0;right<len;){//双指针while(right < len &&…

力扣精选算法100道——x的平方根(二分查找专题)

x的平方根 首先看到这个题目的时候&#xff0c;我们需要对上一个二分查找专题的题目进行深度理解&#xff0c;然后了解模板&#xff0c;这题是完全利用的上一题的模板知识进行&#xff0c;如果直接看这个题目可能是有点懵的&#xff0c;因为我这里直接利用模板进行解题。力扣…

了解HTTP/1.1、HTTP/1.0 和 HTTP/2.0

HTTP/1.1、HTTP/1.0 和 HTTP/2.0 是超文本传输协议&#xff08;HTTP&#xff09;的三个主要版本 先解释一下什么是超文本协议 超文本传输协议&#xff08;HyperText Transfer Protocol&#xff0c;简称 HTTP&#xff09;是互联网上应用最广泛的一种网络协议。设计 HTTP 的初衷是…

在Ubuntu上安装pycuda记录

1. 安装CUDA Toolkit 11.8 从MZ小师妹的摸索过程来看&#xff0c;其他版本的会有bug&#xff0c;12.0的版本太高&#xff0c;11.5的太低&#xff08;感谢小师妹让我少走弯路&#xff09; 参考网址&#xff1a;CUDA Toolkit 11.8 Downloads | NVIDIA Developer 在命令行输入命…

尝试为ssrf漏洞编写黑名单与白名单

以pikachu靶场ssrf&#xff08;curl&#xff09;为例&#xff1a; 你会发现什么也没防御项访问基本的文件内容&#xff0c;端口开放都是可以看到的&#xff0c;没有任何防御措施。 我们去查看一下他的源码有没有过滤什么 没有任何过滤&#xff0c;咱么尝试进行过滤一下&#xf…

2024美赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

peer eslint-plugin-vue@“^7.0.0“ from @vue/eslint-config-standard@6.1.0

问题&#xff1a; 用vue/cli脚手架安装项目时&#xff0c;选择ESlint&#xff0c;再安装依赖包的时候&#xff0c;会报以下错误&#xff0c; 原因&#xff1a; npmV7 之前的版本遇到依赖冲突时&#xff0c;会忽视冲突&#xff0c;继续安装&#xff1b; npmV7版本开始不再自动忽…

java web servlet 学习系统进度管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web学习系统进度管理系统是一套完善的java web信息管理系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环 境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为…

Vue中$watch()方法和watch属性的区别

vue中$watch()和watch属性都是监听值的变化的&#xff0c;是同一个作用&#xff0c;但是有两个不同写法。 用法一&#xff1a; //注意&#xff1a;这种方法是监听不到对象的变化的。 this.$watch((newVal,oldVal)>{ }) 用法二&#xff1a; watch:{xxx:(newVal,oldVal)>…

NodeJS安装教程

1、 官网下载安装包 可以自己在官网下载 Node.Js中文网 https://nodejs.p2hp.com/ 2、安装步骤 1、双击安装包&#xff0c;一直点击下一步。 2、点击change按钮&#xff0c;更换到自己的指定安装位置&#xff0c;点击下一步&#xff08;不修改默认位置也是可以的 &#xf…

Simulink|光伏并网逆变器低电压穿越仿真模型

目录 主要内容 模型研究 1.模型总览 2.boost模块 3.Inverter模块 4.控制模块 5.信号模块 结果一览 下载链接 主要内容 该模型为光伏逆变器低电压穿越仿真模型&#xff0c;采用boost加NPC拓扑结构&#xff0c;基于MATLAB/Simulink建模仿真。模型具备中点平衡…

openai assistants api接入微信机器人,实现类GPTs功能

chatgpt网址:https://chat.xutongbao.top 比普通gpt多了代码解释器功能&#xff0c;和上传训练数据文件的功能&#xff0c;这两个功能就是GPTs拥有的&#xff0c;而普通gpt没有拥有的

Linux系统Shell脚本 ----- 编程规范和变量详细解读

一、Shell脚本概述 1、什么是Shell Linux系统中运行的一种特殊程序在用户和内核之间充当“翻译官”用户登录Linux系统时&#xff0c;自动加载一个Shell程序Bash是Linux系统中默认使用的Shell程序 2、Shell的作用 Linux系统中的shell是一个特殊的应用程序&#xff0c;它介于操…

商城系统中30分钟未付款自动取消订单怎么实现(简单几种方法)

实现以上功能 方法1&#xff1a;定时任务批量执行 写一个定时任务&#xff0c;每隔 30分钟执行一次&#xff0c;列出所有超出时间范围得订单id的列表 AsyncScheduled(cron "20 20 1 * * ?")public void cancelOrder(){log.info("【取消订单任务开始】"…