L4微内核系列

✍ dations ◷ 2025-06-15 11:21:30 #L4微内核系列

L4是一种微内核构架的操作系统内核,最初由约亨·李德克(Jochen Liedtke)设计,前身为L3微内核。在最开始,L4只是一个由约亨·李德克设计并实现的单一的产品,用于Intel i386上的一个高度优化内核。L4微内核系统由于其出色的性能和很小的体积而开始被计算机工业所认知。随后,L4的系统在多个方面上有了高速的发展,值得提及的是一个更加独立于硬件平台的版本,被称为Pistachio,之后又被移植到了许多不同的硬件构架上。现在已经形成一个微内核家族,包括Pistachio,L4/MIPS,与Fiasco。

由于意识到Mach微内核在设计和性能上的缺陷,许多开发人员在90年代中期开始重新审视整个微内核的概念。Mach为了支持一些除了Unix环境以外并不是特别有用的概念,而在进程间通讯(IPC)中增加了大量的额外开销。IPC系统本身就是一个分布式开销的经典案例。在单用户系统中,比如说手机,许可和权限的检查就显得不是那么重要。虽然Mach宣称自己是一个微内核,但是看起来实际上它包含了远超过它所必需的东西。

约亨·李德克想要证明更薄的IPC层、对性能更关注并与硬件特性相关(和与平台无关相对)的设计,会更贴近现实世界中的性能改进。相对于Mach的复杂的IPC系统,他的L3仅简单的传递消息,而没有任何额外的开销。安全和权限被视为同其它用户空间所必需的服务器一样。L3也使用了各种硬件的特性来传递消息,让每个调用都最大化的利用硬件特性,像寄存器。相对而言,Mach则使用的是one-size-fits-all的通用机制,以牺牲性能为代价而获取可移植性。这些改变大量减少IPC中额外的开销。在同样的系统中,Mach需要114毫秒来发送即使是最短的消息,而L3可以用少于10毫秒的时间来发送同样的消息。一次系统调用的时间比Unix所花费的一半还少,而Mach执行同样的系统调用需要5倍于Unix的时间。通过在TÜV SÜD中使用多年,L3被证明是一个安全的操作系统内核。
在L3之后,约亨·李德克开始意识到其它的一些Mach的概念也存在同样的问题。这导致了更简单地L4的诞生,由于太简单了,随后L4被证明是具有高可移植性的。

回顾历史,大多数Mach的性能问题似乎只能以重新设计来解决。例如,在Mach微内核与宏内核的比较中的另一个主要的瓶颈是在一个真实的"服务器"集系统中内核无法知道怎样有效地进行分页内存。开发者们使用宏内核可以,并且已经投入了可观的时间以试图了解内核的内存使用的精确性质,然后调整他们的系统来利用这些优点。在微内核上开发者无法知道是什么组成系统,而且除了一些特例之外无法更近地监视内存使用。

Liedtke决定这个问题的解决方案是简单地从内核中移除全部分页工作,并允许每个应用程序应用以前只能应用于宏内核的调整形式。在L4系统下,操作系统(相对于内核)被期望提供分页服务,潜在地可以以很多种形式,允许开发者选取最适合于他们的工作的方式。内核的角色减少到知道这样的系统存在并提供一个支持它们的机制。在L4下,这总共需要三个函数:Grant,Map和Unmap。

结果设计哲学变成了最小化的。就像L4/MIPS的作者们所表述的:“一项特性当且仅当安全需要它在特权模式被实现时才应该在微内核里”。Mach关注于跨平台的可移植性,多处理器支持和其它“下一件大事”的主机。

一个基于L4的操作系统必须提供那些上一代宏内核内部所内置的服务。例如,为了实现一个类Unix的安全系统,服务器必须提供像Mach内核所内置的权限管理。进一步说,消息在多数情况下必须检查其有效性。但仍不清楚的是,在L4之上运行的真实的操作系统的端对端性能是否会显著快于一个基于Mach创建的系统。在一个移植到L4之上运行的Linux,和另一个移植到Mach之上运行的MkLinux,与基本的Linux系统本身之间的测试清楚地表明了L4的性能的优势。即使在最好的情况下MkLinux运行得比宏内核慢15%,而同时L4只慢大约5-10%。更进一步移植Linux系统的开发,而不是为测试而实现,有可能提高(性能)到一定程度。

Liedtke的L4原始版本是为速度而创建的。为了榨干每一滴性能,许多关键段落是以汇编语言写成的。他的工作在操作系统设计圈引起了一场小小的革命。很快它被一些大学所研究,然后很快是IBM,就是Liedtke所迁往的地方。在IBM一个L4的新版本被创造出来,Lemon Pip,紧接着是使用C++创造一个跨平台版本的努力,Lime Pip。

