操作系统设计/内核架构/微内核
外观
微内核方法是定义一个非常简单的硬件抽象,并使用一组原语或系统调用来实现最小的操作系统服务,例如线程管理、地址空间和进程间通信。所有其他服务(通常由内核提供的服务,例如网络)都实现为用户空间程序,称为服务器。服务器是与其他程序一样的程序,允许通过简单地启动和停止程序来修改操作系统。例如,对于没有网络支持的小型机器,网络服务器根本不会启动。在传统系统下,这将需要重新编译内核,这远远超出了普通最终用户的能力。从理论上讲,该系统也更稳定,因为故障服务器只是停止单个程序,而不是导致内核本身崩溃。
然而,系统状态的一部分会随着故障服务器丢失,并且通常很难继续执行应用程序,甚至使用新副本继续执行其他服务器。例如,如果负责 TCP/IP 连接的(理论)服务器重新启动,应用程序可能会被告知连接“丢失”并重新连接,通过服务器的新实例。但是,其他系统对象,如文件,没有这些方便的语义,应该可靠,不会随机变得不可用,并保留之前写入的所有信息。因此,需要在服务器之间使用像事务、复制和检查点这样的数据库技术,以在单个服务器重启时保留基本状态。
微内核通常比传统设计性能差,有时甚至显著差。这在很大程度上是由于为了在各个应用程序和服务器之间移动数据而进出内核(上下文切换)的开销。最初认为,仔细调整可以显著减少这种开销,但在 90 年代中期,大多数研究人员都放弃了。在最近,为性能而设计的较新的微内核在很大程度上解决了这些问题。然而,现有操作系统的市场已经根深蒂固,因此微内核设计方面的进展很少。