系统与数据库2018ts.data61.csiro.au
结论已明:单体操作系统设计存在缺陷
The Jury Is In: Monolithic OS Design Is Flawed
进阶 · 约 45 分钟读完前置知识:操作系统内核基础、虚拟内存与进程隔离、IPC 与上下文切换
导读
这篇论文(CSIRO Data61 出品)重新审视了微内核与单体内核之争,主张单体操作系统设计存在结构性缺陷:大量内核代码尤其是设备驱动都运行在高权限态,成为可靠性与安全性的主要风险来源,而把驱动等组件隔离到用户态的设计代价(性能损失)是可接受的。论文显然站在当年 Tanenbaum 一边,对“Linux 式单体设计已胜出”的流行看法提出反驳。
HN 关注点:焦点是延续二十多年的 Torvalds–Tanenbaum 微内核之争:架构正确性 vs. 性能与生态的现实胜负。
HN 评论精选
这几条评论里:支持 1 补充 3
补充用反事实假设调侃架构之争中的路径依赖与事后合理化。
我很好奇是否存在一个平行宇宙:那里 Linux 是微内核设计,而人们在力推单体内核,理由是它对驱动友好、性能更好。
pweissbrod查看英文原文
I wonder if there exists a parallel dimension where linux is microkernel design and folks are pushing for monolothic citing the driver friendliness and performance
支持认为微内核早已胜出,Linux 赢在社区而非架构。
这场评审在 1990 年代中期就已经有定论了,只是 Linus Torvalds 从不肯承认自己错了、也不愿听比他更懂的人的意见。Linux 的成功靠的是社区,而不是它的架构。QNX 几十年来已经证明了微内核的实力:它们稳定得多,也远比单体内核容易开发和维护。那点(不算大的)性能损失完全值得。
jacquesm查看英文原文
The jury was in in the mid 1990's, but Linus Torvalds doesn't know when he's wrong and to listen to his betters. Linux succeeded because of its community, not because of its architecture. QnX has shown the strength of microkernels for decades, they are far more stable and much easier to work on than monoliths. The (small) speed penalty should be well worth the price of admission.
补充补充经典论战原始资料。
这让人想起著名的 Torvalds–Tanenbaum 之争(附 Google Groups 原始讨论链接)。
enitihas查看英文原文
Reminds me of the famous Torvalds Tanenbaum debate. https://groups.google.com/forum/m/#!topic/comp.os.minix/wlhw16QWltI
补充从上下文切换与数据拷贝角度解释两种设计的性能/安全权衡。
内核代码运行在特权态是有原因的:速度。特权态里跑的内核代码越多,内核态与用户态之间需要拷贝的数据就越少;而微内核则必须把更多数据拷到用户空间。向用户空间拷贝数据会引发上下文切换,性能因此下降。更大的单体内核换来的是速度;微内核的优势则在于更小的特权攻击面(因而更安全),以及更强的抗崩溃能力——比如驱动挂了可以重启对应的用户态进程。
acd查看英文原文
There is a reason why kernel code run in privileged mode, speed! If you run more kernel code in privileged mode then you do not need to copy as much data between the kernel and user space. Vs a micro kernel you will have to copy more data up to user space. Copying data to user space causes context switches and gives less performance. Larger mono kernels: Speed Micro kernels have advantages such as: smaller privileged attack surface and thus more secure, more crash proof as you can restart user land processes for example device drivers https://en.wikipedia.org/wiki/Microkernel
相关资源
从这篇论文所有 HN 讨论帖的全部评论里整理出来的链接。
历次讨论
- 2018Hacker News 讨论帖172 分 · 194 评
同领域还值得读
I/O 比 CPU 更快——让我们划分资源并消除操作系统抽象
I/O Is Faster Than CPU – Let’s Partition Resources and Eliminate OS Abstractions
指出在现代服务器硬件上 I/O 速度已接近甚至超过 CPU,传统操作系统抽象反而成为瓶颈。
系统与数据库2019 · 817 分 · 277 评进阶 · 约 30 分钟编辑精选使用 io_uring 的高效 I/O
Efficient IO with io_uring
由 Linux 内核开发者 Jens Axboe 撰写,介绍 Linux 新的异步 I/O 接口 io_uring。
系统与数据库2019 · 426 分 · 96 评进阶 · 约 45 分钟编辑精选线程对大多数用途而言是个坏主意(1995)
Threads Are a Bad Idea for Most Purposes (1995)
这篇 1995 年的文章由 John Ousterhout 撰写,讨论为什么线程对大多数用途而言是坏主意,并主张事件驱动编程通常更简单、更高效。
系统与数据库2017 · 423 分 · 382 评进阶 · 约 25 分钟编辑精选学习型索引结构之论证
The Case for Learned Index Structures
提出把索引看作一种"模型":既然 B-tree 等结构本质上是在学习数据的分布,就可以用机器学习模型(如回归模型、神经网络)来近似键到位置的映射,从而替代 B-tree、哈希索引…
系统与数据库2017 · 398 分 · 66 评 · 引用 25进阶 · 约 60 分钟编辑精选FoundationDB:一个分布式、解耦的事务型键值存储
FoundationDB: A distributed, unbundled, transactional key value store
介绍 FoundationDB:一个分布式、解耦设计的事务性键值存储。
系统与数据库2021 · 283 分 · 99 评进阶 · 约 90 分钟编辑精选