社区
Linux_Kernel
帖子详情
linux库函数调用和系统调用问题
freeC
2015-08-09 11:08:02
我在网上看到这个东西的解释,里面有一点是这样的,库函数调用其实最终还是调用系统调用,然而又有一点说,系统调用开销比较大,需要在用户控件和内核空间进行切换,比库函数调用开销大很多。
我就纳闷了,库函数调用底层还是用的系统调用,咋系统就比库函数调用开销大呢,不是自相矛盾吗?
求大神释疑
...全文
212
2
打赏
收藏
linux库函数调用和系统调用问题
我在网上看到这个东西的解释,里面有一点是这样的,库函数调用其实最终还是调用系统调用,然而又有一点说,系统调用开销比较大,需要在用户控件和内核空间进行切换,比库函数调用开销大很多。 我就纳闷了,库函数调用底层还是用的系统调用,咋系统就比库函数调用开销大呢,不是自相矛盾吗? 求大神释疑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Darryfei
2015-08-09
打赏
举报
回复
系统调用要从用户态转为核心态运行,需要中断处理,程序堆栈都需要切换,开销比较大。库函数调用相当于子程序调用不需要切换状态。我觉得那里想说的意思应该是系统调用和库函数调用时间的比较,它只是比较库函数调用的时间,不包括库函数实现的时间(库函数实现最终需要用到系统调用完成)。
大熊猫侯佩
2015-08-09
打赏
举报
回复
不是所有的库函数都会调用系统函数,和系统调用比较起来这些函数属于“轻”函数,比如strlen。
系统
调用
&函数
调用
Linux
下对文件操作有两种方式:
系统
调用
(system call)
系统
调用
即对底层的
调用
,面向硬件设备。
库函数
调用
(Library functions)
库函数
调用
面向应用层,相当于应用程序的API。 采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层
调用
本身的一些性能方面的缺陷。第四:让api也可以有了级别和专门的工作面向。
系统
调用
1、基本概念提供了库函
linux
使用truss、strace和ltrace、gdb命令诊断软件运行
问题
strace、ltrace、truss三个命令的目的是 了解一个程序的工作原理(可以了解
Linux
下很多常用的命令实现的原理);帮助定位程序中的
问题
(在开发工作时帮助定位
问题
); strace strace(strace - trace system calls and signals)能够跟踪进程使用的
系统
调用
,并显示其内容。
strace:跟踪进程的
系统
调用
、ltrace:跟踪进程
调用
库函数
小结:strace命令很适合处埋程序僵尸、命令执行报错等
问题
,如果从程序日志和
系统
日志中看不出
问题
出现的原因,则可以strace一下,也许会有答案,不过也需要使用者有足够的耐心去查看输出!strace会追踪程序运行时的整个生命周期,输出每一个
系统
调用
的名字、参数、返回值和执行所消耗的时间等,是高级运维和开发人员排查
问题
的杀手铜。上面的结果将清楚地告诉我们
调用
了哪些
系统
函数,
调用
的次数是多少,消耗了多少时间等信息,这对我们分析程序来说是非常有用的。ltrace的用法与strace非常相似,选项功能也是类似。
linux
c程序中内核态与用户态内存存储
问题
Unix/
Linux
的体系架构 如上图所示,从宏观上来看,
Linux
操作
系统
的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的
9.11 strace:跟踪进程的
系统
调用
、ltrace:跟踪进程
调用
库函数
strace 是
Linux
环境下的一款程序调试工具,用于检查一个应用程序所使用的
系统
调用
以及它所接收的
系统
信息。strace会追踪程序运行时的整个生命周期,输出每一个
系统
调用
的名字、参数、返回值和执行所消耗的时间等,是高级运维和开发人员排查
问题
的杀手铜。 strace命令的参数选项及说明 -...
Linux_Kernel
4,469
社区成员
17,458
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章