计算机系统 - 虚拟化
一、CPU 虚拟化
2.1 背景
CPU 虚拟化范畴还挺多的,但是我们这里应该指的不包括不同 ISA 的虚拟化,而只是 CPU 的虚拟化,也就是虚拟出来的 CPU 和原本的 CPU 具有相同的 ISA 。
2.2 Trap & Emulate
为了虚拟化出多个 CPU,我们让虚拟的 OS 跑在用户态,也就是如下结构:
CPU 虚拟化范畴还挺多的,但是我们这里应该指的不包括不同 ISA 的虚拟化,而只是 CPU 的虚拟化,也就是虚拟出来的 CPU 和原本的 CPU 具有相同的 ISA 。
为了虚拟化出多个 CPU,我们让虚拟的 OS 跑在用户态,也就是如下结构:
那是 2023 年的夏天,楠神走出门,看向焦急等待的杰哥和我,问我们:
“你们知道 “系统” 和 “体系结构” 的区别吗?”
计算机系统这个系列,是我作为一名方向是 system 的研究生的,基于 IPADS 实验室开设的 “计算机系统原理” 等课程,整理而成的,并不保证正确性,因为 system 实在是浩如烟海,而我又太菜了。
在这篇博文里,我想谈谈我心目中的 system 是什么,这并不是 IPADS 课程的观点。
今天是 2024 年 12 月 18 日,距离我在北航新主楼 F534 的夜晚写下这个博客的 About 板块已经过去了 3 年时间,时间过得真是太快了。
这个博客能够坚持 3 年时间,最重要的原因是有人(当然我希望小姑娘多一些)去看我的博客,博客的读者是我更新的最大动力。感谢读者们的支持和反馈,没有你们就没有 “钟鼓楼”。
当时我在博客里写了 “我没有报六级,也没有报冬奥会志愿者,没有小姑娘需要陪”,三年后,我居然也还是 “没有报六级,也没有报冬奥会志愿者,没有小姑娘需要陪” 的状态,也算是不忘初心了,乐。
这本书是对《Science Research Writing For Non-Native Speakers of English》的总结梳理。这本书分为多个章节,每个章节对应一个论文写作里的部分。在每个章节内部,又有如下几个部分:
很多东西都是实践性质的,并非专业知识本身。所以如果总结的话,其实可以按照 model 的形式来组织 vocabulary ,其他的东西(比如例文、基础语法、动手实践)都可以省略,结构清晰。
因为时间问题,所以我会逐步更新这篇博文。
在并行编程中,除了 “互斥” 这个原语外(一般是采用 “锁” 来实现),也就是不同的任务不能同时做一件事情。还存在 “依赖(dependency)” 这个原语,这个原语描述的是有些任务必须在另外的一些任务后面开始,也就是虽然任务基本上都可以并行异步的执行,但是有些时候存在一些依赖使得任务需要按照一定的次序来执行。
依赖可以被抽象成一种图结构,其中节点是任务,而边是任务之间的依赖关系。但是图结构其实并不好在编程中使用,所以我们又用 event ,信号量等抽象简化了这种图结构。我理解其实是用生产者消费者模型来改写了图结构,构成了一种 “以依赖关系为中心” 的编程模型。
Barrier 或说者同步,我觉得其实也是一种依赖关系,它指的是同一个 batch 中的任务,必须依赖于其他 batch 任务的结束才能结束。
当涉及互斥时,涉及到的术语是 lock, unlock, mutex ,而涉及到依赖是术语是 event, wait, signal, notify, barrier 等。之前我只重视了互斥的学习,而对于同步语义,则非常忽视。