一、 什么是系统调用 在 Linux 的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门 (gate) 陷入 (trap) 实现。系统调用就是用户空间应用程序和内核提供的服务之间的一个接口。由于服务是在内核中提供的,因此无法执行直接调用;相反,您必须使用一个进程来跨越用户空间与内核之间的界限。在特定架构中实现此功能的方法会有所不同。因此,本文将着眼于最通用的架构 —— i386 。 二、 系统调用的作用 系统调用在 Linux 系统中发挥着巨大的作用,如果没有系统调用,那么应用程序就失去了内核的支持。我们在编程时用到的很多函数,如 fork 、 open 等这些函数最终都是在系统调用里实现的,这里我们说到了两个函数,即 fork 和 exit, 这两函数都是 glibc 中的函数,但是如果我们跟踪函数的执行过程,看看 glibc 对 fork 和 exit 函数的实现就可以发现在 glibc 的实现代码里都是采用软中断的方式陷入到内核中再通过系统调用实现函数的功能的。具体过程我们在系统调用的实现过程会详细的讲到。 由此可见,系统调用是用户接口在内核中的实现,如果没有系统调用,用户就不能利用内核。 三、 系统调用的现实及调用过程 详细讲述系统调用的之前也讲一下