Linux核心分析--系統呼叫實現程式碼分析(轉)

BSDLite發表於2007-08-17
Linux核心分析--系統呼叫實現程式碼分析(轉)[@more@]  啟動早就讀完,現在為了寫筆記再從啟動之後粗略的大體讀一遍,基本就是幾個大模組:啟動和初始化,中斷訊號,程式及排程,記憶體管理,檔案系統,網路,驅動和模組等,我主要也從這幾塊入手。由於啟動部分在start_kernel之前牽涉到大量的x86體系相關的彙編知識,需要大量的時間,於是我跳過,先把握整個系統的大體脈絡,然後做二次,三次分析。網路部分的分析,我會從4.4BSD-Lite的程式碼中分析。

  系統呼叫:

  先說一下系統呼叫,奇怪的很,所有的讀核資料都沒有把系統呼叫單獨提出來說,我覺得還是比較重要的。使用者和系統核心通訊的關鍵的樞紐,不過分吧,呵呵。仔細研究一下它的機制,準備花三天時間,手頭有些書和資料,幫助我理解。

  概念:(明晰一下基本概念)系統呼叫發生在使用者程式,透過一些特殊的函式(如open)來請求核心提供服務,這時,使用者程式掛起,核心驗證使用者請求,嘗試之行,並把結果反饋給使用者程式,接著使用者程式重新啟動。這些機制在一般的程式設計書裡都有,我就是來透過原始碼的實現來討論這種機制。

  具體實現程式碼:arch/i386/kernel/entry.S(核心版本2.2.14)從entry.S的第171行,就是system_call開始,171-248行程式碼貼出來,分析以註釋形式:ENTRY(system_call) 所有系統呼叫的入口點,引數system_call是所希望啟用的系統呼叫的數pushl %eax# 儲存orig_eax,這個值就是希望系統呼叫數SAVE_ALL。SAVE_ALL宏定義如下:
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-963277/,如需轉載,請註明出處,否則將追究法律責任。

Linux核心分析--系統呼叫實現程式碼分析(轉)
請登入後發表評論 登入
全部評論

相關文章