一、数据结构
1.1 Inode
1.1.1 整体结构
Inode FS 被分为了 5 个区域“

这本书是对《Science Research Writing For Non-Native Speakers of English》的总结梳理。这本书分为多个章节,每个章节对应一个论文写作里的部分。在每个章节内部,又有如下几个部分:
很多东西都是实践性质的,并非专业知识本身。所以如果总结的话,其实可以按照 model 的形式来组织 vocabulary ,其他的东西(比如例文、基础语法、动手实践)都可以省略,结构清晰。
因为时间问题,所以我会逐步更新这篇博文。
在并行编程中,除了“互斥”这个原语外(一般是采用“锁”来实现),也就是不同的任务不能同时做一件事情。还存在“依赖(dependency)”这个原语,这个原语描述的是有些任务必须在另外的一些任务后面开始,也就是虽然任务基本上都可以并行异步的执行,但是有些时候存在一些依赖使得任务需要按照一定的次序来执行。
依赖可以被抽象成一种图结构,其中节点是任务,而边是任务之间的依赖关系。但是图结构其实并不好在编程中使用,所以我们又用 event ,信号量等抽象简化了这种图结构。我理解其实是用生产者消费者模型来改写了图结构,构成了一种“以依赖关系为中心”的编程模型。
Barrier 或说者同步,我觉得其实也是一种依赖关系,它指的是同一个 batch 中的任务,必须依赖于其他 batch 任务的结束才能结束。
当涉及互斥时,涉及到的术语是 lock, unlock, mutex ,而涉及到依赖是术语是 event, wait, signal, notify, barrier 等。之前我只重视了互斥的学习,而对于同步语义,则非常忽视。
本文提出了一种用户态缺页异常处理框架,可以轻松适配不同的处理策略,适用于高并发环境。其亮点在于:
- 框架的易用性:
- 基于 Linux 的 Semi-Microkernel 设计
- 透明
- 性能:
- 采用了微内核和外核思想中的 upcall 设计
- 采用了先进的异步批处理 IO 后端 io_ring
从软件层去看,目前内存密集型应用越来越多,如 TB 级的机器学习、大型图计算,内存数据库等。从硬件层去看,硬件新特性有很多,比如分离式内存、分层内存等。这些新的变化都对内存管理策略提出了新的挑战。
通用操作系统的内存管理策略并不适用于内存密集型应用,也不能针对性的利用硬件新特性。有研究表明最大的系统瓶颈是内存管理而不是设备带宽。