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