0%
标准C库的例子
- 应用程序调用printf()时,会触发系统调用write()。
系统调用
- 操作系统服务的编程接口
- 通常由高级语言编写(C或C++)
- 程序访问通常是通过高层次的API接口而不是直接进行系统调用
- 三种最常用的应用程序编程接口(API)
- Win32 API用于Windows
- POSIX API用于POSIX-based systems(包括UNIX, LINUX, Mac OS X的所有版本)
- Java API用于JAVA虚拟机(JVM)
系统调用的实现
- 每个系统调用对应一个系统调用号
- 系统调用接口调用内核态中的系统调用功能实现,并返回系统调用的状态和结果
- 用户不需要知道系统调用实现
- 需要设置调用参数和获取返回结果
- 操作系统接口的细节大部分都隐藏在应用编程接口后
函数调用和系统调用的不同处
- 系统调用
- 函数调用
- Intel 64 and IA-32 Architecture Software Developer
中断、异常和系统调用的开销
- 超过函数调用
- 中断、异常和系统调用
- 引导机制
- 建立内核堆栈
- 验证参数
- 内核态映射到用户态地址空间
- 内核态独立地址空间