内核提供一系列实现预定功能的内核函数,通过一组称为「系统调用」(system call)的接口呈现给用户。系统调用把应用程序的请求传达给内核,内核调用对应的内核函数完成请求所需处理后,再将处理结果返回给应用程序。
内核的主体是系统调用的集合,可以把内核看做特殊的公共子程序。系统调用是应用程序获得操作系统服务的唯一途径。
系统调用是一种中介,把用户与硬件隔离开来,应用程序通过系统调用才能请求系统服务和使用系统资源。系统调用的作用有
系统调用可以大致分为
系统调用实现时,需要注意:
系统调用的处理过程可表示为
系统调用的参数传递,可由访管指令或陷入指令自带参数,分为:
通过 CPU 的通用寄存器传递参数,或在主存的一个块或表中存放参数,其首地址送入寄存器,实现参数传递。也可在主存中开辟专用堆栈区域传递参数。
系统调用与函数调用的区别在于:
在 Linux 系统中,系统调用通过 0x80 号中断实现,