这一节来解析一下系统调用这个办事大厅是如何实现的。后面介绍的每个模块都涉及系统调用,站在系统调用的角度,层层深入下去,就能从某个系统调用的场景出发,了解内核中各个模块的实现机制。
Linux 提供了 glibc 这个中介,它更熟悉系统调用的细节,并且可以封装成更加友好的接口,可以直接用。
glibc 对系统调用的封装
这里我们以最常见的系统调用 open,打开一个文件为线索看看系统调用是怎么实现的。这一节仅仅会解析到从 glibc 如何调用内核的 open,至于 open 怎么实现、怎么打开一个文件,留到文件系统那一节讲。
现在我们开始在用户态进程里面调用 open 函数。为了方便大部分用户会选择使用中介,就是调用 glibc 里面的 open 函数。
32 位系统调用过程
64 位系统调用过程
总结
课堂练习
请你根据这一节的分析,看一下与 open 这个系统调用相关的文件都有哪些,在每个文件里面都做了什么?如果你要自己实现一个系统调用,能不能照着 open 来一个呢?
网友评论