亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

Linux內核源代碼概述

2024-09-05 23:00:47
字體:
來源:轉載
供稿:網友

首先研究 Linux 源代碼樹的頂層目錄,它通常(但不總是)位于 /usr/src/linux-。我們不會研究得過于詳細,因為 Linux 源代碼經常會發生變化,但是,我們將嘗試讓給出的信息足以找出特定驅動程序或函數的位置。

  Makefile:這個文件是整個源代碼樹的頂層 makefile。它定義了很多實用的變量和規則,比如默認的 gcc 編譯標記。

  Documentation/:這個目錄中包含很多關于配置內核、運行 ramdisk 等任務的實用信息(但通常是過時的)。不過,與不同配置選項相應的幫助條目并不在這里 —— 它們在每個源代碼目錄的 Kconfig 文件中。

  arch/:所有與體系結構相關的代碼都在這個目錄以及 include/asm- 目錄中。在此目錄中,每種體系結構都有自己的目錄。例如,用于基于 PowerPC 的計算機的代碼位于 arch/ppc 目錄中。在這些目錄里,可以找到底層內存管理、中斷處理、早期初始化、匯編例程,等等。

  crypto/:這是內核本身所用的加密 API。

  drivers/:按照慣例,在此目錄的子目錄中可以找到運行外圍設備的代碼。包括視頻驅動程序、網卡驅動程序、底層 SCSI 驅動程序,以及其他類似的驅動程序。例如,在 drivers/net 中可以找到大部分網卡驅動程序。將一類驅動程序組合在一起的某些更高層代碼,可能會(也可能不會)像底層驅動程序本身那些包含在同一目錄中。

  fs/:通用文件系統的代碼(稱做 VFS,即 Virtual File System)和各個不同文件系統的代碼都可以在這個目錄中找到。ext2 文件系統是在 Linux 中最常廣泛使用的文件系統之一;在 fs/ext2 中可以找到讀取 ext2 格式的代碼。并不是所有文件系統都會編譯或運行;對某些尋找內核項目的人而言,更生僻的文件系統永遠都是理想的候選者。

  include/:在 .c 文件的開頭所包含的大部分頭文件都可以在這個目錄中找到。 asm- 目錄下是與體系結構相關的包含(include )文件。部分內核構建過程創建從 asm 指定 asm- 的符號鏈接。這樣,無需將其固定編碼到 .c 文件 #include 就可以獲得用于那個體系結構的正確文件。其他目錄中包含的是 非-體系結構-相關 的頭文件。如果在不只一個 .c 文件中使用了某個結構體、常量或者變量,那么它可能應該放入其中一個頭文件中。

  init/:這個目錄中的文件包括 main.c、創建 早期用戶空間(early userspace) 的代碼,以及其他初始化代碼。可以認為 main.c 是內核“粘合劑(glue)”。在下一部分將深入討論 main.c。早期用戶空間提供了 Linux 內核引導起來時所需要的功能,而這些功能并不需要在內核本身運行。

  ipc/:IPC 的意思是 進程間通信(interprocess communication)。它包含了共享內存、信號量以及其他形式 IPC 的代碼。

  kernel/:不適合放在任何其他位置的通用內核級代碼位于此處。這里有高層系統調用代碼,以及 printk() 代碼、調度程序、信號處理代碼,等等。文件名包含很多信息,所以可以使用 ls kernel/,并非能常準確地猜到每個文件的功能。

  lib/:這里是對所有內核代碼都通用的實用例程。常見的字符串操作、調試例程,以及命令行解析代碼都位于此處。

  mm/:這個目錄中是高層次內核管理代碼。聯合使用這些例程以及底層的與體系結構相關的例程(通常位于 arch//mm/ 目錄中)來實現虛擬內存(Virtual memory,VM)。在這里會完成早期內存管理(在內存子系統完全建立起來之前需要它),以及文件的內存映射、頁高速緩存管理、內存分配、RAM 中頁的清除(還有很多其他事情)。

  net/:這里是高層網絡代碼。底層網絡驅動程序與此層次代碼交換數據包,這個層次的代碼可以根據數據包將數據傳遞給用戶層應用程序,或者丟棄數據,或者在內核中使用它。net/core 包含大部分不同的網絡協議都可以使用的代碼,和某些位于 net/ 目錄本身中的文件一樣。特定的網絡協議在 net/ 的子目錄下實現。例如,在 net/ipv4 目錄中可以找到 IP(版本 4)代碼。

  scripts/:這個目錄中包含的腳本可用于內核的構建,但并不將任何代碼加入到內核本身之中。例如,各種配置工具可以將它們的文件放在這里。

  security/:在這里可以找到不同 Linux 安全模型的代碼,比如 NSA Security-Enhanced Linux 以及套接字和網絡安全鉤子函數(hooks),以及其他安全選項。

  sound/:這里放置的是聲卡驅動程序和其他與聲音相關的代碼。

  usr/:此目錄中的代碼用于構建包含 root 文件系統映像的 cpio-格式 的歸檔文件,用于早期用戶空間。

  所有這些匯集在哪

init/main.c 文件是整個 Linux 內核的中央聯結點。每種體系結構都會執行一些底層設置函數,然后執行名為 start_kernel 的函數(在 init/main.c 中可以找到這個函數)。

  代碼的執行順序大致如下:

  Architecture-specific set-up code (in arch//*)

  |

  v

  The function start_kernel() (in init/main.c)

  |

  v

  The function init() (in init/main.c)

  |

  v

  The user level "init" program

  關于執行順序的更多細節

  更詳細地講,發生的事情是:

  執行體系結構相關的設置代碼:

  如果需要,解壓縮并移動內核代碼本身

  初始化硬件

  這可能包括底層內存管理的設置

  將控制權轉交給函數 start_kernel()

  start_kernel() 去執行以下事情(以及其他事情):

  打印內核版本和命令行

  啟動控制臺輸出

  啟用中斷

  校準延遲循環

  調用 rest_init(),這個函數會:

  啟動一個內核線程來運行 init() 函數

  進入空閑循環

  init():

  啟動其他處理器(在 SMP 機器上)

  啟動設備子系統

  掛載 root 文件系統

  釋放不使用的內核內存

  運行 /sbin/init(或者 /etc/init,或者...)

  此時,用戶級 init 程序正在運行;它將完成啟動網絡設備并在控制臺上運行 getty (登錄程序)等任務。

  加入自己的 printk,并觀察那個子系統的 printk 相對于自己的 printk 何時出現,就可以指出那個子系統是在 start_kernel() 中還是在 init() 中初始化的。例如,如果想要知道 ALSA 聲音系統何時被初始化,那么將 printk 加入到 start_kernel() 和 init() 的起始處,然后找到“Advanced Linux Sound Architecture [...]” 相對于您的 printk 在何處打印出來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九精品在线观看| 国产精品av在线| 91亚洲精品久久久| 国产一区二区香蕉| 97成人在线视频| 国产精品福利无圣光在线一区| 韩国三级日本三级少妇99| 精品香蕉一区二区三区| 久久综合网hezyo| 在线观看久久av| 亚洲欧洲美洲在线综合| 欧美体内谢she精2性欧美| 国产欧美日韩丝袜精品一区| 日韩美女视频免费看| 亚洲黄色有码视频| 影音先锋日韩有码| 亚洲午夜未满十八勿入免费观看全集| 久久亚洲综合国产精品99麻豆精品福利| 日韩高清电影好看的电视剧电影| 日韩国产一区三区| 97视频在线观看免费| 国产成人97精品免费看片| 色偷偷综合社区| 欧美在线观看网址综合| 欧美大片欧美激情性色a∨久久| 自拍视频国产精品| 伊人av综合网| 日韩在线视频国产| 久久久午夜视频| 成年无码av片在线| 日韩电影网在线| 成人写真视频福利网| 国产成人拍精品视频午夜网站| 久久久久久久国产精品| 日韩精品亚洲精品| 亚洲综合在线播放| 深夜福利一区二区| 自拍偷拍亚洲一区| 蜜月aⅴ免费一区二区三区| 88国产精品欧美一区二区三区| 国产成人鲁鲁免费视频a| 亚洲欧美成人精品| 欧美精品生活片| 69久久夜色精品国产7777| 亚洲人成网站999久久久综合| 日韩有码视频在线| 欧美丰满少妇xxxx| 欧美乱人伦中文字幕在线| 久久中文字幕一区| 69视频在线播放| 欧美极品在线播放| 亚洲成av人影院在线观看| 伊人久久综合97精品| 亚洲人成绝费网站色www| 欧美在线视频观看免费网站| 欧美日韩精品在线观看| 久久久黄色av| 久久精品视频在线观看| 精品国产91乱高清在线观看| 国产aaa精品| 亚洲欧美日本精品| 91成人天堂久久成人| 久久综合久久88| 中文字幕在线看视频国产欧美在线看完整| 亚洲成年人影院在线| 精品一区二区三区四区| 亚洲新声在线观看| 欧洲精品在线视频| 最近2019年手机中文字幕| 高清欧美性猛交xxxx| 国产亚洲福利一区| 亚洲免费伊人电影在线观看av| 日韩av在线网页| 国产不卡精品视男人的天堂| 亚洲精品日韩久久久| 尤物九九久久国产精品的分类| 亚洲黄色av女优在线观看| 黑人与娇小精品av专区| 成人激情视频在线观看| 国产精品一区电影| 欧美专区国产专区| 亚洲高清一二三区| 欧美xxxx做受欧美.88| 亚洲精品福利资源站| 成人性生交大片免费看小说| 日韩av片永久免费网站| 久久777国产线看观看精品| 久久免费视频在线| 亚洲第一av在线| 成人在线观看视频网站| 国产日韩欧美视频| 91麻豆国产语对白在线观看| 国产精品啪视频| 日韩欧美极品在线观看| 亚洲色图av在线| 黑人精品xxx一区| 日韩欧美在线看| 久久精品国产2020观看福利| 欧美日韩精品中文字幕| 中文字幕日韩欧美在线| 日韩中文综合网| 欧美黑人性猛交| 久久久久久久久久亚洲| 国产精品久久久久久影视| 久久九九有精品国产23| 成人精品福利视频| 亚洲欧美国内爽妇网| 亚洲日本中文字幕免费在线不卡| 欧美激情网站在线观看| 色婷婷亚洲mv天堂mv在影片| 国产欧美久久一区二区| 国产视频精品久久久| 综合激情国产一区| 国产精品欧美激情在线播放| 色999日韩欧美国产| 亚洲第一区在线| 国产美女精品免费电影| 精品国产精品三级精品av网址| 国内精品久久久久久影视8| 国产玖玖精品视频| 91国产在线精品| 亚洲无亚洲人成网站77777| 亚洲欧美在线免费观看| 91亚洲国产成人精品性色| 国产精品入口尤物| 久久久久国产精品一区| 北条麻妃在线一区二区| 欧美午夜宅男影院在线观看| 久久夜色精品亚洲噜噜国产mv| 91夜夜未满十八勿入爽爽影院| 日韩欧美在线免费| 大荫蒂欧美视频另类xxxx| 日韩欧美福利视频| 国产精品高潮呻吟久久av黑人| 最新日韩中文字幕| 日韩av在线一区二区| 在线观看国产精品淫| 亚洲成人a级网| 欧美丰满少妇xxxxx做受| 91黑丝在线观看| 亚洲欧美日韩精品久久奇米色影视| 久久精品国产视频| 亚洲精品自拍视频| 久久精品国产亚洲精品2020| 国产精品黄色影片导航在线观看| 人妖精品videosex性欧美| 亚洲最大的网站| 国产在线拍偷自揄拍精品| 亚洲精品中文字幕有码专区| 美女撒尿一区二区三区| 国产精品国产三级国产aⅴ浪潮| 中文在线不卡视频| 日韩中文在线中文网在线观看| 一本一本久久a久久精品牛牛影视| 亚洲综合中文字幕在线| 欧美综合激情网| 亚洲欧美日韩在线高清直播| 久久久噜噜噜久久久| 亚州精品天堂中文字幕| 亚洲天堂一区二区三区| 在线观看精品国产视频| 91精品国产高清自在线看超| 91久久久久久久| 国产91精品久|