首页 > 系统相关 >整理一下虚拟化与Linux的学习经历

整理一下虚拟化与Linux的学习经历

时间:2023-02-23 21:45:33浏览次数:36  
标签:VMM 虚拟化 特权 指令 Linux 整理 VMware

由于工作的原因,需要开始接触虚拟化。正好前几天学了许岑的《如何成为有效学习的高手》,其中建议成年人需要以任务驱动的方式进行学习,并且需要刻意制造反馈,比如把学习内容整理成文章才能更有效的学习,所以尝试写下此文作为学习虚拟化历程的记录。 虚拟化我们都不陌生,平时我们网络工程师或者 Linux 运维工程师进行实验的各个平台都用了虚拟化的技术,比如VMware 还有EVE 模拟器等等。但其实我们使用的 Windows 其实也是一种最基础的虚拟化,它是分时复用系统,会将所有硬件进行虚拟化,再硬件资源逻辑化的基础之上,使用分时复用和共享内存功能,所以我们的电脑才能同时处理不同软件的工作。编程领域的 Java 虚拟机其实也是一种虚拟化技术,也是将操作系统资源进行虚拟化,然后 Java 程序就可以方便的移植到其他计算机上了。

 

广义上来讲,虚拟化就是在一套硬件上同时运行多个OS。虚拟化的实现就是开发出VMM(virtual machine monitor)虚拟机监视程序。最早的发展其实就是 IBM 开发分时系统了,IBM 工程师们通过将 CPU 的占用切分为无数个极短的时间片,然后让每片去执行不同的任务,通过轮询的方式使之伪装成多个 CPU 处理不同的程序,把物理资源逻辑化,以提高利用效率。

不同厂家开发出了不通的虚拟化软件和技术,他们的实现也有所不同。比如VMware 针对个⼈⽤户是VMware Workstation ,针对苹果系统是VMware Fusion,针对企业⽤户是VMware vSphere+VMware vCenter。Linux大厂 RedHat 使用的是(QEUM-KVM)kernel-based virtual machine 和QEUM。微软开发的是 hyper-V 运用在自家的 windows 系统上,厂家Citrix开发的是 Xen,这家和其他厂家不太相同,是一种半虚拟化技术。

 

因为工作的原因,我注重学习的是 Linux 的 KVM ,Linux 在 IT 领域应用的更为广泛,学习 Linux 就不在此多叙,如果想系统的入门学习Linux,可以去看看《Linux就该这么学》这本书。

在虚拟化中,物理机提供物理资源,再上一层是 Hypervior/VMM 也就是宿主机,由他分成不同的客户机 OS1,OS2,OS3......

虚拟化模式下有两种指令,特权指令和敏感指令。顾名思义,特权指令是操作和管理关键系统资源的指令,只有在最高特权级才能正确运行,如果在非最高特权级运行,特权指令会引发一个异常,处理器可能会陷入最高特权级,交由系统软件进行处理。敏感指令,是操作特权资源的指令,其中包含修改虚拟机的运⾏模式或者下⾯物理机的状态;读写时钟、地址重定位系统及所有的I/O指令、中断等寄存器;访问存储保护系统等等。通过对比可以得出特权指令比敏感指令等级更高。当 guest OS 执⾏特权指令的时候,VMM会捕捉到异常,对 guest OS 执⾏的特权指令进⾏特权降级,然后进行模拟,通过模拟的⽅式实现 guest OS 需要实现的操作。

需要注意的是由于X86架构的CPU,敏感指令并不完全是特权执⾏,有些敏

感指令对于VMM来说是捕捉不到的,所以⽆法进⾏特权降级然后陷⼊模拟,所以由于X86架构的CPU的这种情况,⽆法实现虚拟化的全部功能。

