歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

Unix內核知識講解

今天,我們來對Unix內核的知識進行講解。學習了很多關於Unix內核的知識。我們知道所有的Unix內核都同宗同源,並且提供相同的API,現代的Unix內核存在許多設計上的相似之處。

Unix內核幾乎毫無例外的都是一個不可分割的靜態可執行塊(文件)。也就是說,它們必須以完整、單獨的可執行塊的形式在一個單獨的地址空間中運行。Unix內核幾乎都需要硬件系統提供頁機制以管理內存。這種頁機制可以加強內存空間的保護,並保證每個進程都可以運行於不同的虛地址空間上。

操作系統內核可以分為兩大設計陣營:單內核和微內核(第三陣營外內核,主要用在科研系統中,但也逐漸在現實世界中壯大起來)。

單內核是兩大陣營中一種較為簡單的設計,在1980年之前,所有的內核都設計成單內核。所謂單內核就是把它從整體上作為一個單獨的大過程來實現,並同時運行在一個單獨的地址空間。

因此,這樣的內核通常以單個靜態二進制文件的形式存放於磁盤。所有內核服務都在這樣的一個大內核空間中運行。內核之間的通信是微不足道的,因為大家都運行在內核態,並身處同一地址空間:內核可以直接調用函數,這與用戶空間沒有什麼區別。

這種模式的支持者認為單模塊具有簡單和高性能的特點。大多數Unix內核都設計為單模塊。

另一方面,微內核並不作為一個單獨的大過程來實現。相反,微內核的功能被劃分為獨立的過程,每個過程叫做一個服務器。理想情況下,只有強烈請求特權服務的服務器才運行在特權模式下,其他服務器都運行在用戶空間。

不過,所有的服務器都保持獨立並運行在各自的地址空間。因此,就不可能像單模塊內核那樣直接調用函數,而是通過消息傳遞處理微內核通信:系統采用了進程間通信(IPC)機制,因此,各種服務器之間通過IPC機制互通消息,互換“服務”。服務器的各自獨立有效地避免了一個服務器的失效禍及另一個。Unix內核也是如此。

同樣,模塊化的系統允許一個服務器為了另一個服務器而換出。因為IPC機制的開銷比函數調用多,又因為會涉及內核空間到用戶空間的上下文切換,因此,消息傳遞需要一定的周期,而單內核中簡單的函數調用沒有這些開銷。

基於此,付之於實際的微內核系統讓大部分或全部服務器位於內核,這樣,就可以直接調用函數,消除頻繁的上下文切換。Windows NT內核和Mach(Mac OS X的組成部分)是微內核的典型實例。

不管是Windows NT還是Mac OS X,都在其新近版本中不讓任何微內核服務器運行在用戶空間,這違背了微內核設計的初衷。關於Unix內核,我們就介紹了這麼多。

Copyright © Linux教程網 All Rights Reserved