跳至內容

核心

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

核心(英語:Kernel,閣稱內核)佇計算機科學中是一个用來管理軟體發出的資料 I / O(輸入佮輸出)要求的電腦的程式,共遮的要求轉譯做資料處理的指令交予中央閣處理器(CPU)佮電腦其他電子元件進行處理,是現代作業系統中上基本的部份。伊是眾多應用程式提供對電腦硬體的安全存取的一部份軟體,這種存取是有限的,而且由核心決定一个坎站佇啥物時陣對某部份硬體操作偌長時間。直接對硬體操作是有夠複雜的。所以核心通常是提供一種硬體抽象的方法,來完成遮的操作。有了這,通過行程間通訊機制佮系統呼叫,應用行程會當接控制所需要的硬體資源(特別是處理器佮 IO 裝置)。

論真講,核心並毋是電腦系統的必要的組成部份。有一寡程式會當直接調入去電腦當中執行;按呢的設計,說明了設計者無希望提供任何的硬體抽象和作業系統的支援;伊會看著較早電腦系統的設計內底。毋過隨著電腦技術的發展,終其尾,一寡輔助性程式,比如講程式載入器佮除錯器,予人設計去機器核心當中,抑是寫入去唯讀記持體內底。這變化的時陣發生,作業系統核心的概念就漸漸深深起來矣。

分類

核心佇設計上會當概分做宏核心佮微核心兩大架構。佇宏核心佮微核心之間,進行彼妥協的設計,這叫是混合核心,但是混合核心敢會當予人列做第三大架構,目前是原仔有爭議。另外佮微核心相𫝛,有一種極端的設計方式,講外核心,猶閣佇咧研究階段,無任何一个流行的作業系統採用矣這種設計。

單核心

單核心結構佇咧硬體之上,定義一个高階的抽象介面,應用一組原語(抑是叫系統呼叫(System call)) 來實現做業系統的功能,譬如講行程管理,檔案系統,佮儲存管理等等,遮的功能由濟个執行佇核心態的模組來完成。

就算每一个模組攏是單獨的服務遮的操作,核心代碼是懸度整合的,而且歹編寫正確。因為所有的模組攏佇仝一个核心空間上執行,一个足細的 bug 攏會使規个系統崩盤。毋過,若開發順序,單核心結構就會當對執行效率上得著好處。

足濟現代的單核心結構核心,如 Linux 和 FreeBSD 核心,會當佇執行的時陣將模組調入執行,這就會當使擴充核心的功能變閣較簡單,也會當使核心的核心的部份變閣較簡單。

單核心結構的例:

  • 傳統 Unix 核心
  • BSD
  • Solaris
  • 類 Unix 系統(Unix-like)的核心
  • FreeBSD
  • OpenBSD
  • NetBSD
  • Linux
  • LynxOS
  • Syllable Desktop
  • DOS
  • DR-DOS
  • MS-DOS
  • Microsoft Windows 九 x 系列(九十五、九十八、九十八 SE、Me)
  • Mac OS(對上頭仔版到 Mac OS 八堵六版)
  • OpenVMS
  • XTS 被四百

微核心

微核心結構由一个非常簡單的硬體抽象層和一組較關鍵的原語抑是系統呼叫組成;這原語,干焦包括建立一个系統必須的幾个部份;如執行緒管理,位址空間和行程間通訊等等。

微核的目標是將系統服務的實現佮系統的基本操作規則分離開來。比如講,行程的輸入 / 輸出鎖定服務會當由執行佇微核以外的一个服務組件來提供。遮的非常模組化的使用者態侍服器用於完成作業系統內面較進階的操作,按呢的設計使核心上核心的部份的設計是閣較簡單。一个服務組件的失效並袂致使規个系統的崩潰,核心需要做的,干焦重新啟動這个組件,毋免影響其他的部份。

微核心將真濟 OS 服務放入分離的行程,如檔案系統,裝置驅動程式,搤行程通過訊息傳遞呼叫 OS 服務。微核心結構必然是加執行緒的,第一代微核心,佇核心提供較濟服務,所以予人號做'大箍微核心',伊的典型代表是 Mach,伊是 Mac OS X 的核心,你會講,炊炊日時仔。第二代微核心干焦提供上基本的 OS 服務,典型的 OS 是 QNX,QNX 佇烏莓手機 BlackBerry 十系統內底予人採用。

