iT邦幫忙

鐵人檔案

2017 iT 邦幫忙鐵人賽
回列表
自我挑戰組

跨界的追尋:trace 30個基本Linux系統呼叫 系列

系統呼叫(System Call)是應用程式所在之使用者空間(User Space)與核心空間(Kernel Space)之中間界面,也是理解核心運作的一個良好切入點。在這次的鐵人挑戰中,筆者將採用由上而下(Top-Down)的視角,每天trace一個系統呼叫。
Happy Hacking!

鐵人鍊成 | 共 30 篇文章 | 44 人訂閱 訂閱系列文 RSS系列文
DAY 1

達標好文 trace 30個基本Linux系統呼叫第一日:暖身用的uname

前言 系統呼叫(System Call)是應用程式所在之使用者空間(User Space),以及核心空間(Kernel Space)之中間介面,也是理解核心運作...

2016-12-01 ‧ 由 高魁良 分享
DAY 2

trace 30個基本Linux系統呼叫第二日:Hello World的write

前情提要 前篇我們分析了一個很單純的系統呼叫:uname,就算算上筆者跳過的read lock等同步機制,裡面涉及的概念也不多,比較複雜的反而是與uname本身...

2016-12-02 ‧ 由 高魁良 分享
DAY 3

trace 30個基本Linux系統呼叫第三日:read

前情提要 首日我們在uname的暖身中,大概看到核心原始碼的樣貌;昨日則是由write起始,進入一個新的大章節中,雖說讀、寫、開啟、關閉這些功能在字面上都是檔案...

2016-12-03 ‧ 由 高魁良 分享
DAY 4

trace 30個基本Linux系統呼叫第四日:open

前情提要 我們在前兩天分別以終端機上的標準輸入輸出作為write和read的範例說明,從系統呼叫本體追蹤到虛擬檔案系統層(vfs_xxx),再到終端機專屬的tt...

2016-12-04 ‧ 由 高魁良 分享
DAY 5

trace 30個基本Linux系統呼叫第五日:close

前情提要 之前介紹了讀、寫、開啟等檔案操作,並且使用過終端機和ext4作為檔案開啟實例進行簡單的動態追蹤。 關閉 NAME close - cl...

2016-12-05 ‧ 由 高魁良 分享
DAY 6

trace 30個基本Linux系統呼叫第六日:ioctl與終端機

前情提要 前四個都是檔案操作系列系統呼叫,基本的讀寫和開關。 關於ioctl 有別於前四者的清楚明瞭,ioctl乍看之下是比較看不懂,但唸一唸也就順了, NA...

2016-12-06 ‧ 由 高魁良 分享
DAY 7

trace 30個基本Linux系統呼叫第七日:fork

前情提要 基本的檔案操作大致瀏覽完,本篇開始預計介紹四、五個與程序管理有關的系統呼叫。 fork介紹 若讀者修過作業系統,則應該對這個系統呼叫最熟悉,因為這不...

2016-12-07 ‧ 由 高魁良 分享
DAY 8

trace 30個基本Linux系統呼叫第八日:wait4

前情提要 介紹了fork(及進階功能的clone)這個經典的系統呼叫,以及核心的程序管理的部份功能。參考以下範例程式碼: #include <stdio....

2016-12-08 ‧ 由 高魁良 分享
DAY 9

trace 30個基本Linux系統呼叫第九日:getpid與getppid

前情提要 進入了程序管理的部份之後,我們已經閱讀過fork和wait。雖然程序也是抽象的物件,但是相比於檔案處理時所需要的抽象,這個部份令人感到具體許多,操作上...

2016-12-09 ‧ 由 高魁良 分享
DAY 10

trace 30個基本Linux系統呼叫第十日:get/setpgid

前情提要 程序管理當中很重要的一個元素即是核心如何識別程序作為一個整體的物件,其中一個程序的要件即是struct pid這個結構。我們在程序管理篇先是閱讀了fo...

2016-12-10 ‧ 由 高魁良 分享