系统调用和库函数(UNIX环境高级编程笔记)

  所有的操作系统都提供多种服务的入口点,由此程序向内核请求服务。各种版本的UNIX实现都提供良好定义、数量有限、直接进入内核的入口点,这些入口点被称为系统调用(system call)。

  UNIX所使用的的技术是为每个系统调用在标准C库中设置一个具有相同名字的函数。用户进程用标准C调用序列来调用这些函数,然后函数有用系统所要求的技术调用相应的内核服务。

  通用库函数在可能会调用一个或多个内核的系统调用,但是它们并不是内核的入口点。有的函数并不适用任何内核的系统调用,例如strcpy和atoi。

  库函数可以被替换,但是系统调用通常是不能被替换的。

  以malloc函数为例:内核中的系统调用分配一块空间给进程,,而库函数malloc则在用户层次管理这一空间。

  UNIX系统提供的判断当前时间和日期的接口:UNIX系统提供一个系统调用, 该系统调用返回自协调世界时(是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统)1970年1月1日零时这个特定时间以来所经过的秒数。对该值的任何解释,都留给用户进程进行处理。

  应用程序既可以调用系统调用也可以调用库函数。很多库函数则会调用系统调用。

  系统调用通常提供一种最小接口,而库函数通常提供比较复杂的功能。

猜你喜欢

转载自blog.csdn.net/The_perfect_world/article/details/89256262