系统调用的概念与作用
系统调用是一组操作系统提供给应用程序的接口,应用程序提供系统调用请求操作系统提供的一些子功能,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/0传输以及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。保证系统的稳定性与安全性,防止用户随意更改或访问系统的数据或命令。
系统调用与普通调用的区别
- 系统调用本质上是特殊的过程调用,但与普通调用有明显的区别。
- 系统调用的调用过程和被调用过程运行在不同的状态,而普通的过程调用一般运行在相同的状态。
- 系统调用必须通过中断机制首先进入系统核心,然后才能转向相应的命令处理程序。普通过程调用可以直接由调用过程转向被调用过程。
- 在采用抢先式调度的系统中,当系统调用返回时,要重新进行调度分析——是否有更高优先级的任务就绪。普通的过程调用直接返回调用过程继续执行。
系统调用的分类
- 设备管理——设备启动、释放等功能
- 文件管理——文件读写、创建、删除等功能
- 进程管理——进程的创建、撤销、阻塞、唤醒等功能
- 进程通信——进程间的信息传递、信号传递等功能
- 内存管理——内存的分配、回收、共享等功能
系统调用的过程
用户操作应用程序而这个应用程序的运行依赖于操作系统的底层管理程序提供服务支持,当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序;还可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。当管理程序运行结束时,用户程序需要继续运行,则通过相应的保存的程序现场退出中断处理程序或异常处理程序,返回断点处继续执行。
- 传递系统调用参数
- 执行陷入指令
- 执行相应服务
- 返回应用程序