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