但如何解决X86架构的虚拟化实现呢,VMware给出了他们的技术方案,那就是通过二进制翻译(BinaryTranslation)。X86硬件虚拟化诞生也就十多年,但VMware已经成立了二十多年了,BT技术的历史也早已超过硬件虚拟化的历史,所以这是一项成熟到有些过时的技术了。BT技术包含了二进制代码翻译技术还有优先级压缩技术,他们的共用实现了让虚拟监视器和客户机可以运行在不同的特权级,实现Guest OS 的核心指令通过虚拟监视器的捕获和模拟来执行,实现客户操作系统需要做的操作。由于纯软件的实现⽅式导致效率极低,速度慢,所以又有了半虚拟化技术。半虚拟化采用了 Hypercall 技术,guest os 部分的代码被改变,使它会将特权指令的草案中都转还给 VMM 的 Hypercall,由 VMM 继续处理,使 guest os 知道自己运行在1环而不是0环,有效的避免了虚拟化的执行冲突问题。半虚拟化有一项优点,那就是效率高,但缺点是他无法虚拟化Windows,因为Windows不能修改代码。

本片介绍了虚拟化的概念还有各个厂家对虚拟化的不同技术实现,下一篇会持续介绍Linux 虚拟化技术 KVM 的安装和使用等。

标签:VMM,虚拟化,特权,指令,Linux,整理,VMware
From: https://www.cnblogs.com/cainiaoyige1/p/17149552.html

相关文章

  • linux下进程通信总结
    信号:信号是通知发生了某种事件的机制,内核和进程都可能会向进程发送各种信号,进程也可以向自己发送信号。系统定义了一组标准信号类型,每种信号都拥有唯一的数值和用途。......
  • Linux中的错误码
    include\uapi\asm-generic\errno-base.h#define EPERM 1 /*Operationnotpermitted*/#define ENOENT 2 /*Nosuchfileordirectory*/#define ESRCH 3 /*N......
  • 如何将Linux的NIC 名称更改为 eth0 而不是 enps33 或 enp0s25,只要几秒钟
    概述我们使用Linux系统,网卡名称通常都是eth0,但是有一些新的linux发行版,网卡名字enps33或enp0s25。peng@ubuntu:~$ifconfigens33Linkencap:EthernetHWaddr......
  • Linux学习之前的基础准备(基础)
    Xwindiws和命令行之间进行切换图形环境:即命令行界面加上XWindows,命令行界面一直存在的,图解界面取决于使用者是否想要切换方式:ctrl+alt+f2~f6:命令行模式登录tty2~tty6,原来......
  • Linux文件权限和目录配置
    Linux最大特点与windows不同windows是单用户多任务,而linux使用多用户多任务,所以在使用过程中也严格划分每一个用户,以便于进行更好的管理,同时他也是一个安全防护机制文件拥有......
  • Linux操作命令(三)1.more命令 2.less命令 3.head命令 4.tail命令
    1、more命令分页显示文本文件的内容more命令,功能类似cat,cat命令是将整个文件的内容从上到下显示在屏幕上。more命令会一页一页的显示,方便使用者逐页阅读,而最基本......
  • 关于tomCat 部署到阿里云linux中不能访问随笔记录
    一、首先查看服务器的端口号是否开放1.首先看一下服务器内部防火墙有没有开启以及有没有开启80或者8080端口号:命令:firewall-cmd--list-ports如有则显示如下图片:2.......
  • Linux嵌入式博客Embedded Linux Software
     Linux嵌入式博客blogjgsun'sbloghttps://jgsun.github.io/ buildroot编译运行QEMUX86_64(jgsun.github.io)......
  • Linux top 命令详解
    如图:前五行分别为:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)进程总数、运行中的进程数、睡......
  • 解决“ERROR: kernel source directory "/usr/src/linux" was not found!”方案
     问题:报错:ERROR:kernelsourcedirectory"/usr/src/linux"wasnotfound!  解决:nano-w/etc/genkernel.conf将DEFAULT_KERNEL_SOURCE="/usr/src/linux"改成D......