Linux內核源代碼的閲讀和工具具體介紹
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。另外還可以從互連網上下載,解壓縮後文件一般也都位於linux目錄下。內核源代碼有很多版本,目前最新的版本是2.2.14。
許多人對於閲讀Linux內核有一種恐懼感,其實大可不必。當然,象Linux內核這樣大而複雜的系統代碼,閲讀起來確實有很多困難,但是也不象想象的那麼高不可攀。只要有恆心,困難都是可以克服的。任何事情做起來都需要有方法和工具。正確的方法可以指導工作,良好的工具可以事半功倍。對於Linux 內核源代碼的閲讀也同樣如此。下面我就把自己閲讀內核源代碼的一點經驗介紹一下,最後介紹Window平台下的一種閲讀工具。
對於源代碼的`閲讀,要想比較順利,事先最好對源代碼的知識背景有一定的瞭解。對於linux內核源代碼來講,基本要求是:⑴ 操作系統的基本知識;⑵ 對C語言比較熟悉,最好要有彙編語言的知識和GNU C對標準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 此目錄包含已建好可動態加載的模塊。
fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
net 核心的網絡部分代碼。裏面的每個子目錄對應於網絡的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。
在Mac OS中創建後台進程的源代碼
後台進程就是Daemon,Daemon就是一個無界面的程序。
另需要一個plist描述文件來描述這個daemon的path和參數,將此文件放到~/Library/LaunchAgents/下
啟動deamon:launchctl load ~/Library/LaunchAgent/plist
停止deamon:launchctl unload ~/Library/LaunchAgent/plist
程序裏執行這兩條命令即可
killall是殺不掉你的deamon,除非用上面兩條命令
-
Linux運維工程師的崗位職責15篇
隨着社會一步步向前發展,我們每個人都可能會接觸到崗位職責,制定崗位職責有助於提高內部競爭活力,提高工作效率。大家知道崗位職責的格式嗎?以下是小編幫大家整理的Linux運維工程師的崗位職責,歡迎大家借鑑與參考,希望對大家有所幫助。Linux運維工程師的崗位職責1職...
-
關於桌面的操作系統
桌面操作系統也可以説是個人電腦系統,一般指的是安裝在個人電腦上的圖形界面操作系統軟件。操作系統按應用領域來劃分,有桌面操作系統、服務器操作系統和嵌入式操作系統3種。桌面操作系統是其中應用最為廣泛的系統。特點1、桌面操作系統基本上是根據人在鍵盤和鼠...
-
Linux運維工程師的崗位職責(通用15篇)
在充滿活力,日益開放的今天,我們可以接觸到崗位職責的地方越來越多,崗位職責是組織考核的依據。到底應如何制定崗位職責呢?下面是小編幫大家整理的Linux運維工程師的崗位職責,僅供參考,歡迎大家閲讀。Linux運維工程師的崗位職責1職責:1、負責應用的測試、運行保障,版本...
-
Linux運維工程師的崗位職責20篇
在我們平凡的日常裏,我們可以接觸到崗位職責的地方越來越多,明確崗位職責能讓員工知曉和掌握崗位職責,能夠最大化的進行勞動用工管理,科學的進行人力配置,做到人盡其才、人崗匹配。你所接觸過的崗位職責都是什麼樣子的呢?下面是小編幫大家整理的Linux運維工程師的崗...