Exokernel,一種作業系統內核架構,是一種極簡化的核心,也被稱為外核心(Exokernel),外核、或極限核心。
在Exokernel中,運作在核心空間的唯一行程就是內核,唯一工作就是負責分配系統資源,並防止使用者行程存取到其他行程的資源。每個使用者行程都擁有一個虛擬機器,可以執行自己的作業系統。
Exokernel的設計理念是盡可能的減少軟體的抽象化,這使得開發者可以專注於硬體的抽象化。外核心的設計極為簡化,它的目標是在於同時簡化傳統微內核的訊息傳遞機制,以及整塊性核心的軟體抽象層。
歷史
Exokernel是在1994年提出的概念,由麻省理工學院并行与分布式操作系统小组(Parallel and Distributed Operating Systems Group)所發展出。
现在,外核设计还停留在研究阶段,没有任何一个作業系统采用了这种设计。几种概念上的操作系统正在被开发,如剑桥大学的Nemesis,格拉斯哥大学的Citrix系统和瑞士计算机科学院的一套系统。麻省理工学院也在进行着这类研究。
外内核有一个应用叫OSv (页面存档备份,存于互联网档案馆),是一个unikernel。
技術內容
它的设计理念是让用户程序的设计者来决定硬件接口的设计。外内核本身非常的小,它通常只负责系统保护和系统资源复用相关的服务。
传统的内核设计(包括单核和微核)都对硬件作了抽象,把硬件资源或设备驱动程序都隐藏在硬件抽象层下。比方说,在这些系统中,如果分配一段物理存储,应用程序并不知道它的实际位置。
而外核的目标就是让应用程序直接请求一块特定的物理空间,一块特定的磁盘块等等。系统本身只保证被请求的资源当前是空闲的,应用程序就允许直接存取它。既然外核系统只提供了比较低级的硬件操作,而没有像其他系统一样提供高级的硬件抽象,那么就需要增加额外的运行库支持。这些运行库运行在外核之上,给用户程序提供了完整的功能。
理论上,这种设计可以让各种操作系统运行在一个外核之上,如Windows和Unix。并且设计人员可以根据运行效率调整系统的各部分功能。