Karlsruhe大学也选择L4进行开发,在那里他们开发了L4Ka::Hazelnut,一个计划运行于所有32位机器上C++的版本。他们试图判断像C++这种高级语言的额外开销是否会抹杀掉其所提供的编程便利性。这份努力很成功,性能仍然是极好的,在它发布时IBM的Lime Pip项目终止了。Hazelnut最终为了可移植性、64位支持和更好的性能被全部重写,由此而产生了L4Ka::Pistachio。

新南威尔士大学也同样进行着开发,在那里开发者在多种64位平台上实现了L4。他们开发了L4/MIPS和L4/Alpha,而Liedtke的原始版本被追认为L4/x86。像Liedtke的最初的内核那样,UNSW内核是不可移植的并且是分别从头重写的。在高度可移植的Pistachio发行时,UNSW研究组放弃了他们自己的内核转而支持产生高度优化的Pistachio移植。

最近UNSW研究组在他们的新家National ICT Australia (NICTA),创造了一个新的L4版本称为L4-embedded。就像名称所暗示的那样,这是着眼于在商业嵌入式环境中的使用,因此这个实现在较小的内存印记与减少复杂度的目标之间的进行了权衡。还有正在进行中的如下工作,L4 API的正式化,正规的证明一个实现的正确性,以及为了在L4之上开发良好结构化的系统的框架。

Fiasco是对最初的L4的进一步的开发,包含了硬实时支持,并且被作为DROPS操作系统的基础。对于实时系统使用"快"是不够的,所以Fiasco内核是完全重入的,允许在任何时间被中断。就像其它由最初的L4的发展出来的版本一样,为了可读性和可移植性的原因,Fiasco也是使用C++写成的。

今天几乎所有的开发者出现在Pistachio内核上。新南威尔士大学现在使用Pistachio继续他们的可移植性实验,并且Pistachio内核现在在广泛的硬件上都有提供。其它的研究组在探索实时支持,对像Fiasco那样的概念继续深入研究。基本内核的开发也在Karlsruhe大学继续,朝向新的"Version 4" API而工作(Pistachio 当前只实现了beta版).

GNU Hurd项目在考虑采用L4微内核以取代Mach (GNU Hurd/L4). 当前存在一个目标为致力于在L4框架下最小的实现Mach的设计,开发者们正在它的实现上工作。

2009年,Data61/CSIRO实现了对于其L4内核的形式化证明,并创造出世界上第一个此类的实用操作系统seL4。他们在2013年进一步证明了内核的信息流安全性,使得该系统成为最安全的操作系统之一。

相关

  • 康沃尔语康沃尔语(Kernowek)是属于凯尔特语族中,包括威尔士语、布列塔尼语、已灭亡的坎伯兰语、及假定曾存在的伊佛尼克语的布立吞亚支。而苏格兰盖尔语、爱尔兰语、及曼岛语则是属于另
  • 伏都教伏都教(Vodun .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Altern
  • 越秀山坐标:23°08′34″N 113°15′37″E / 23.14287°N 113.26026°E / 23.14287; 113.26026越秀山,亦称粤秀山、越王山、观音山,是广东省广州市中心的一座历史悠久的山脉,海拔70米,
  • 重度忧郁重性抑郁疾患(英语:Major depressive disorder,缩写MDD),也可简称为抑郁症,是一种精神疾患,特征为超过两周的大多数时间都抑郁不已。常常伴随着没有精神、对一般休闲活动没有兴趣、
  • 清水和男清水和男(1975年4月30日-),前日本足球运动员。
  • 路易斯.凡林特路易斯·凡林特是一位比利时画家,他1909 年12 月25 日生于布鲁塞尔,并于1986 年12 月27 日死于该市。在比利时,他是抒情抽象派画风的杰出代表。路易斯·克利姆斯·凡林特出生于
  • 情圣 (2016年电影)情圣是一部于2016年12月末上映的由上海儒意接盘侠影视制作有限公司出品、新丽传媒股份有限公司发行,宋晓飞、董旭联合执导,肖央、闫妮、小沈阳和乔杉主演的贺岁喜剧片。改编自
  • 战舰波将金号《战舰波将金号》(俄语:Бронено́сец „Потёмкин“)是1925年苏联黑白无声片,片长75分钟,导演是谢尔盖·爱森斯坦。由格列高里·亚力山大洛夫主演。黑白默片《
  • 史进前史进前(1917年-2008年),原名蒲恒温,男,山西定襄人,中华人民共和国军事人物,中国人民解放军少将。
  • 阿拉斯加州行政区划人口普查区域:人口普查区域:美国阿拉斯加州下辖的行政区有建制自治市镇及人口普查区域(英语:Census tract)两类。美国阿拉斯加州共分为十九个建制自治市镇及一个非建制自治市镇(英语:Unorganized Borough, Alaska)。阿拉斯加州和路易斯安那州是美国唯二不称县级行政区为“县”(County)的州份,其中前者称其为“自治市镇”(Borough),而后者则称其为“堂区”(Parishes)。该州许多人口稠密的地区都是阿拉斯加州下辖的建制自治市镇的一部分,而建制自治市镇与其他州的县相似