系统调用和标准库函数的关联

Posted ChunJian-YANG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统调用和标准库函数的关联相关的知识,希望对你有一定的参考价值。

1. 首先,现在的OS内核主要采用两种模式,整体的单内核模式(linux)和分层的微内核模式(Windows)。单内核

模式的特点就是代码紧凑,执行速度快,各个模块之间是直接的调用关系,可以说最后一点既是优点,也是缺

点...有点就是执行速度快,缺点是内核看起来很乱,维护起来困难。

2. 无论是单内核,还是微内核,立体的体系结构从下到上大概都是分成这样几层:物理硬件,OS内核,OS服务,

应用程序。这四层结构中,OS内核起到一个“承上启下”的作用,向下管理物理硬件;向上为OS服务和应用程序

提供接口。主意,这里的接口实际上是指系统调用(System Call)。

3. 通常OS内核为了考虑实现起来的难度和易于管理,只提供少部分必要的系统调用,这些系统调用通常都是C和

汇编混编来实现的。接口用C定义,实现体用汇编来写。这样做的好处是,执行效率高,并且极大的方便了上层的

调用。

4. 再说库函数(即API)。库函数可以概括的分为两类,一类是随OS提供的,另一类是第三方的。随系统提供的库

函数进一步封装或组合系统调用,实现更多的功能,就像用C语言的许多功能单一的小函数来实现很多很多个功能

复杂的大函数一样。这样的API能够执行一些相对内核来说很复杂的操作,比如,read()函数根据参数,直接就

能读文件,而背后隐藏的比如文件在硬盘的哪个磁道,哪个扇区,加载到内存的哪个位置等等这些操作,程序员

是不必关心的,这些操作里面自然也包含了系统调用。而对于第三方的库,它其实和系统库一样,只是它直接利

用系统调用的可能性要小一些,而是利用系统提供的API接口来实现功能。(API的接口是开放的)。

以上是关于系统调用和标准库函数的关联的主要内容,如果未能解决你的问题,请参考以下文章

linux内核系统调用和标准C库函数的关系分析

linux内核系统调用和标准C库函数的关系分析

Linux系统学习笔记:文件I/O

函数库调用和系统调用的区别

exit库函数和_exit系统调用对标准输出的影响

Android 逆向ptrace 函数 ( C 标准库 ptrace 函数简介 | ptrace 函数真实作用 )