歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> Linux2.6驅動程序《三》 Linux內核及內核編程

Linux2.6驅動程序《三》 Linux內核及內核編程

日期:2017/2/28 16:13:55   编辑:Linux內核

一、Linux2.6相對於Linux2.4有相當大的改進,主要體現在如下幾個方面:

<1>新的調度器:使用了新的進程調度算法,它在高負載的情況下執行得很好,並且有很多處理器時可以進行很好的擴展

<2>內核搶占:內核任務可以被搶占,從而提高系統的實時性

<3>改進的線程模型:線程操作速度提高,可以處理任意數目的線程

<4>虛擬內存的變化:融合了r-map(反向映射)技術

<5>文件系統:對擴展屬性和POSIX標准訪問控制的支持

<6>音頻:新的音頻體系結構ALSA替代舊的OSS,支持USB音頻和MIDI設備,並支持全雙工

<7>總線、電源管理、網絡(IPv6)、用戶界面等

在設備驅動程序方面主要變化有:

<1>內核模塊從.o 變成.ko

<2>驅動模塊編譯方式

<3>模塊使用計數

<4>模塊加載和卸載函數的定義等方面

二、內核目錄介紹:

arch:包含和硬件體系結構相關的代碼

block:塊設備驅動程序I/O調度

crypto:常用加密和散列算法

Documentation:內核各部分的通用解釋和注釋

drivers:設備驅動程序,每個不同的驅動占用一個子目錄,如char、block、net、mtd、i2c等

fs:支持的各種文件系統

include:頭文件,與系統相關的頭文件被放置在include/linux子目錄下

init:內核初始化代碼

ipc:進程間通信的代碼

kernel:內核的最核心部分,包括進程調度、定時器等,與平台相關的放在 arch/*/kernel目錄下

lib:庫文件代碼

mm:內存管理代碼,與平台相關的一部分代碼放在 arch/*/mm目錄下

net:網絡相關代碼,實現了各種常見的網絡協議

scripts:包含用於配置內核的腳本文件

security:主要包含SELinux模塊

sound:ALSA、OSS音頻設備驅動核心代碼和常用設備驅動

usr:實現了用於打包和壓縮的cpio等

三、Linux內核的組成部分

Linux內核主要由進程調度(SCHED)、內存管理(MM)、虛擬文件系統(VFS)、網絡接口(NET) 和進程間通信IPC等5個子系統組成

1、進程調度:進程調度處於系統的中心位置,內核中其他子系統都依賴它,Linux進程中如果所請求的資源不能得到滿足,驅動一般會調度其他進程執行,並驅動對應的進程進入睡眠狀態。睡眠分為可打斷睡眠和不可打算睡眠,區別在於可打斷睡眠在收到信號後會醒來

進程狀態轉換圖如下:

設備驅動中,如果需要幾個並發執行的任務,可以啟動內核線程,該函數為:

int kernel_thread(int (*fd)(void *), void *arg,unsigned long flags);

Copyright © Linux教程網 All Rights Reserved