那是 2023 年的夏天,楠神走出门,看向焦急等待的杰哥和我,问我们:
“你们知道“系统”和“体系结构”的区别吗?”
一、总论
计算机系统这个系列,是我作为一名方向是 system 的研究生的,基于 IPADS 实验室开设的“计算机系统原理”等课程,整理而成的,并不保证正确性,因为 system 实在是浩如烟海,而我又太菜了。
在这篇博文里,我想谈谈我心目中的 system 是什么,这并不是 IPADS 课程的观点。
这本书是对《Science Research Writing For Non-Native Speakers of English》的总结梳理。这本书分为多个章节,每个章节对应一个论文写作里的部分。在每个章节内部,又有如下几个部分:
很多东西都是实践性质的,并非专业知识本身。所以如果总结的话,其实可以按照 model 的形式来组织 vocabulary ,其他的东西(比如例文、基础语法、动手实践)都可以省略,结构清晰。
因为时间问题,所以我会逐步更新这篇博文。
本文提出了一种用户态缺页异常处理框架,可以轻松适配不同的处理策略,适用于高并发环境。其亮点在于:
- 框架的易用性:
- 基于 Linux 的 Semi-Microkernel 设计
- 透明
- 性能:
- 采用了微内核和外核思想中的 upcall 设计
- 采用了先进的异步批处理 IO 后端 io_ring
从软件层去看,目前内存密集型应用越来越多,如 TB 级的机器学习、大型图计算,内存数据库等。从硬件层去看,硬件新特性有很多,比如分离式内存、分层内存等。这些新的变化都对内存管理策略提出了新的挑战。
通用操作系统的内存管理策略并不适用于内存密集型应用,也不能针对性的利用硬件新特性。有研究表明最大的系统瓶颈是内存管理而不是设备带宽。
设计模式是一个工程问题,它不能为某个问题提供具体的答案,它只能让答案写得好看一些。
更进一步地说,设计模式是用于解决代码复杂度高(不是算法复杂度)的问题,这会引发难以阅读,难以维护等伴生问题。当代码量小,复杂度低,没有什么维护需求的时候(比如说科研代码),其实是没有必要采用规范的设计模式的。
我个人学习设计模式,并不是为了写代码(因为我写的代码就是科研代码),而是为了更好的阅读代码,因为大型工程代码都会或多或少遵循设计模式的思路。
很多设计模式解决的复杂度问题,是客观存在的,认识这些问题有助于设计出更加简洁健壮的架构;但是有些问题可能只是类似 Java 等语言表述能力不够所导致的,不用太较真。