unix/linux內核在系統裡扮演什麼角色?
不僅僅是FreeBSD系統,每一個操作系統都有一個內核---從MS-DOS、Windows到高級終端大型機,但是各種系統對內核的態度不同,有些系統花費了很大精力對用戶隱藏內核。不管是Windows或UNIX系統的發行版本都有一個默認的內核,而且每次發行一個新版本時,所做的改動大部分為新設備提供了驅動支持。內核負責遙相呼應以連接到系統的設備,這也就是為什麼Windows需要為新的或以前不支持的設備安裝驅動程序的原因,而且一般都需要重新啟動系統--因為內核已經被修改了,為了使用新的內核,系統必須重新啟動,否則就要求系統能夠將新設備作為一個內核擴展或都模塊載入。
從內核的構架來看,FreeBSD使用微內核(microkernel)構架,也就是說內核較小而且是模塊化的。Windows NT和Mach(Mac OS X基於的內核)是微內核的另外幾個例子,在這些系統中,新設備一般都被偽內核模塊加入系統中---這些模塊可能在系統運行過程中裝載和卸載而不用重新編譯內核。但是Linux和Windows 9x系統是整體內核(monolithic kernel),其中的內核代碼都從性能角度考慮,盡可能地進行了優化並且使得開發人員維護起來也很容易,但每次往系統中加入新設備之後,會要求系統管理員重新編譯內核。
這並不是一個十分准確的描述---Linux正在盡量將內核模塊化,FreeBSD的內核因為這些不同的原因而必須重新編譯,微內核和整體內核之間的不同很大各應骒一個理論問題,不僅僅是在設備支持上有著不同,二者之間最基本的不同在於,微內核提供了一個支持非系統調用的用戶處理級別或環,而不用全部在系統內部完成,使得巖代大郎的核心精簡蛭了只包含精華的程序,也就是說內核中包含的都是必須要求以監護模式執行狀態的最高級別的部分,是為了增加內核運行的健壯性,並保證內核處理過程容易理解和管理,同時也容易實現設備的模塊化。
盡管上述都挺好的,不幸的是滿足每種設備類型和選項都可模塊化而且都可在運行時,進行裝載要求的崊就和主同一樣不現實,在有了一定的FreeBSD使用經驗之後,讀者脍體會到這一點,會發現無論如何也不可避免地需要重新編譯內核。
Windows內核在哪裡?
在Windows中內核是C:WindowsSystem中的可執行文件:
UNIX內核在哪裡?
在很多UNIX系統中,通常放置內核的位置位於文件系統頂部的根目錄;而FreeBSD系統的內核是放在/boot中的。