1 2 劃分核心

2021-04-14 01:16:18 字數 1461 閱讀 9772

1.2. 劃分核心

第 1 章 第一章 裝置驅動簡介

在 unix 系統中, 幾個併發的程序專注於不同的任務. 每個程序請求系統資源, 象計算能力, 記憶體, 網路連線, 或者一些別的資源. 核心是個大塊的可執行檔案, 負責處理所有這樣的請求. 儘管不同核心任務間的區別常常不是能清楚劃分, 核心的角色可以劃分(如同圖核心的劃分)成下列幾個部分:

程序管理

核心負責建立和銷毀程序, 並處理它們與外部世界的聯絡(輸入和輸出). 不同程序間通訊(通過訊號, 管道, 或者程序間通訊原語)對整個系統功能來說是基本的, 也由核心處理. 另外, 排程器, 控制程序如何共享 cpu, 是程序管理的一部分. 更通常地, 核心的程序管理活動實現了多個程序在乙個單個或者幾個 cpu 之上的抽象.

記憶體管理

計算機的記憶體是主要的資源, 處理它所用的策略對系統效能是至關重要的. 核心為所有程序的每乙個都在有限的可用資源上建立了乙個虛擬位址空間. 核心的不同部分與記憶體管理子系統通過一套函式呼叫互動, 從簡單的 malloc/free 對到更多更複雜的功能.

檔案系統

unix 在很大程度上基於檔案系統的概念; 幾乎 unix 中的任何東西都可看作乙個檔案. 核心在非結構化的硬體之上建立了乙個結構化的檔案系統, 結果是檔案的抽象非常多地在整個系統中應用. 另外, linux 支援多個檔案系統型別, 就是說, 物理介質上不同的資料組織方式. 例如, 磁碟可被格式化成標準 linux 的 ext3 檔案系統, 普遍使用的 fat 檔案系統, 或者其他幾個檔案系統.

裝置控制

幾乎每個系統操作最終都對映到乙個物理裝置上. 除了處理器, 記憶體和非常少的別的實體之外, 全部中的任何裝置控制操作都由特定於要定址的裝置相關的**來進行. 這些**稱為裝置驅動. 核心中必須嵌入系統中出現的每個外設的驅動, 從硬碟驅動到鍵盤和磁帶驅動器. 核心功能的這個方面是本書中的我們主要感興趣的地方.

網路 網路必須由作業系統來管理, 因為大部分網路操作不是特定於某乙個程序: 進入系統的報文是非同步事件. 報文在某乙個程序接手之前必須被收集, 識別, 分發. 系統負責在程式和網路介面之間遞送資料報文, 它必須根據程式的網路活動來控制程式的執行. 另外, 所有的路由和位址解析問題都在核心中實現.

linux 的眾多優良特性之一就是可以在執行時擴充套件由核心提供的特性的能力. 這意味著你可以在系統正在執行著的時候增加核心的功能( 也可以去除 ).

每塊可以在執行時新增到核心的**, 被稱為乙個模組. linux 核心提供了對許多模組型別的支援, 包括但不限於, 裝置驅動. 每個模組由目標**組成( 沒有連線成乙個完整可執行檔案 ), 可以動態連線到執行中的核心中, 通過 in**od 程式, 以及通過 rmmod 程式去連線.

圖 核心的劃分 表示了負責特定任務的不同類別的模組, 乙個模組是根據它提供的功能來說它屬於乙個特別類別的. 圖核心的劃分 中模組的安排涵蓋了最重要的類別, 但是遠未完整, 因為在 linux 中越來越多的功能被模組化了.

圖 1.1. 核心的劃分

2劃分的實現

1.定義 2劃分,是指多個事物作為乙個集合s,把集合s的事物分成兩部分。而這樣的不同劃分有多少個,即為2劃分數。例如,s 則2劃分有 a b,c b a,c c a,b 2劃分數為3.2.演算法實現 假設s的大小為n,即有n個元素。那麼相對於s的不同劃分有 2的 n 1 次方 減 1 個。所以,用乙...

23 劃分字母區間

題目描述 字串 s 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。示例 1 輸入 s ababcbacadefegdehijhklij 輸出 9,7,8 解釋 劃分結果為 ababcbaca defegde hijhk...

763 劃分字母區間

字串 s 由小寫字母組成。我們要把這個字串劃分為盡可能多的片段,同乙個字母只會出現在其中的乙個片段。返回乙個表示每個字串片段的長度的列表。示例 1 輸入 s ababcbacadefegdehijhklij 輸出 9,7,8 解釋 劃分結果為 ababcbaca defegde hijhklij 每...