《Exokernel: An Operating System Architecture for Application-Level Resource Management》笔记
本文讨论了传统操作系统体系结构的不足。传统的操作系统结构,限制了应用程序的性能。
exokernel操作体系结构(“外内核操作体系结构”)可以给应用程序系统资源的管理访问能力。
在exokernel操作体系结构中,一个小内核通过一个低级接口将所有硬件资源安全地导出到不受信任的库操系统中。
它输出硬件资源而不是模拟它们,并通过使用三种技术来确保安全性:安全绑定、可见资源撤销、中止协议。
作者实现了一个原型外场系统,包括一个外场操作系统(Aegis)和一个不受信任的资源操作系统(EXOS)。外接程序赋予了应用程序对硬件资源的更多控制,例如设计特殊的库,从而简化了硬件和软件之间的接口。
1.Exokernel与传统操作系统结构的比较
1.1 宏内核
宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等都在内核里面。将内核从整体上作为一个大过程实现,并同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。
优点:效率高
缺点:稳定性差、开发过程中的bug经常会导致整个系统挂掉
宏内核:Unix,Linux等
1.2 微内核
微内核:内核中只有最基本的调度、内存管理。驱动、文件系统等都是用户态的守护进程去实现的,微内核中功能被划分成独立的过程,过程间通过IPC进行通信。模块化程度高,一个服务失效不会影响另外一个服务。
优点:超级稳定,驱动等的错误只会导致相应进程死掉,不会导致整个系统都崩溃,做驱动开发时,发现错误,只需要kill掉进程,修正后重启进程就行了,比较方便。
缺点:效率低。
微内核:Window,Minix,Mac等
1.3 Exokernel
POSIX(可移植操作系统接口)、TCP(传输控制协议)、IPC(进程间通信)
如上图是基于exokernel体系结构的实例。由一个exokernel面板组成,该面板通过安全绑定将指定的硬件资源导出到库操作系统中。每个库操作系统都实现自己的系统对象和策略。应用程序链接到标准库或者专用库。这些决定了我们的解决方案是允许完全在应用程序级别实现传统的抽象。
其中exokernel面板是通过一组低级原语安全地复用和导出物理资源。库操作系统使用低级别的exokernel接口,实现更高级别的抽象,并定义最符合应用程序性能和功能目标的实现。这种结构允许拓展、专门化甚至替换抽象。
2.exokernel的目标
这篇文章重点讨论了exokernel体系结构的设计以及如何安全有效地实现exokernel体系结构。
exokernel面临的挑战是在管理物理资源时给予库操作系统最大的自由度,同时保护它们彼此不受影响;一个库操作系统中的编程错误不应影响另一个库操作系统。
为了实现这一目标,exokernel通过一个低级接口将保护与管理分离开来。为了提高分离效率,它使用了安全绑定,使用硬件机制、软件缓存和应用代码下放将管理和保护分开。
宙斯盾和前操作系统原型的实验证明exokernel操作体系结构是一种可行的高性能结构,可扩展的操作系统。