总结:
1.什么是系统调用
操作系统对应用程序/程序员提供的封装好的接口
2.系统调用和库函数的区别
2.1有的库函数是对系统调用进行进一步的封装:如文件操作函数
2.2有的库函数没有使用系统调用:如math函数
3.为什么系统调用是必须的:
3.1凡是与共享资源有关的操作、会直接影响到其他进程的操作,就一定需要操作系统介入,就需要通过系统调用来实现
3.2用户进程想要使用种共享资源的适合,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理.
4.什么功能要用系统调用实现:
4.1设备管理:完成对设备的 请求/释放/启动 等功能
4.2文件管理:完成文件的 读/写/创建/删除 等功能
4.3进程控制:完成进程的 创建/撤销/阻塞/唤醒 等功能
4.4进程通信:完成进程之间的 消息传递/信号传递 等功能
4.5内存管理:完成内存的 分配/回收 等功能
5.系统调用的过程:
5.1传参
5.2陷入指令/Trap/访管
5.3有操作系统内核处理系统调用请求
5.4返回应用程序
传递系统调用参数->执行陷入指令(用户态完成)->执行响应的内请求和程序处理系统调用(在核心态完成)->但会应用程序
注意:
1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行