操作系统实战45讲
彭东
网名 LMOS,Intel 傲腾项目关键开发者
新⼈⾸单¥59.9
11689 人已学习
课程目录
已更新 45 讲 / 共 45 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么要学写一个操作系统?
免费
尝尝鲜:从一个Hello到另一个Hello (2讲)
01 | 程序的运行过程:从代码到机器运行
02 | 几行汇编几行C:实现一个最简单的内核
心有蓝图:设计 (2讲)
03 | 黑盒之中有什么:内核结构与设计
04 | 震撼的Linux全景图:业界成熟的内核架构长什么样?
程序的基石:硬件 (3讲)
05 | CPU工作模式:执行程序的三种模式
06 | 虚幻与真实:程序中的地址如何转换?
07 | Cache与内存:程序放在哪儿?
基本法:同步原语 (2讲)
08 | 锁:并发操作中,解决数据同步的四种方法
09 | 瞧一瞧Linux:Linux的自旋锁和信号量如何实现?
夺权:启动初始化 (6讲)
10 | 设置工作模式与环境(上):建立计算机
11 | 设置工作模式与环境(中):建造二级引导器
12 | 设置工作模式与环境(下):探查和收集信息
13 | 第一个C函数:如何实现板级初始化?
14 | Linux初始化(上):GRUB与vmlinuz的结构
15 | Linux初始化(下):从_start到第一个进程
土地革命:内存 (8讲)
16 | 划分土地(上):如何划分与组织内存?
17 | 划分土地(中):如何实现内存页面初始化?
18 | 划分土地(下):如何实现内存页的分配与释放?
19 | 土地不能浪费:如何管理内存对象?
20 | 土地需求扩大与保障:如何表示虚拟内存?
21 | 土地需求扩大与保障:如何分配和释放虚拟内存?
22 | 瞧一瞧Linux:伙伴系统如何分配内存?
23 | 瞧一瞧Linux:SLAB如何分配内存?
活动实体:进程 (4讲)
24 | 活动的描述:到底什么是进程?
25 | 多个活动要安排(上):多进程如何调度?
26 | 多个活动要安排(下):如何实现进程的等待与唤醒机制?
27 | 瞧一瞧Linux:Linux如何实现进程与进程调度?
下属部门:设备I/O (4讲)
28 | 部门分类:如何表示设备类型与设备驱动?
29 | 部门建立:如何在内核中注册设备?
30 | 部门响应:设备如何处理内核I/O包?
31 | 瞧一瞧Linux:如何获取所有设备信息?
银行仓库:文件系统 (4讲)
32 | 仓库结构:如何组织文件?
33 | 仓库划分:文件系统的格式化操作
34 | 仓库管理:如何实现文件的六大基本操作?
35 | 瞧一瞧Linux:虚拟文件系统如何管理文件?
通信部:网络 (5讲)
36 | 从URL到网卡:如何全局观察网络数据流动?
37 | 从内核到应用:网络数据在内核中如何流转
38 | 从单排到团战:详解操作系统的宏观网络架构
39 | 瞧一瞧Linux:详解socket实现与网络编程接口
40 | 瞧一瞧Linux:详解socket的接口实现
服务交接:接口 (2讲)
41 | 服务接口:如何搭建沟通桥梁?
42 | 瞧一瞧Linux:如何实现系统API?
番外篇:虚化的世界 (1讲)
43 | 虚拟机内核:KVM是什么?
特别放送 (1讲)
用户故事 | 成为面向“知识库”的工程师
操作系统实战45讲
15
15
1.0x
00:00/00:00
登录|注册

43 | 虚拟机内核:KVM是什么?

你好,我是 LMOS。
上节课,我们理解了 Linux 里要如何实现系统 API。可是随着云计算、大数据和分布式技术的演进,我们需要在一台服务器上虚拟化出更多虚拟机,还要让这些虚拟机能够弹性伸缩,实现跨主机的迁移。
而虚拟化技术正是这些能力的基石。这一节课,就让我们一起探索一下,亚马逊、阿里、腾讯等知名公司用到的云虚拟主机,看看其中的核心技术——KVM 虚拟化技术。

理解虚拟化的定义

什么是虚拟化?在我看来,虚拟化的本质是一种资源管理的技术,它可以通过各种技术手段把计算机的实体资源(如:CPU、RAM、存储、网络、I/O 等等)进行转换和抽象,让这些资源可以重新分割、排列与组合,实现最大化使用物理资源的目的

虚拟化的核心思想

学习了前面的课程我们发现,操作系统的设计很高明,已经帮我们实现了单机的资源配置需求,具体就是在一台物理机上把 CPU、内存资源抽象成进程,把磁盘等资源抽象出存储、文件、I/O 等特性,方便之后的资源调度和管理工作。
但随着时间的推移,我们做个统计就会发现,其实现在的 PC 机平常可能只有 50% 的时间处于工作状态,剩下的一半时间都是在闲置资源,甚至要被迫切换回低功耗状态。这显然是对资源的严重浪费,那么我们如何解决资源复用的问题呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
该试读文章来自付费专栏《操作系统实战45讲》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59.9
立即订阅
登录 后留言

精选留言(3)

  • pedro
    以我所在的腾讯云为例。
    腾讯云服务器 CVM 支持用户自定义一切资源:CPU、内存、硬盘、网络、安全等,并可以在需求发生变化时轻松地调整它们,还支持随时扩容,迁移,运维等管理功能。
    一个成熟的IAAS平台搭建起来不容易啊,要考虑的事情太多了。
    2021-08-16
  • springXu
    这课的例子和内容相当精彩,还是意犹未尽呀。由于虚拟化知识欠缺了,想问还有后续不?
    2021-08-16
  • 苏流郁宓
    装虚拟机出现过ghost系统(如win系统ghost版),在VM虚拟机上面识别不了,需要装原版官网下载的非ghost版本才安装成功,以及AMD的cpu装苹果系统也没成功,故认为开发虚拟机系统(如VM),需要对厂家的cpu指令以及各系统的启动流程有一定的了解。如此才好“欺骗”,虚拟机安装系统失败的很大部分原因是没找对原版系统,也就是修改过的系统启动流程和虚拟机表中的流程不完全一致,识别不了。
    故,认为开发虚拟机可以单独做一个启动表(允许修改),还有就是扫描表,就是在安装系统前对要装的系统进行扫描,识别不了的东西也显示出来,方便用户网上查询和修改参数,而不是猜。还有就是文件格式的识别需要改进,iso或者dmg都能识别最好,这样覆盖的厂家更多!
    还可以设计一种网络虚拟机,就是虚拟机装在A电脑上,但是用户在B电脑上,用户的操作通过平台翻译成标准信息输出,然后传送到A电脑上,这样就不用考虑用户在B电脑(手机)用的是什么系统,硬件性能如何。只要他能联网就行,这样可以在A电脑上允许多个用户分时间操作,更能利用好资源。
    2021-08-16
    1
收起评论
3
返回
顶部