【KVM】CPU虚拟化和GuestOS加载

刚接触虚拟化的时候,一直很好奇虚拟机到底是一个什么东西,在系统中的呈现是什么? 是一个进程? 没错在KVM实现中,就是一个qemu进程。

那表示虚拟机的进程和普通的进程有哪些区别呢?

1、执行的来源不同,普通进程直接从当前文件系统获得指令集(执行文件),而虚拟机进程则模拟CPU上电开机;

2、运行等级不同,普通进程运行在用户态上,而虚拟机进程的guest需要运行在内核态和用户态;

今天讲一讲虚拟机是如何加载起OS的,本文不分析KVM的实现细节,本文只分析实现的理念。

1、物理机上电开机时,CPU上电后跳转到0xFFFF:0000地址开始执行BIOS代码, 所以要在该地址准备好BIOS代码即可;

      备注:由于启动虚拟机前,系统处于保护模式下,而物理机启动阶段处于实模式,实际上虚拟化实现是通过保护模式来模拟实模式的,只是系统感知不到(CR0被模拟了)

2、BIOS代码开始执行,此时内存访问的是1M地址空间,VMM已经提前把1M地址空间进行页表映射;

3、BIOS检测系统设备,由于系统设备都是模拟的,所以都会陷出,由kmod模块或qemu模块来进行模拟;

4、BIOS根据启动项,读取磁盘MBR,并把执行权交给MBR,系统启动完成; 磁盘IO读写都会陷出交给qemu执行;

到此虚拟机已经成功运行起OS,CPU虚拟化的目标只有一个共享CPU,而不相互影响,有什么难点呢?

有些非特权的指令是敏感指令,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KVM虚拟化和容器化是两种不同的虚拟化技术,它们有着不同的概念和实现方式。 KVM虚拟化是一种基于硬件的虚拟化技术,它利用Linux内核的虚拟化扩展(KVM)在硬件上实现虚拟化。在KVM虚拟化中,每个虚拟机都有自己的操作系统和内核,可以运行不同的操作系统和应用程序,相互之间隔离,可以实现较高的安全性和可靠性。 而容器化是一种基于操作系统的虚拟化技术,利用Linux内核的命名空间和控制组(cgroup)等功能,在同一台宿主机上,将多个容器隔离开来,每个容器都运行着自己的应用程序,但它们共享同一个操作系统内核,相互之间的隔离程度相对较低,但也可以实现一定的安全性和可靠性。 KVM虚拟化和容器化的主要区别在于: 1. 硬件隔离和操作系统隔离:KVM虚拟化实现硬件隔离,每个虚拟机都有自己的操作系统和内核,而容器化实现操作系统隔离,每个容器共享同一个操作系统内核。 2. 安全性和隔离程度:KVM虚拟化相对于容器化来说,隔离程度更高,可以实现更高的安全性和可靠性。 3. 资源利用率:容器化相对于KVM虚拟化来说,资源利用率更高,因为多个容器可以共享同一个操作系统内核,避免了虚拟机的重复开销和资源浪费。 总体来说,KVM虚拟化和容器化是两种不同的虚拟化技术,它们各有优缺点,可以根据具体的需求和场景选择合适的虚拟化技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值