【Linux內幕】一張圖看懂linux內核架構

1.前言

Linux內核可以劃分爲5個組件部分,每個部分的功能定義都非常明確,各組件又爲內核的其他組件提供相應的服務。這種劃分可以從內核的源碼樹形結構中看到,在內核源碼根目錄下每個組件都有自己的目錄和子樹。
在這裏插入圖片描述
從代碼角度來看Linux內核的架構,更爲詳實。本博客的“協議森林”系列也來源於此,主要是圍繞“networking”展開的。
在這裏插入圖片描述

2.進程管理

負責創建、結束進程,管理內核的活動,如軟件中斷、tasklet等,管理進程間通信,如消息(message)、管道(pipe)等,實現進程調度(schedule)。進程調度是進程管理的重要任務,它處理所有活動的、等待被執行的和被阻塞(blocking)的進程調度,使所有應用和進程合理地共享處理器的運行時間。
什麼是進程?進程(process)是一個正在執行的程序實例,各進程擁有自己獨立的地址空間。進程通常在執行某個應用程序時啓動,應用執行完成後結束。創建、控制和結束進程是操作系統內核的一項重要任務。在用戶地址空間執行的進程是互斥的,它們只能訪問系統分配給它們的存儲空間。用戶地址空間的進程也不能直接訪問內核功能。
當用戶進程需要訪問設備或使用操作系統內核的功能時,必須通過系統調用(system call)來完成。系統調用將處理器切換到保護模式,隨後訪問內核的地址空間,在保護模式下,所有的設備和內存資源通過內核實現API訪問。
除了常規的進程和系統調用外,在內核中還包含了幾種其他活動,這幾種活動對網絡子系統而言尤其重要,因爲網絡功能就是在內核中處理的。
● 內核線程(kernel thread)。
● 中斷(硬件中斷)。
● 軟件中斷。
● tasklet。
● bottom half。

3.內存管理

內存是系統最主要的資源之一,計算機的性能在很大程度上與其所配備的內存有關。Linux內核內存管理的主要功能就是給進程分配地址空間,該地址空間只允許本進程自己訪問。

4.文件系統

在Linux操作系統中,文件系統是整個系統的中樞。Linux與其他操作系統不同,幾乎所有的操作都基於文件系統接口的處理,如設備驅動程序可以按文件方式訪問設備,通過/proc文件系統可以訪問Linux內核的數據和參數,這兩個功能在調試時非常有效。

5.設備驅動程序

在所有的操作系統中,設備驅動程序都是硬件的抽象,通過它可以訪問硬件。Linux可以用模塊(模塊)的方式實現設備驅動程序,提供了在系統運行時動態加載和卸載設備驅動程序的途徑。

6.網絡子系統

在Linux中所有的網絡操作是由操作系統管理的。這是因爲網絡操作不能分配給某個進程完成。在處理收到的網絡數據包時,數據包的接收是異步事件。接收數據包任務必須在進程處理這些數據包前先收集齊所有的網絡包、標識數據,然後向上層傳送,這就是爲什麼由內核的網絡子系統負責處理數據包,而不是由某個進程和網絡接口來處理。
在內核中還定義了大量的接口,目的是爲了更方便地擴展內核功能,如虛擬文件系統接口(Virtual Filesystem Interface),可用於增加新的文件系統,現在Linux中能支持十多種不同的文件系統;可見Linux的開發人員定義這種接口所帶來的優勢。在Linux的網絡體系結構中也定義了很多接口,用以支持動態增加網絡協議和網絡設備驅動程序。

加入討論

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章