微核心結構的這个例:

  • AIX
  • BeOS
  • L 四微核心系列
  • Mach(用佇咧 XNU、GNU Hurd)
  • Minix
  • MorphOS
  • QNX
  • RadiOS
  • VSTa

單核心佮微核心的較

單核心結構是非常有吸引力的一種設計,因為佇仝一个址空間上實現所有複雜的低階作業系統控制代碼的效率會比佇咧無仝位址空間上實現閣較懸的。

二十世紀九空年代初,單核心結構予人認為是過時的。共 Linux 設計變做單核心結構毋是微核心,引起了無數的爭議(參見塔能鮑姆-林納斯辯論)。

這馬乎,單核結構當行向佇設計無簡單出錯,所以伊的發展會比微核心結構閣較猛醒。兩个陣營中攏有成功的案例。微核定定予人用佇機器人佮醫療器器的躉入式的設計去中國,因為伊的系統的關鍵的部份攏處佇咧互相分開的,予人保護的儲存空間內底。這對單核設計來講是無可能的,就算伊採用矣執行的時載入模組的方式。

就算講 Mach 是眾所周知的多用途的微核心,人猶是開發矣除此以外的幾个微核心。L 三是一个演示性的核心,只是為著證明微核心設計並毋總是低執行的速度。伊的後續的版本 L 四,甚至會當將 Linux 核心做伊的一个行程,執行佇咧單獨的址空間。

QNX 是一个對二十世紀八空年代,就開始設計的微核心系統。伊比 Mach 閣較接近微核心的理念。伊會當用佇一寡特殊的領域;佇咧遮的情況下,因為軟體錯誤,致使系統失效是無允准的。比如講太空梭頂懸的機械手,閣有研磨召鏡片的機器,一點仔失覺察就會致使上千美金的損失。

足濟人相信,因為 Mach 袂當解決一寡提出微核心理論的時針對的問題,所以微核心技術攏無路用。Mach 的愛好者表明這是非常狹的觀點,猶毋過遺憾的是敢若所有的人攏開始接受這款觀點。

混合核心

混合核心的設計理念來自微核心,猶毋過伊予一寡微核結構執行佇咧使用者空間的代碼執行佇咧核心空間,按呢予核心的執行效率較懸。這是一種妥協做法,微軟視窗就是一个典型的例。另外閣有 XNU,執行佇蘋果 Mac OS X 上的核心,嘛是一个混合核心。林納斯 ・ 托瓦茲認為混合核心這種分類只是一種市場行銷手法,因為伊的架構實作佮運作的方式接近佇宏核心。

混合核心的例:

  • 自 Windows NT 了所有的時陣 NT 技術的微軟視窗作業系統
  • Mac OS X(使用 Mach 核心來實際做)
  • BeOS 核心
  • DragonFly BSD
  • ReactOS 核心
  • XNU(使用 Mach 核心)

外核心

外核心系統,嘛予人號做是縱向結構作業系統,是一種較極端的設計方法。

伊的設計理念就是予使用者程式的設計者來決定硬體介面的設計。外核心本身非常的細,伊通常干焦負責系統保護佮系統資源復用相關的服務。

傳統的核心設計(包括單核佮微核)攏對硬體作抽象,共硬體資源抑是裝置驅動程式攏藏佇硬體抽象層下。可比講,佇咧遮的系統內底,若分配一段物理儲存,應用程式並毋知影伊的實際位置。

啊若外核的目標就是欲予應用程式直接請求一塊特定的物理空間,一塊特定的磁碟塊等等。系統本身干焦保證予人請求的資源當前是空閒的,應用程式就允准直接存取伊。既然外核系統干焦提供較低階的硬體操作,無親像其他的系統仝款提供進階的硬體抽象,按呢就需要增加加加額外的執行庫支援。遮的執行庫執行佇外核之上,予使用者程式提供了完整的功能。

理論上,這種設計會當予各種作業系統執行佇一个外核之上,如 Windows 和 Unix。並且設計人員會當根據執行效率調整系統的各部份功能。

這馬乎,外核設計猶閣停留佇咧研究階段,無任何一个商業系統採用矣這種設計。幾種概念的作業系統當咧予人開發,如劍橋大學的 Nemesis,格拉斯哥大學的 Citrix 系統佮瑞士電腦科學院的一套系統。麻省理工學院嘛咧進行著這類研究。

參考文獻

參見

  • 作業系統