概念

系统调用指运行在用户空间的程序系统内核发送请求,申请更高权限运行的服务。

系统调用提供用户程序操作系统之间的接口。

用户态与空间态

操作系统的进程空间可分为用户空间内核空间,它们需要不同的执行权限。

库函数

系统调用和普通的库函数调用非常类似,只是系统调用操作系统内核提供,运行于内核核心态

普通的库函数函数库或用户提供,处于用户态

Linux中的系统调用

Linux的系统调用通过int 80h实现,由系统调用号来区分函数入口。

Linux中系统调用流程:

  1. 程序调用库函数(API)
  2. API将系统调用号存入EAX,然后通过中断使系统进入内核态
  3. 内核的中断处理函数根据EAX中的调用号调用相应的内核函数
  4. 系统调用的内核函数完成相应的功能,然后将返回值存入EAX,返回到中断处理函数
  5. 中断处理函数返回到库函数(API)中。
  6. 库函数(API)EAX返回给程序。

(系统调用时的参数保存在寄存器中)