這一節(jié)來解析一下系統(tǒng)調(diào)用這個辦事大廳是如何實現(xiàn)的豫柬。后面介紹的每個模塊都涉及系統(tǒng)調(diào)用八堡,站在系統(tǒng)調(diào)用的角度陨闹,層層深入下去楞捂,就能從某個系統(tǒng)調(diào)用的場景出發(fā),了解內(nèi)核中各個模塊的實現(xiàn)機制趋厉。
Linux 提供了 glibc 這個中介寨闹,它更熟悉系統(tǒng)調(diào)用的細(xì)節(jié),并且可以封裝成更加友好的接口君账,可以直接用繁堡。
glibc 對系統(tǒng)調(diào)用的封裝
這里我們以最常見的系統(tǒng)調(diào)用 open,打開一個文件為線索看看系統(tǒng)調(diào)用是怎么實現(xiàn)的乡数。這一節(jié)僅僅會解析到從 glibc 如何調(diào)用內(nèi)核的 open椭蹄,至于 open 怎么實現(xiàn)、怎么打開一個文件净赴,留到文件系統(tǒng)那一節(jié)講绳矩。
現(xiàn)在我們開始在用戶態(tài)進程里面調(diào)用 open 函數(shù)。為了方便大部分用戶會選擇使用中介玖翅,就是調(diào)用 glibc 里面的 open 函數(shù)翼馆。
32 位系統(tǒng)調(diào)用過程
64 位系統(tǒng)調(diào)用過程
總結(jié)
課堂練習(xí)
請你根據(jù)這一節(jié)的分析,看一下與 open 這個系統(tǒng)調(diào)用相關(guān)的文件都有哪些金度,在每個文件里面都做了什么应媚?如果你要自己實現(xiàn)一個系統(tǒng)調(diào)用,能不能照著 open 來一個呢审姓?