系统调用
廖家龙 用心听,不照做

什么是系统调用,有何作用?

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务,主要包括命令接口和程序接口,其中程序接口由一组系统调用组成

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用与库函数的区别

系统调用(按功能分类)

  1. 设备管理:完成设备的请求/释放/启动等功能
  2. 文件管理:完成文件的读/写/创建/删除等功能
  3. 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能
  4. 进程通信:完成进程之间的消息传递/信号传递等功能
  5. 内存管理:完成内存的分配/回收等功能

什么功能要用到系统调用(Word和WPS同时使用打印机)

应用程序通过系统调用请求操作系统的服务,而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作

系统调用的过程

  1. 传递系统调用参数
  2. 执行陷入指令(用户态)
  3. 执行相应的内请求核程序处理系统调用(核心态)
  4. 返回应用程序

注意:

  • 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
  • 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行