1. 程式人生 > >(筆記)Linux內核學習(一)之內核介紹

(筆記)Linux內核學習(一)之內核介紹

順序執行 搶占式內核 文件系統 虛擬地址 計數器 不同 文件訪問權限 信號量 應用程序

內核與操作系統:

內核是操作系統的核心部分,包含了系統運行的核心過程,決定系統的性能,操作系統啟動內核被裝入到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內核學習(一)之內核介紹