系统调用
系统调用的基本概念
应用程序通过西宫调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配,I/O操作,文件管理),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务,主要包括命令接口(允许用户直接使用)和程序接口(允许用户通过程序间接使用)。其中,程序接口由一组系统调用组成
系统调用(按功能分类):系统调用相关处理涉及到对系统资源的管理,对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行
- 设备管理:完成设备的请求/释放/启动/等功能
- 文件管理:完成文件的读/写/创建/删除等功能
- 进程控制:完成进程的创建撤销/阻塞/唤醒等功能
- 进程通信:完成进程之间的消息传递/信号传递等功能
- 内存管理:完成内存的分配/回收/等功能
系统调用和库函数的区别
编程语言将系统调用封装成库函数
系统调用的背后
注意:
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
- 陷入指令是唯一一个只能在用户态下执行,而不在核心态执行的指令