隨著linux的逐漸普及,現今有不少人對於Linux的安裝及設定早已比較熟悉了。與Linux的蓬勃發展相適應,想深入了解Linux的也越來越多。而要深入了解Linux,就必須閱讀和剖析linux核心的原始碼。
Linux的核心原始碼可以從好多途徑得到。通常來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是核心原始碼。另外還可以從互連網上下載,解壓縮後檔案通常也都坐落在linux目錄下。核心原始碼有許多版本,目前最新的穩定版是2.2.14。
許多人對於閱讀Linux核心有一種焦慮感,雖然大可毋須。其實,象Linux核心這樣大而複雜的系統程式碼,閱讀上去確實有好多困難,而且也不像想像的這麼高不可攀。只要有恆心,困難都是可以克服的。也不用害怕程度不夠的問題,事實上linux關機指令,有好多事情我們不都是從不會到會,邊幹邊學的嗎?
任何事情做上去都必須要有技巧和工具。正確的方式可以指導工作,良好的工具可以事半功倍。對於Linux核心原始碼的讀取也同樣這麼。下邊我就把自己閱讀核心原始碼的一點經驗介紹一下,最後介紹Window平台下的一種閱讀工具。
對於原始碼的閱讀,要想比較順利,事先最好對原始碼的知識背景有一定的了解。對於linux核心原始碼來講linux 核心程式碼閱讀工具,我覺得,基本要求是:1、作業系統的基本知識;2、對C語言比較熟悉,最好要有組合語言的知識和GNUC對標準C的擴充的知識的了解。另外在閱讀之前,也應當曉得Linux核心原始碼的整體分佈。我們曉得現代的作業系統通常由行程管理、記憶體管理、檔案系統、驅動程式、網路等組成。看一下Linux核心原始碼就可看出,各個目錄大致對應了那些方面。 Linux核心原始碼的組成如下(假定相對於linux目錄):
arch這個子目錄包含了此核心原始碼所支援的硬體體系結構相關的核心程式碼。如對於X86平台就是i386。
include這個目錄包括了核心的大多數include檔案。另外對於每種支援的體系結構分別有一個子目錄。
init此目錄包含核心啟動程式碼。
mm此目錄包含了所有的記憶體管理程式碼。與具體硬體體系架構相關的顯存管理程式碼坐落在arch/*/mm目錄下,如對應X86的就是arch/i386/mm/fault.c。
drivers系統中所有的裝置驅動程式都坐落於此目錄中。它又進一步界定成幾類裝置驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc此目錄包含了核心的進程間通訊程式碼。
modules此目錄包含已建置可動態載入的模組。
fsLinux支援的檔案系統程式碼。不同的檔案系統有不同的子目錄對應,如ext2檔案系統對應的就是ext2子目錄。
#kernel主要核心程式碼。同時與處理器結構相關程式碼都置於arch/*/kernel目錄下。
net核心的網路部分程式碼。上面的每位子目錄對應於網路的一個面向。
lib此目錄包含了核心的函式庫程式碼。與處理器結構相關函式庫程式碼被置於arch/*/lib/目錄下。
scripts此目錄包含用於設定核心的腳本檔案。
Documentation此目錄是一些文檔,起參考作用。
清楚了原始碼的結構組成後就可以著手閱讀。對於閱讀技巧或則說次序,有所謂的橫向與縱向之分。所謂橫向就是沿著程式的執行次序逐漸進行;所謂縱向查看linux是什麼系統,就是分模組進行。雖然她們之間不是絕對的,而是常常結合在一起進行。對於Linux原始碼來講,啟動的程式碼就可以沿著linux的啟動次序一步一步來,它的大致流程如下(以X86平台為例):
./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./ init/main.c中的start_kernel()。而對於象顯存管理等部份,則可單獨掏出來進行閱讀剖析。我的感受是:開始最好依序閱讀啟動程式碼,之後再進行專題閱讀,如進程部份,顯存管理部等。在每位功能函數內部應一步一步來。其實這是一個反覆的過程linux 核心程式碼閱讀工具,不可能讀一遍就理解。
以上是Linux核心原始碼閱讀經驗分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

用於輕鬆Flatpak管理的GUI:介紹倉庫 僅使用命令行管理越來越多的FlatPak應用程序集合可能會很麻煩。 輸入倉庫,這是一種用戶友好的圖形接口,旨在簡化flatpak a

本文為識別和解決Linux系統中的硬盤驅動器瓶頸提供了綜合指南。 經驗豐富的服務器管理員會發現這特別有用。緩慢的磁盤操作會嚴重影響應用程序性能,

Linux系統下的高效二維碼生成工具 在當今數字世界中,二維碼已成為快速便捷地共享信息的一種方式,從URL、文本、聯繫人、Wi-Fi憑證,甚至支付信息,二維碼都簡化了數據訪問。 Linux用戶可以使用多種工具高效地創建二維碼。讓我們來看看一些可在Linux系統上直接使用的流行二維碼生成器。 QRencode QRencode是一個輕量級的命令行工具,用於在Linux上生成二維碼,它以其簡單性和效率而廣受好評,深受偏愛直接方法的Linux用戶的歡迎。 使用QRencode,您可以為URL、

基本操作系統8 Circe:一種流暢,時尚的Linux體驗 基於Ubuntu的Linux發行版,Elementary OS已從簡單的主題包演變為一個完整的獨立操作系統。 以其用戶友好的界面而聞名

掌握Linux對於任何機器學習(ML)工程師至關重要。 它的命令行界面提供了無與倫比的靈活性和控制,簡化工作流程並提高了生產力。本文概述了必需的Linux命令,FO解釋說

Arch Linux:初學者的命令行備忘單 Arch Linux提供了無與倫比的控制,但對於新移民來說可能會令人生畏。該備忘單提供了自信管理系統的必要命令。 系統信息和更新 這些com

本指南提供了在Linux Systems上安裝和使用Scikit-Learn機器學習庫的全面演練。 Scikit-Learn(Sklearn)是一個功能強大的開源python庫,為各種機器提供多種工具L

本指南說明瞭如何利用Docker訪問Kali Linux工具,這是Katoolin等過時方法的更安全,更有效的替代方案。 Katoolin不再積極維護,可能會在現代系統上引起兼容性問題。做


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。