【发布时间】:2013-10-29 14:50:20
【问题描述】:
在Advanced Programming in the UNIX Environment 2nd Edition,第01章,第11节中有一句话:
例如 printf 函数可以使用 write 系统调用来输出一个字符串, 但是 strcpy (复制字符串)和 atoi (将 ASCII 转换为整数)函数没有 完全涉及内核。
我不明白的是,为什么可能根本没有内核参与。不是所有的例程都需要内核支持吗?
另外,我可能会发现atoi 只需要 CPU 计算。但是strcpy需要内存操作,为什么也不涉及内核支持呢?
一般来说,我如何才能识别出一个函数不涉及内核?
【问题讨论】:
-
内核通常只在程序想要与自身外部通信或重新配置系统时参与。例如,访问已分配的内存往往不需要(显式)内核参与,但是如果无法从程序中已保存的池中满足新的内存分配,则可能需要。
标签: c linux linux-kernel system posix