龙空技术网

深入理解linux内核 —— 系统调用

极客时代 982

前言:

而今朋友们对“深入理解linux内核在线阅读”大体比较注重,各位老铁们都需要学习一些“深入理解linux内核在线阅读”的相关资讯。那么小编同时在网上汇集了一些关于“深入理解linux内核在线阅读””的相关文章,希望朋友们能喜欢,你们快快来了解一下吧!

操作系统为在用户运行的进程与硬件设备进行交互提供了一组接口。这极大地提高了系统的安全性,因为内核在试图满足某个请求之前在接口级就可以检查这种请求的正确性。

更重要的是这些接口使得程序更具有可移植性,因为只要内核所提供的一组接口相同,那么在任一内核之上就可以正确有地编译和执行程序。

应用编程接口(API)与系统调用的不同:前者只是一个函数的定义,说明了如何获得一个给定的服务;而后者是通过软中断向内核态发出一个明确的请求。

从编程者的观点来看,API和系统调用之间的差别是没有关系的:唯一相关的事情就是函数名、参数类型及返回代码的含义。然而,从内核设计者的观点看,这种差别确实有关系,因为系统调用属于内核,而用户态的库函数不属于内核。

因为内核实现了很多不同的系统调用,因此进程必须传递一个名为系统调用号(system call number)的参数来识别所需要的系统调用,eax寄存器就用作此目的。所有的系统调用都返回一个整数值。

为了把系统调用号与相应的服务例程关联起来,内核利用了一个系统调用分派表(dispatch table)。

尽管系统调用主要由用户态进程使用,但也可以被内核线程调用,内核线程不能使用库函数。

标签: #深入理解linux内核在线阅读