Linux核心學習筆記一

來源:互聯網
上載者:User

 

核心與作業系統:

       核心是作業系統的核心部分,包含了系統啟動並執行核心過程,決定系統的效能,作業系統啟動核心被裝入到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:一部分用於核心映像,其餘虛擬記憶體處理

       核心記憶體 Clerk:KMA 處理記憶體請求子系統

    l  速度快

    l  減少記憶體浪費

    l  減輕記憶體片段

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

    l  記憶體配置演算法

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

    l  程式的可執行代碼

    l  程式的初始化資料

    l  程式未初始化資料

    l  初始化程式棧

    l  所需共用庫的可執行代碼和資料

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

  快取:

裝置驅動程式:

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

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.