- 参加 Systems Reading Group 记录的论文笔记。
System Reading Group
- Group 介绍以及 Presentation 安排: https://learn-sys.github.io/cn/reading/
- THU AOS 2020: http://os.cs.tsinghua.edu.cn/oscourse/AOS2020
Week 1: Operating System
Course Notes
- Video: THU AOS P7 - P11
OS Architecture & Structure
- OS Structure:
- Simple kernel
- Monolithic kernel
- Micro kernel
- Exokernel
- VMM(Virtual Machine Monitor), etc...
- Monolithic kernel
- UNIX Arch
- Linux Arch
- UNIX Arch
- Micro kernel
- 微内核:功能相对较少的内核,只提供某些核心功能。从而相比于单体内核,把很多单体内核中的事情放到用户空间去做,解耦了内核的各个 features,让整个系统的稳定性和灵活性得到了提升。但也就因为 IPC 的开销导致性能表现不尽如人意。
- Kernel with minimal features
- Moves as much from the kernel into user space
- Address spaces
- Interprocess communication (IPC)
- Scheduling
- Benefits
- Flexibility
- Safety
- Modularity
- Detriments (Poor Performance)
- Address spaces
- Interprocess communication (IPC)
- Scheduling
- Mach
- L4 - Microkernel– L4Second generation microkernel
- synchronous IPCs –> async IPCs (like epoll in Linux)
- smaller, Mach 3(330 KB) –> L4 (12KB)
- IPC security checks moved to user process
- IPC is hardware dependent
- Exokernel
- Exokernel 要做的事情其实是把内核也近乎给 PASS 掉,尽可能减少抽象层次,允许应用程序直接访问硬件,而ExoKernel只负责保护和分配系统资源。说白了就是把硬件资源都直接交给应用程序自己来组织了,因为有大量的应用程序想要自己独立控制可管理硬件,而不需要你操作系统层面的过多干涉。
- Exokernel 要做的事情其实是把内核也近乎给 PASS 掉,尽可能减少抽象层次,允许应用程序直接访问硬件,而ExoKernel只负责保护和分配系统资源。说白了就是把硬件资源都直接交给应用程序自己来组织了,因为有大量的应用程序想要自己独立控制可管理硬件,而不需要你操作系统层面的过多干涉。
Paper 1: The Multikernel: A new OS architecture for scalable multicore systems
- SOSP09
- SIGOPS Hall of Fame Award 2020
Abstract
- 普通计算机系统包含越来越多的处理器核心,并呈现出越来越多的架构权衡,包括内存层次结构、互连、指令集和变体,以及IO配置。 以前的高性能计算系统在特定情况下进行了扩展,但是现代客户机和服务器工作负载的动态特性,加上不可能针对所有工作负载和硬件变体静态地优化操作系统,对操作系统结构构成了严重的挑战。
- 我们认为,迎接未来多核硬件挑战的最好方法是拥抱机器的网络化本质,重新思考使用来自分布式系统的思想的操作系统架构。我们研究了一种新的操作系统结构,即 Multikernel,它将机器视为一个由独立核心组成的网络,假定在最低层次上没有核间共享,并将传统的操作系统功能转移到一个通过消息传递进行通信的分布式进程系统。
- 我们已经实现了一个多内核操作系统来证明这种方法是有前途的,并且我们描述了操作系统的传统的可伸缩性问题(如内存管理)是如何通过消息有效地重新解决的,以及如何利用分布式系统和网络的洞察力。在多核系统上对我们的原型的评估表明,即使在现在的机器上,多内核的性能也可以与传统的相媲美,并且可以更好地扩展以支持未来的硬件。
Problems
- 随着不断变化的技术对摩尔定律的限制,处理器架构变得越来越多样化,且逐渐转向异构化,并向可扩展的架构发展,以适应高性能的应用。传统的单体操作系统在解决可伸缩性问题和针对不同硬件结构进行优化方面面临着巨大的挑战。
- Systems are increasingly diverse
- Cores are increasingly diverse
- The interconnect matters
- Messages cost less than shared memory
- Cache coherence is not a panacea
- Messages are getting easier
- 本文作者尝试通过在内核之间使用显式消息传递和在内核之间复制内核状态来解决这个问题,而不是使用共享内存模型。他们的另一个主要目标是使这个操作系统与硬件无关,不针对任何机器架构。
Contributions
- 多内核操作系统的主要贡献嵌入在它们的三个设计原则中:
- 通过消息传递显式地实现内核间通信
- 使操作系统结构与硬件无关
- 在内核之间复制内核状态
- 该系统侧重于非共享内存模型,通过消息的显式通信来维护缓存的一致性。基于以上原则,设计实现了 MultiKernel 原型 Barrelfish
Week 2: Virtualization
Course Notes
- Video
- THU AOS P12 - P21
- IPADS MOS P70 - P87