天天看点

关于系统调用,库函数,SHELL的转摘,,,

这之间的关系,没有成型的梳理过,,

但这个都将所有东东比较系统的讲出了概要。。如同打通关节般畅快,特别是shell和系统调用的关系。。。让我们在日常计算机操作中,不会迷失自己的方向。。。。

哈哈,这同学写的技术博都短小,易懂,我马上就可以全部看完啦。。。(三个系列:python,linux,tcp/ip)

~~~~~~~~~~~~~~~

<a href="http://www.cnblogs.com/vamei/archive/2012/09/19/2692452.html">http://www.cnblogs.com/vamei/archive/2012/09/19/2692452.html</a>

。。。。。。。

为了我们方便调用内核,我们将内核的功能总结成为系统调用(system call)。系统调用看起来就像是的c语言函数,你也可以在程序中直接调用。linux系统有两百多个这样的系统调用。系统调用给了上层程序一个清晰的接口,隐藏了内核的复杂结构。一个操作系统上的功能可以看作是系统调用的组合的效果,而且一个操作系统不可能作出超越系统调用的动作。可以说一个系统调用函数就像是汉字的一个笔画,任何一个汉字都要由基本的笔画(点、横、撇等等)构成,而且我们不能臆造出笔画。在命令行中输入$man 2 syscalls可以查看所有的系统调用。你也可以通过$man 2 read来查看系统调用read()的说明。在这两个命令中的2都表示我们要在2类(系统调用类)中查询 (具体各个类是什么可以通过$man man看到)。

由于系统调用非常基础,所以有时使用起来很麻烦。比如说一个简单的给变量分配内存空间的操作,就需要动用多个系统调用。linux定义一些库函数(library routine)来将系统调用组合成某些常用的功能,以方便我们编程。比如上面的分配内存的操作,看以定义成为一个库函数(像malloc()这样的函数)。再比如说,在读取文件的时候,系统调用要求我们设置好所需要的缓冲。我们这个时候可以使用standard io库中的读取函数,而这个读取函数既负责设置缓冲,又负责使用读取的系统调用函数。使用库函数对于机器来说并没有效率上的优势,但可以把程序员从细节中解救出来。库函数就像是汉字的偏旁部首,它由笔画组成,但使用偏旁部首更容易组成字,比如"铁"。当然,你也完全可以不使用库函数,而直接调用系统函数,就像“人”字一样,不用偏旁部首。

(实际上,一个操作系统要称得上是unix系统,必须要拥有一些库函数,比如iso c标准库,posix标准等。)

。。。。。。。。

关于系统调用,库函数,SHELL的转摘,,,