Exokernel
Exokernel,一種作業系統內核架構,是一種極簡化的核心,也被稱為外核心(Exokernel),外核、或極限核心。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Exokernel.svg/289px-Exokernel.svg.png)
在Exokernel中,運作在核心空間的唯一行程就是內核,唯一工作就是負責分配系統資源,並防止使用者行程存取到其他行程的資源。每個使用者行程都擁有一個虛擬機器,可以執行自己的作業系統。
Exokernel的設計理念是盡可能的減少軟體的抽象化,這使得開發者可以專注於硬體的抽象化。外核心的設計極為簡化,它的目標是在於同時簡化傳統微內核的訊息傳遞機制,以及整塊性核心的軟體抽象層。
歷史
編輯Exokernel是在1994年提出的概念,由麻省理工學院並行與分布式操作系統小組(Parallel and Distributed Operating Systems Group)所發展出。
現在,外核設計還停留在研究階段,沒有任何一個作業系統採用了這種設計。幾種概念上的操作系統正在被開發,如劍橋大學的Nemesis,格拉斯哥大學的Citrix系統和瑞士計算機科學院的一套系統。麻省理工學院也在進行着這類研究。
技術內容
編輯它的設計理念是讓用戶程序的設計者來決定硬件接口的設計。外內核本身非常的小,它通常只負責系統保護和系統資源復用相關的服務。
傳統的內核設計(包括單核和微核)都對硬件作了抽象,把硬件資源或設備驅動程序都隱藏在硬件抽象層下。比方說,在這些系統中,如果分配一段物理存儲,應用程序並不知道它的實際位置。
而外核的目標就是讓應用程序直接請求一塊特定的物理空間,一塊特定的磁盤塊等等。系統本身只保證被請求的資源當前是空閒的,應用程序就允許直接存取它。既然外核系統只提供了比較低級的硬件操作,而沒有像其他系統一樣提供高級的硬件抽象,那麼就需要增加額外的運行庫支持。這些運行庫運行在外核之上,給用戶程序提供了完整的功能。
理論上,這種設計可以讓各種操作系統運行在一個外核之上,如Windows和Unix。並且設計人員可以根據運行效率調整系統的各部分功能。