虚拟机技术

news2024/11/19 15:31:48

基础知识

虚拟机技术

  • 虚拟机就是通过软件在宿主机上虚拟出一台计算机。虚拟机技术是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。一般所指的虚拟化资源包括计算能力和数据存储。
  • 虚拟机技术实现了一台计算机同时运行多个操作系统,而且每个操作系统中都有多个程序运行,每个操作系统都运行在一个虚拟的CPU或虚拟主机上。虚拟机技术需要 CPU、主板芯片组、BIOS和软件的支持,如VMM软件或者某些操作系统本身。

虚拟机监视器VMM (Virtual Machine Monitor)

  • 虚拟机技术的核心是虚拟机监视器VMM (Virtual Machine Monitor) , VMM也称为Hyper visor. VMM的作用是向底层分配访问宿主机的硬件资源,向上管理虚拟机的操作系统和应用程序。它是一个宿主程序,该程序是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机,实现一台计算机支持多个完全相同的执行环境。每个用户都会感觉到自己在一台独立的、与其他用户相隔离的计算机上进行操作,尽管事实上为每个用户提供服务的都是同一台机器。
  • 在此种情况下,一台虚拟机就是由一个潜在的控制程序管理的操作系统。VMM为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器、内存、I/O 设备等)。VMM采用某种调度算法在各个虚拟机之间共享CPU, 如采用时间片轮转调度算法。

操作系统内核

  • “内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。

CPU特权级别

  • 在操作系统和计算机体系结构中,CPU Ring 0-3是特权级别或执行环级别。这些特权级别用于控制和管理计算机系统的访问权限和安全性。在x86架构中,通常有四个特权级别,也称为四个环(rings)。每个环都有不同的权限和访问级别。不同架构的CPU特权级别设置不同。
  • 以x86为例,CPU Ring 0-3权限依次递减。
  • Ring 0是操作系统内核运行的特权级别。在这个环级别下,操作系统具有最高的权限,可以访问所有的硬件资源和指令。操作系统在Ring 0中运行,以便执行敏感和特权操作,如管理内存、硬件设备、进程调度等。用户程序不能直接运行在Ring 0级别。Ring 3(用户态):
  • Ring 3是用户程序运行的特权级别。在这个环级别下,用户程序只能访问有限的资源,不能直接执行敏感的特权指令。这样设计是为了保护操作系统的稳定性和安全性。绝大多数应用程序在Ring 3级别下运行,包括图形界面、浏览器、办公软件等。
  • 某些设备驱动程序可能运行在Ring 1或Ring 2中,以区分其权限和访问级别。
  • 从Ring 3到Ring 0通常通过系统调用。

虚拟和模拟

  • 在虚拟化环境中,通常虚拟跟模拟是两个概念,VMWare的动态二进制翻译技术(BT)是虚拟的而QEMU软件技术是模拟的。最大的区别在于,模拟通过软件实现时需要模拟CPU ring 0-3,也就是需要转换CPU ring 0-3所有的指令,而虚拟只需要转换CPU ring 0特权指令即可。

虚拟化

CPU虚拟化

基于二进制翻译(BT)的全虚拟化

  • 客户操作系统运行在 Ring 1,它在执行特权指令时,会触发异常(CPU的机制,没权限的指令会触发异常),然后 VMM 捕获这个异常,在异常里面做翻译,模拟,最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行。
    在这里插入图片描述

半虚拟化

  • 修改Guest OS内核,使Guest OS知道自己是虚拟机,从而使Guest OS会将和特权指令相关的操作都转换为发给VMM的Hypercall(超级调用),由VMM继续进行处理。这样以来,就不会有捕获异常、翻译、模拟的过程了,性能损耗非常低。
    在这里插入图片描述

硬件辅助虚拟化

  • 主要是Inter的VT-x 和 AMD-V 这两种技术。让VMM和Guest OS分别运行在root模式和非root模式下,让Guest OS的一般指令可以直接发送到硬件,而特权指令会切换到VMM去执行。
    在这里插入图片描述

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

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

