课本第五章读书笔记

课本第五章笔记 系统调用

系统调用和API的异同

  • 系统调用在用户空间进程和硬件设备之间添加了一个中间层。

  • 而应用程序通过在用户空间实现的应用编程接口来编程。这种接口并不需要和系统调用对应。

  • 程序员只和API打交道,内核只跟系统调用打交道。

系统调用的定义

 1,编译指令asmlinkage通知编译器仅从栈中提取该函数的参数。

 2,函数返回long

系统调用的触发过程

应用程序通过软中断告知系统,通知内核自己需要一个系统调用。

 软中断号128,通过int $0x80触发中断

系统调用的参数传递

在x86上,系统调用号通过eax寄存器传递给内核。

在x86-32系统上,ebx,ecx,edx,esi,edi按照顺序存放前五个参数

给用户空间的返回值在x86系统上存放在eax寄存器中。

总结:

系统调用和API并非一一对应,API也可能对应多个系统调用的综合实现,程序员只需要关心API,而内核关心系统调用。通过以EAX为主的几个寄存器,可以实现包括系统调用号和返回值在内的诸多参数传递。

原文地址:https://www.cnblogs.com/20135319zl/p/5313568.html