内核系统与用户程序的关系

百般思念 提交于 2020-01-31 10:43:06

  在Linux系统中,内核为应用程序提供了两方面的接口.其一是系统调用接口,即中断调用int0x80;另一方面是通过库函数与内核进行信息交流.库函数是基本C函数库的libc组成部分.许多系统调用是作为基本C语言函数库的一部分实现的.

  系统调用主要是提供给系统软件直接使用或用于库函数的实现.而一般用户开发的程序则是通过调用像libc库中的函数来访问内核资源.通过调用这些库中的程序,应用程序代码能够完成各种常用工作,例如,打开和关闭文件或设备的访问,进行科学计算,出错处理以及访问组和用户标识号ID等系统信息.

  系统调用是内核与外界接口的最高层.在内核中,每个系统调用都有一个序列号,并常以宏的形式实现.应用陈需不应该直接使用系统调用,因为这样的话,程序的移植性就不好了.因此目前Linux标准库LSB和许多其他表尊都不允许应用程序直接访问系统调用宏.

  库函数一般包括C语言又没有提供的执行高级功能的用户级函数.例如输入输出函数和字符串处理函数.某些库函数指示系统调用的增强功能版.例如,标准I/O库函数fopen和fclose提供了与系统调用open和close类似的功能,但却是在更高的层次上.在这种情况下,系统调用通常能提供比库函数略微好一些的性能,但是库函数却能提供更多的功能,而且更具检错能力.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!