相关文章

随笔--向量数据库的检索算法

文章目录 暴力搜索(Flat)聚类近似最近邻算法:ANN局部敏感哈希索引:LSH存储优化:(量化)聚类码本乘积量化索引:PQ层次导航小世界:HNSW 暴力搜索(Flat&#xff0…

如何用cpolar创建隧道,实现外网访问内网?

如何用cpolar创建隧道,实现外网访问内网? 文章目录 如何用cpolar创建隧道,实现外网访问内网? 在安装和调试完本地的cpolar后,我们终于可以接触到cpolar的核心功能:建立一条专属于自己的数据通道&#xff0c…

dirsearch Web目录扫描器使用手册-新手入门指南

声明:该系列文章首发于公众号:Y1X1n安全,转载请注明出处!本公众号所分享内容仅用于每一个爱好者之间的技术讨论及教育目的,所有渗透及工具的使用都需获取授权,禁止用于违法途径,否则需自行承担&…

纯css实现登录表单动效

效果图&#xff1a; 代码展示 // 我这边用的是elementUI表单校验&#xff0c;更改的样式。 <el-form:model"form":rules"rules"ref"fromList":hide-required-asterisk"true"><el-form-item prop"account"><…

vim粘贴内容格式混乱解决方法

问题 复制本地文件内容后&#xff0c;咱贴到vim文本内&#xff0c;格式错乱 解决方法 打开vim配置文件 最后面加入一行 vim /etc/vimrc set pastetoggle<F11> 开发vim文件&#xff0c;进入后先按F11进入交互模式 shift insert 再次粘贴 解决

c语言野指针int*p、空指针int*p = NULL、万能指针void* p

1、野指针&#xff0c;既没有初始化的指针&#xff0c;//如果没有给指针初始化&#xff0c;则指针p的内容为随机地址&#xff0c;会随机指向&#xff0c;故成为野指针&#xff0c;不可以操作野指针 #include "stdio.h" #include <stdlib.h>int main() {//1、野…

STM32 低功耗-睡眠模式

STM32 睡眠模式 文章目录 STM32 睡眠模式第1章 低功耗模式简介第2章 睡眠模式简介2.1 进入睡眠模式2.1 退出睡眠模式 第3章 睡眠模式代码示例总结 第1章 低功耗模式简介 在 STM32 的正常工作中&#xff0c;具有四种工作模式&#xff1a;运行、睡眠、停止和待机模式。 在系统或…

[学习笔记]3小时搞定DRF框架 | Django REST framework前后端分离框架实践

3小时搞定DRF框架 | Django REST framework前后端分离框架实践 前言(基于INSCODE AI助手) DRF&#xff08;全称Django REST framework&#xff09;是一个用于构建 Web API 的强力工具集&#xff0c;是一个基于Django的Python Web框架&#xff0c;它为开发人员提供了一套快速开…

[openCV]基于拟合中线的智能车巡线方案V4V5

V4: import cv2 as cv import os import numpy as npimport time# 遍历文件夹函数 def getFileList(dir, Filelist, extNone):"""获取文件夹及其子文件夹中文件列表输入 dir&#xff1a;文件夹根目录输入 ext: 扩展名返回&#xff1a; 文件路径列表""…

Mybatis引出的一系列问题-Spring事务的探究

1 spring事务的传播特性 package com.zs.service;Service public class UserService {Autowiredprivate UserDao userDA0;Transactionalpublic void transfer(String fromName, String toName, Integer money) {userDA0.out(fromName, money);int a 1 / 0;userDA0.in(toName,…

在中国人民大学与加拿大女王金融硕士项目的岁月,不会负了每个有心人

学习&#xff0c;就像是一场战争&#xff0c;有时你觉得在这拼命撕杀的战场上&#xff0c;你是孤独与无助的&#xff0c;但你殊不知&#xff0c;你其实并不是孤身奋战的&#xff01;学习路上会遇见很多有心人&#xff0c;在中国人民大学与加拿大女王金融硕士项目的岁月&#xf…

关于 JavaScript 数组的遍历函数:map, reduce, filter 等

JavaScript 列表的 map 方法是一个常用的数组遍历方法&#xff0c;将会对每一个列表中的元素都应用所给的转换方法&#xff0c;也就是 u > (...)&#xff0c;这是 ES6 中匿名函数的表达式写法&#xff0c;在这种使用场景中是一种非常方便的语法糖&#xff0c;map 方法在遍历…

亚马逊鲲鹏系统是怎么引流的?

亚马逊鲲鹏系统有三种引流方式&#xff0c;可设置通过亚马逊站点搜索、站外引流、直接访问产品页面进入到相关产品页面进行操作。 1、通过亚马逊站点搜索 正常的登录到我们的亚马逊主页&#xff0c;然后通过设置关键词及asin&#xff0c;最后进入你指定的产品&#xff0c;进行…

景联文科技高质量成品数据集上新啦!

景联文科技近期上新多个成品数据集&#xff0c;包含图像、视频等多种类型的数据&#xff0c;涵盖丰富的场景&#xff0c;可满足不同模型的多元化需求。 高质量成品数据集可用于训练和优化模型&#xff0c;使得模型能够更加全面和精准地理解和处理任务&#xff0c;更好地应对复…

QT中使用ffmpeg的api进行视频的播放

在了解ffmpeg使用api进行视频的播放之前&#xff0c;我们首先了解一下视频的播放流程。 一、视频的播放流程 首先是我们最常见的视频文件&#xff0c;在播放流程中首先是要打开视频文件&#xff0c;将视频文件中的数据进行解封装&#xff0c;之后再将解封装之后的视频进行解码…

仅需6GB显存,拥有专属AI代码助手

清华GLM技术团队打造的多语言代码生成模型CodeGeeX近期更新了新的开源版本「CodeGeeX2-6B」。CodeGeeX2是多语言代码生成模型CodeGeeX的第二代模型&#xff0c;不同于一代 CodeGeeX &#xff0c;CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现。得益于 ChatGLM2 的更优性能…

Dos常用命令有哪些?具体的使用方式是什么?

1. 常用命令 对我们来说&#xff0c;掌握几个常见的dos命令即可&#xff0c;如下&#xff1a; dir&#xff1a;列出当前目录下所有的文件及文件夹&#xff1b; md&#xff1a;创建一个文件夹&#xff1b; rd&#xff1a;删除一个空目录&#xff1b; cd&#xff1a;进入指定…

第二章 圣诞夜的滑雪场

系列文章目录 第一章 修学旅行&#xff08;凯撒密码、栅栏密码&#xff09; 前言 这一章借鉴了基德大人和青子小姐的剧情&#xff0c;感兴趣的童鞋可以看一看哟&#xff01;&#xff08;本人柯迷&#xff09; 摩斯密码 到了下午&#xff0c;老师将大家聚在一起&#xff0c;笑…

云主机OOM宕机原因分析及处理

一、故障现象 某次服务器告警宕机故障&#xff0c;无法ssh连入&#xff0c;控制台登录后查看&#xff0c;发生OOM事件&#xff0c;OOM就是我们常说的Out of Memory内存溢出&#xff0c;它是指需要的内存空间大于系统分配的内存空间&#xff0c;导致项目程序crash&#xff0c;甚…

Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置

目录 Ubuntu20.04 QT5.14.2 VTK8.2.0 PCL 1.10 环境配置一、VTK 编译和安装1、库依赖&#xff1a;2、下载资源&#xff1a;[下载VTK8.2.0](https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz)3、编译&#xff1a;4、安装5、qtcreator 配置编译的libQVTKWidgetPlugin.…