more: Jollen 的 Embedded Linux 教育訓練

« TimeSys 十二月份的 Webinar | Home | System Call 專題討論, #2:使用 C 語言呼叫 System Call »

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 上這個動作是藉由中斷來達成。

--jollen

引用通告

如果您想引用這篇文章到您的Blog,
請複製下面的鏈接,並放置到您發表文章的相應界面中。

http://blog.jollen.org/mt-tb.cgi/248

發表一個評論

(您發表的意見將被立即接受,但需要一點時間與後端伺服器做同步,您的留言才會顯示在網站上。為避免 spam 攻撃,按「發表」後請輸入帳號密碼。使用者帳號:「nospam」、密碼:「nospam」。)

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org