1.2. 劃分內(nèi)核

2018-02-24 15:49 更新

1.2.?劃分內(nèi)核

在 Unix 系統(tǒng)中, 幾個(gè)并發(fā)的進(jìn)程專注于不同的任務(wù). 每個(gè)進(jìn)程請(qǐng)求系統(tǒng)資源, 象計(jì)算能力, 內(nèi)存, 網(wǎng)絡(luò)連接, 或者一些別的資源. 內(nèi)核是個(gè)大塊的可執(zhí)行文件, 負(fù)責(zé)處理所有這樣的請(qǐng)求. 盡管不同內(nèi)核任務(wù)間的區(qū)別常常不是能清楚劃分, 內(nèi)核的角色可以劃分(如同圖內(nèi)核的劃分)成下列幾個(gè)部分:

進(jìn)程管理
內(nèi)核負(fù)責(zé)創(chuàng)建和銷毀進(jìn)程, 并處理它們與外部世界的聯(lián)系(輸入和輸出). 不同進(jìn)程間通訊(通過信號(hào), 管道, 或者進(jìn)程間通訊原語)對(duì)整個(gè)系統(tǒng)功能來說是基本的, 也由內(nèi)核處理. 另外, 調(diào)度器, 控制進(jìn)程如何共享 CPU, 是進(jìn)程管理的一部分. 更通常地, 內(nèi)核的進(jìn)程管理活動(dòng)實(shí)現(xiàn)了多個(gè)進(jìn)程在一個(gè)單個(gè)或者幾個(gè) CPU 之上的抽象.

內(nèi)存管理
計(jì)算機(jī)的內(nèi)存是主要的資源, 處理它所用的策略對(duì)系統(tǒng)性能是至關(guān)重要的. 內(nèi)核為所有進(jìn)程的每一個(gè)都在有限的可用資源上建立了一個(gè)虛擬地址空間. 內(nèi)核的不同部分與內(nèi)存管理子系統(tǒng)通過一套函數(shù)調(diào)用交互, 從簡(jiǎn)單的 malloc/free 對(duì)到更多更復(fù)雜的功能.

文件系統(tǒng)
Unix 在很大程度上基于文件系統(tǒng)的概念; 幾乎 Unix 中的任何東西都可看作一個(gè)文件. 內(nèi)核在非結(jié)構(gòu)化的硬件之上建立了一個(gè)結(jié)構(gòu)化的文件系統(tǒng), 結(jié)果是文件的抽象非常多地在整個(gè)系統(tǒng)中應(yīng)用. 另外, Linux 支持多個(gè)文件系統(tǒng)類型, 就是說, 物理介質(zhì)上不同的數(shù)據(jù)組織方式. 例如, 磁盤可被格式化成標(biāo)準(zhǔn) Linux 的 ext3 文件系統(tǒng), 普遍使用的 FAT 文件系統(tǒng), 或者其他幾個(gè)文件系統(tǒng).

設(shè)備控制
幾乎每個(gè)系統(tǒng)操作最終都映射到一個(gè)物理設(shè)備上. 除了處理器, 內(nèi)存和非常少的別的實(shí)體之外, 全部中的任何設(shè)備控制操作都由特定于要尋址的設(shè)備相關(guān)的代碼來進(jìn)行. 這些代碼稱為設(shè)備驅(qū)動(dòng). 內(nèi)核中必須嵌入系統(tǒng)中出現(xiàn)的每個(gè)外設(shè)的驅(qū)動(dòng), 從硬盤驅(qū)動(dòng)到鍵盤和磁帶驅(qū)動(dòng)器. 內(nèi)核功能的這個(gè)方面是本書中的我們主要感興趣的地方.

網(wǎng)絡(luò)
網(wǎng)絡(luò)必須由操作系統(tǒng)來管理, 因?yàn)榇蟛糠志W(wǎng)絡(luò)操作不是特定于某一個(gè)進(jìn)程: 進(jìn)入系統(tǒng)的報(bào)文是異步事件. 報(bào)文在某一個(gè)進(jìn)程接手之前必須被收集, 識(shí)別, 分發(fā). 系統(tǒng)負(fù)責(zé)在程序和網(wǎng)絡(luò)接口之間遞送數(shù)據(jù)報(bào)文, 它必須根據(jù)程序的網(wǎng)絡(luò)活動(dòng)來控制程序的執(zhí)行. 另外, 所有的路由和地址解析問題都在內(nèi)核中實(shí)現(xiàn).

1.2.1.?可加載模塊

Linux 的眾多優(yōu)良特性之一就是可以在運(yùn)行時(shí)擴(kuò)展由內(nèi)核提供的特性的能力. 這意味著你可以在系統(tǒng)正在運(yùn)行著的時(shí)候增加內(nèi)核的功能( 也可以去除 ).

每塊可以在運(yùn)行時(shí)添加到內(nèi)核的代碼, 被稱為一個(gè)模塊. Linux 內(nèi)核提供了對(duì)許多模塊類型的支持, 包括但不限于, 設(shè)備驅(qū)動(dòng). 每個(gè)模塊由目標(biāo)代碼組成( 沒有連接成一個(gè)完整可執(zhí)行文件 ), 可以動(dòng)態(tài)連接到運(yùn)行中的內(nèi)核中, 通過 insmod 程序, 以及通過 rmmod 程序去連接.

內(nèi)核的劃分 表示了負(fù)責(zé)特定任務(wù)的不同類別的模塊, 一個(gè)模塊是根據(jù)它提供的功能來說它屬于一個(gè)特別類別的. 圖 內(nèi)核的劃分 中模塊的安排涵蓋了最重要的類別, 但是遠(yuǎn)未完整, 因?yàn)樵?Linux 中越來越多的功能被模塊化了.

圖?1.1.?內(nèi)核的劃分

內(nèi)核的劃分

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)