Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335196
  • 博文数量: 89
  • 博客积分: 5152
  • 博客等级: 大校
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-25 15:12
文章分类

全部博文(89)

文章存档

2012年(1)

2011年(5)

2010年(14)

2009年(69)

我的朋友

分类: LINUX

2009-04-12 20:09:50

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

阅读(765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~