博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
试着理解下kvm
阅读量:5359 次
发布时间:2019-06-15

本文共 838 字,大约阅读时间需要 2 分钟。

kvm,一台物理机,一个操作系统,在这个操作系统中隔离,这是docker;

反思:一个物理机上只能有一个操作系统系统存在么?操作系统无非是一套软件而已,在特殊的偏移地址上;

为啥一台物理机上不能驻扎两个操作系统?!(振聋发聩的一问)

我们想想如果有两个操作系统会发生啥事情。

1)进程执行层面;我们通过fork去执行一个进程,然后这个进程开始在自己的虚拟地址执行执行执行,在用户态都好好的,但是一旦要访问系统的硬件资源,就需要陷入到内核里,使用int3,使用trap,然后操作系统这里会陷入到0xffffffff87629376地址执行操作系统提供的服务了,同时也算是陷入了内核态ring0;如果是两个操作系统呢?属于B操作系统的进程,执行执行执行,然后需要访问硬件资源,需要陷入到内核里,使用int3,使用trap,此时也是会陷入到0xffffffff87629376这个地址呀,也就是说会陷入到A操作系统的内核区域里面去,这是不可接受的,一个进程与其对应的内核是确定的!要不然何来的虚拟?

2)硬件资源的管理层面;1)中提到的问题,应该就是VMM该管的事情了吧,好了现在都进入内核去访问资源了,如果用户程序申请的软服务还好(不需要操作硬件),如果需要操作硬件了,访问硬件资源,那么两个内核,相当于是两个线程要对资源进行竞争了,这个时候的处理模式是啥咧?这个时候我理解就是kvm中经常说到的blk/net的虚拟化了吧。

带着这两个问题,让我们理解下kvm。

 kvm负责CPU和memory的虚拟化,qemu负责存储设备和网络设备的虚拟

首先搞明白,kvm是如何做到CPU内存的虚拟化的:

1>进程是如何启动的?进程的地址空间;

2>

 

这位小哥讲KVM的原理还不错:

https://www.cnblogs.com/scottieyuyang/p/5952206.html

 

转载于:https://www.cnblogs.com/honpey/p/8047425.html

你可能感兴趣的文章
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
将Centos的yum源更换为国内的阿里云源
查看>>
git diff 的用法
查看>>
一段sql的优化
查看>>
十进制与十六进制的相互转换
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>