Linux核心學習筆記一

2022-03-24 08:52:30 字數 2617 閱讀 1981

核心與作業系統:

核心是作業系統的核心部分,包含了系統執行的核心過程,決定系統的效能,作業系統啟動核心被裝入到ram中;

作業系統與底層硬體裝置互動和為執行應用程式提供執行環境。

linux核心與微核心比較:

微核心:核心只需要乙個很小的函式集,通常包括幾個同步原語,乙個簡單的排程程式和程序間通訊機制。

執行在微核心之上的幾個系統程序實現系統級功能:記憶體分配,裝置驅動程式……完全的模組化程序。任何操作

系統層都是獨立的程式模組,

通過模組化的方法定義明確清晰的軟體介面與其它層互動。核心中暫且不需要執行

的系統程序可以被調出或者撤銷。

微核心便於移植和充分利用ram,但開銷大效率是個問題。

單核心:linux核心:單塊結構。核心的全部**,包括所有子系統(如記憶體管理、檔案系統、裝置驅動程式)

都打包到乙個檔案中。核心中的每個函式都可以訪問核心中所有其他部分。模組特性依賴於核心與使用者層之間設計

精巧的通訊方法,這使得模組的熱插拔和動態裝載得以實現。

每個核心層都被繼承到整個核心程式中,並代表著當前程序在核心態下執行。

模組化(非程序)——允許在執行狀態下動態的安裝。模組是乙個目標檔案,其**在執行時鏈結到核心或從核心解除鏈結。

目標**通常

是一組函式組成,用來實現檔案系統,驅動程式……這些模組與其他靜態鏈結核心函式一樣,代表著

當前程序

在核心態下執行,直接函式呼叫避免程序切換訊息傳遞的開銷,效率可能更高。

linux使用者程式兩種狀態:

使用者態和核心態;使用者態切換到核心態:

l  程序系統呼叫

l  cpu異常

l  中斷

l  核心執行緒被執行

多使用者系統:

能併發執行和獨立的執行多個使用者的應用程式,各個使用者擁有獨立空間。使用者組,root使用者。

linux程序:

程序process:

l  作業系統的基本抽象。

l  程序是程式執行時的乙個例項;乙個執行程式的執行上下文。

l  幾個程序能併發的執行同乙個程式;而同乙個程序能順序執行幾個程式。

l  具有獨立的位址空間;多個程序可以同時執行。

程序受核心管理;每個程序由乙個程序描述符表示,包含程序當前的狀態資訊。

當核心暫停乙個程序的執行時,就把幾個相關處理器暫存器的內容儲存在程序描述符中。這些暫存器包括:

l  程式計數器pc和棧指標sp暫存器

l  通用暫存器

l  浮點暫存器

l  包含cpu狀態資訊的處理控制暫存器

l  跟蹤程序對ram訪問的記憶體管理暫存器

當核心恢復執行程序時:將程序描述符中合適欄位來裝在cpu暫存器,根據程式計數器指向恢復到程式執行的地方。

linux重入核心:

核心可重入:

可重入函式:使用區域性變數

實現同步機制:訊號量、鎖、關中斷

程序執行狀態切換: 程序在使用者態與核心態的轉換,linux是搶占式核心

同步和臨界區:核心資料操作訪問。

程序間通訊ipc:訊號量、訊息佇列、共享記憶體

程序管理:fork與_exit,exec(),子程序與父程序

linux檔案系統:

檔案系統是對儲存裝置上的資料和元資料進行組織的機制,以樹形結構組織。

檔案型別:

不同檔案

目錄符號鏈結

面向塊得裝置檔案                               (裝置驅動相關)

面向字元的裝置檔案                           (裝置驅動相關)

管道(pipe)和命名管道(named pipe)(程序間通訊相關)

套接字(socket)                                 (程序間通訊相關)

檔案訪問許可權和訪問模式

檔案描述符和索引節點:記錄檔案的資訊資料。

檔案操作的系統呼叫:open、read、write……

記憶體管理:

虛擬記憶體:處於應用程式記憶體請求與硬體記憶體單元之間的邏輯層。

隨即訪問儲存器ram:一部分用於核心映像,其餘虛擬記憶體處理

核心記憶體分配器:kma 處理記憶體請求子系統

l  速度快

l  減少記憶體浪費

l  減輕記憶體碎片

l  與其他記憶體管理合作(頁框)

l  記憶體分配演算法

程序虛擬空間位址處理:核心分配給程序的虛擬位址空間由以下記憶體區組成:

l  程式的可執行**

l  程式的初始化資料

l  程式未初始化資料

l  初始化程式棧

l  所需共享庫的可執行**和資料

l  程式動態請求的記憶體堆

快取記憶體:

裝置驅動程式:

核心通過裝置驅動程式與i/o裝置互動,裝置驅動程式在核心中,使用者程式通過核心訪問裝置。

linux核心學習筆記

核心的配置 a.make s3c2410 deconfig b.make menuconfig 圖形化配置 c.使用廠家給出的配置 生成.config 編譯生成核心,使用如下命令 make vmlinux make uimage 帶頭部 真正核心 1 config 建立生成autoconf.h 供源...

Linux核心學習筆記

2.2 核心原始碼樹 arch 特定體系結構的原始碼 block crypto api crypto 核心原始碼文件 drivers 裝置驅動程式 firmware fs vfs和各種檔案系統 include 核心標頭檔案 init 核心引導和初始化 ipc 程序間通訊 kernel 像排程程式這樣...

Linux核心學習筆記 核心同步

linux核心中執行的程式,時刻都要防止併發引起的競態。這將會導致資料結構被破壞,嚴重的時候會引起核心崩潰。所以核心同步技術對核心開發的驅動程式來說非常重要。不懂核心同步技術的人,是寫不出安全健壯的核心驅動程式來的。在學習核心同步技術之前需要掌握一下幾個概念。1 並行,併發與競態 在smp執行的li...