System Call 專題討論, #1:什麼是System Call

jollen 發表於 December 1, 2006 4:10 PM

System call 是 process 與作業系統之間的介面。System call 是由 Linux kernel 所實作並提供給使用者,user-space program 可透過 system call 與Linux kernel 溝通。以 C 語言來呼叫 system call 的話,則是透過 GLIBC(libc)來間接呼叫。

GLIBC 提供呼叫 system call 的介面稱為 wrapper routine,wrapper routine 會叫起 Linux 的 system call handler,最後再由 system call handler 找到service routine 的所在的位址,並交由 service routine 完成工作。整個流程如圖所示。

system_call_1.JPG

User program 與 wrapper routine 是 user-space 的 code,system call handler 與 service routine 則是屬於 kernel space。如圖,我們可以看到灰色的箭頭跨越一個鴻溝,代表著由 user space 進入 kernel space,在 i386 上這個動作是藉由中斷來達成。

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。