Skip to content

Latest commit

 

History

History
99 lines (53 loc) · 3.6 KB

18-hm-microkernel.md

File metadata and controls

99 lines (53 loc) · 3.6 KB

18-hm-microkernel

Source: Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel, OSDI 2024. 陈海波老师团队的论文

Linux ABI

https://en.wikipedia.org/wiki/Application_binary_interface

ABI: Application Binary Interface 是关于两个 binary program modules 之间的接口。ABI定义了如何在机器码中访问数据结构,这是一种低级、依赖硬件的格式。相比之下,API 在源代码中定义访问接口,这是一种相对高级的、独立于硬件的、通常是人类可读的格式。

遵循 ABI 一般是编译器、操作系统或 library 需要考虑的,遵循 API 则是 application 程序需要考虑的。

POSIX: Portable Operating System Interface

POSIX 定义系统和用户级 API 以及命令行 shell 和实用程序接口,以实现与 Unix (及其变体)操作系统的软件兼容性(可移植性)。

IPC: Inter-Process Communication

根据 wiki,microkernel 的定义就是最简化的软件,其能够提供一些【机制】来实现操作系统。而这些机制就包括 :low-level 地址空间管理、线程管理、IPC

Principle of least privilege

信息安全里的概念,最小特权原则(PoLP)要求在计算环境的特定抽象层中,每个模块(如进程、用户或程序)必须能够只访问其合法目的所需的信息和资源。

Apple XNU (X is Not Unix) operating system

是一种 hybrid kernel,结合了 microkernel 和 monilithic kernel 的架构

尽管 hybrid kernel 也能最简化 core kernel 的功能,但是并不是 least privileged,因此安全性不如 microkernel

本文写 background 的思路:

  • 回顾 microkernel 的优点和发展,提到 SOTA 基本都是针对特定领域的,引出“鲜有工作探索将 microkernel 扩展为通用 OS kernerls”这一局限
  • 再谈现有的企业级通用 OS kernerls,比如 Microsoft NT 以及 Apple XNU,都是 hybrid kernel,有其优点,但主要是在安全性上不如 microkernel 架构
  • 之后讨论让 microkernel 通用化的三个主要 demands:兼容性、资源管理、性能。进而介绍现有工作提出的各种架构(unikernel, multikernel, exokernel, splitkernel 等),并讨论它们对移动、车载场景的不适用性。
  • 最后给出结论:我们相信值得去探索将 microkernel 扩展为通用 OS kernel 这条新途径

紧接着就是用真实测试图来引出几个关键 observations

CPU flame graph

CPU flame graph(火焰图)是一种可视化工具,用于表示程序的性能,尤其关注 CPU 使用率。

找到一个好理解的例子。对于如下一个程序:

root() {
    f1() {
         //some lines of code goes here
         f2() {
              //some lines of code goes here
              f3() {
                   //some cpu intensive code goes here
              }
         }
    }
    f4() {
        //some lines of code goes here
        f5() {
             //some lines of code goes here
        }
    }
}

其 flame graph 如下:

img

即 x 轴表示函数持续时间,y 轴表示嵌套的调用关系。

Double bookkeeping

指的是在 memory manager 和 file system 里都分别维护 page cache,因此是 double

如何优化效率:

  • RPC-like fastpath: 用于解决资源分配的问题
  • 放松 trusted OS services 之间的隔离:用于降低 IPC 开销
  • 合并紧耦合的 OS services:用于减少 IPC 的频率
  • address tokens:用于实现高效内核对象 co-management,并促进对匿名内存的 policy-free in-kernel paging