久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

linux內核驅動-內核初涉

來源:技術員聯盟┆發布時間:2018-08-30 00:22┆點擊:

  一、為什么要學習內核?

  有些人要學習內核,而有些人則可以不學習它。你如果以后要從事系統研發或驅動開發的話,就要學習內核。

  剛剛接觸內核,主要學習內核的接口函數。不要深入的去讀內核,因為你讀也讀不懂,內核代碼龐大如野獸一般不可駕馭。

  學習內核主要掌握層次學習法,即從頭開始學習,一環緊扣一環。

  內核學習的四步學習法:1、核心理論學習-概念與函數原型2、范例程序分析3、思維導圖設計4、親自編寫代碼

  二、linux內核簡介

  1、linux體系結構

  分為兩部分:用戶空間和內核空間

linux內核驅動-內核初涉    三聯

  2、linux為什么要分為用戶空間和內核空間

  現代CPU通常實現了不同的工作模式,以ARM為例,實現了7中工作模式。X86實現了4中不同的級別:Ring0-Ring3. Ring0下可以執行特權指令,可以訪問IO設備等,在Ring3則有很多限制。linux系統利用CPU的這一特性,使用了其中兩個級別分別運行linux內核與應用程序,這樣使操作系統本身得到充分的保護。例如:如果使用X86,用戶代碼運行在Ring3,內核代碼運行在Ring0.內核空間與用戶空間是程序執行的兩種不同狀態,通過系統調用和硬件中斷能夠完成從用戶空間到內核空間的轉移。

  3.linux的內核構架

linux內核驅動-內核初涉

  系統調用接口

  SCI層為用戶空間提供了一套標準的系統調用函數來訪問Linux內核,搭起了用戶空間到內核空間的橋梁。

  進程管理(PM)是創建進程,停止進程,并控制它們之間的通信。進程管理還包括控制活動進程如何共享CPU,即進程調度。

  內存管理(MM)的主要作用是控制多個進程安全地共享內存區域。

  網絡協議棧(Network Stack)為linux提供了豐富的網絡協議實現。

  虛擬文件系統(VFS)隱藏各個文件系統的具體細節,為文件操作提供統一的接口。

linux內核驅動-內核初涉

  設備驅動(DD):linux內核中有大量代碼都在設備驅動程序中,它們控制特定的硬件設備。

  三、linux內核源代碼結構

  1、下載源代碼地址

  2、linux內核源代碼采用樹形結構進行組織,非常合理地把功能相關的文件都放在同一個子目錄下,使得程序更具可讀性。

linux內核驅動-內核初涉

  arch目錄:arch是architecture的縮寫。內核所支持的每種CPU體系,在該目錄下都有對應的子目錄。每個cpu的子目錄,又進一步分解為boot,mm,kernel等子目錄,分別包含控制系統引導,內存管理,系統調用等。/* X86英特爾cpu與之相兼容體系結構的子目錄:boot 引導程序compressed內核解壓縮 tools生成壓縮內核映像的程序 kernel相關內核特性實現方式,如信號處理、時鐘處理 lib 硬件相關工具函數*/

  documentation內核文檔

  drivers設備驅動文檔

  include內核所需要的頭文件。與平臺無關的頭文件在include/linux子目錄下,與平臺有關的頭文件則放在相應的子目錄中。

  fs目錄存放各種文件系統的實現代碼。每個子目錄對應一種文件系統的實現,公用的源程序用于實現虛擬文件系統vfs

  "|--devpts是/dev/pts虛擬文件系統

  ||--ext2是第二擴展文件系統

  ||--fat是MS的fat32文件系統

  ||--isofs 是IsO9660光盤cd-rom上的文件系統

  net是網絡協議的實現代碼

  ||--802 802無線通訊協議核心支持代碼

  ||--appletalk 與蘋果系統連網的協議

  ||--ax25 AX25無線INTERNET協議

  ||--bridge 橋接設備

  ||--ipv4 IP協議族V4版32位尋址模式

  ||--ipv6 IP協議族V6版

  四、linux內核的配置和編譯

  代碼是如何轉化為燒寫或安裝到硬件平臺中的系統映像文件的?

  1、為什么要配置內核

  選出需要的,去掉不要的!1、硬件的需求2、軟件的需求

  下載內核后要在linux中解壓縮,不要在windows下解壓縮因為windows下不區分大小寫,而linux操作系統區分大小寫。

  進入內核的文件下:

  2、內核的配置:

  make config:基于文本模式的交互式配置

  make menuconfig:基于文本模式的菜單型配置

linux內核驅動-內核初涉

  <*>文件經過編譯由.c文件到.o文件,最后鏈接壓縮為內核鏡像,它存放在內存。

  內核模塊,同上經過編譯后會把.o文件安裝到硬盤。

  < >表示不選擇該功能

  配置結果文件是隱藏文件,可以用ls -a 在內核文件下查看.config version