论坛: 编程破解 标题: 系统调用与函数的区别早期的学习笔记(1) 复制本贴地址    
作者: TomyChen [quest]    版主   登录
系统调用与函数的区别

从程序完成的功能来看,函数库提供的函数通常是不需要操作系统的服务,函数

是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到核心态的。

系统调用是要求操作系统为用户提供进程,提供某种服务,通常是涉及系统的硬

件资源和一些敏感的软件资源等。

函数库的函数,尤其与输入输出相关的函数,大多必须通过Linux的系统调用来完

成。因此我们可以将函数库的函数当成应用程序设计人员与系统调用程序之间的

一个中间层,通过这个中间层,我们可以用一致的接口来安全的调用系统调用。

这样程序员可以只要写一次代码就能够在不同版本的linux系统间使用积压种具体

实现完全不同的系统调用。至于如何实现对不同的系统调用的兼容性问题,那是

函数库开发者所关心的问题。

从程序执行效率来看,系统调用的执行效率大多要比函数高,尤其是处理输入输

出的函数。当处理的数据量比较小时,函数库的函数执行效率可能比较好,因为

函数库的作法是将要处理的数据先存入缓冲区内,等到缓冲区装满了,再将数据

一次写入或者读出。这种方式处理小量数据时效率比较高,但是在进行系统调用

时,因为用户进程从用户模式进入系统核心模式,中间涉及了许多额外的任务的

切换工作,这些操作称为上下文切换,此类的额外工作会影响系统的执行效率。

但是当要处理的数据量比较大时,例如当输入输出的数据量超过文件系统定义的

尽寸时,利用系统调用可获得较高的效率。

从程序的可移植性的角度来看,相对于系统调用,C语言的标准备函数库(ANSI C

) 具备较高的可移植性,在不同的系统环境下,只要做很少的修改,通常情况是

不需要修改的。

地主 发表时间: 08/12 08:55

回复: NetDemon [netdemon]   ADMIN   登录


B1层 发表时间: 08/13 15:33

回复: xxzjmcdyt [xxzjmcdyt]   论坛用户   登录
近来之后看了这么多,本来不打算看的,不过看老大都顶了
看样子帖子肯定不错,但是我特别特别仔细的看了5遍
还是看不懂~~

B2层 发表时间: 08/17 13:26

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号