这个问题已经有点老生常谈了。这里简单记录一下。
库调用
- 通常调用的是代码库中的函数,如GLIBC,LIBGCC,LIBSTDC++,BOOST之类的库
- 这些库函数会和程序链接,静态链和动态链都可以
- 仅仅在用户态,即用户地址空间內执行
- 多数为了避免程序员重复劳动,封装复杂编码或者性能提升
系统调用
- 由操作系统提供的一类函数
- 提供操作系统才能实现的服务
- 函数主要在内核态,即内核地址空间內执行。
- 因为牵涉到内核态和用户态的切换问题,通常调用代价大。
通常这两者的概念区别并不明显,有些库函数也会内部封装系统调用,比如printf。
阅读(1030) | 评论(0) | 转发(0) |