zoukankan      html  css  js  c++  java
  • 库函数与系统调用的联系与区别

    一. 概念

    系统调用(英语:system call),指运行在用户空间应用程序操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。

    库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或动态库)向程序员提供功能性调用。程序员无需关心平台差异,由库来屏蔽平台差异性。

     

    二,区别

    调用※函数库调用 VS 系统

    函数库调用

    系统调用

    平台移植性好

    依赖于内核,不保证移植性

    调用函数库中的一段程序(或函数)

    调用系统内核的服务

    一个普通功能函数的调用

    是操作系统的一个入口点

    在用户空间执行

    在内核空间执行

    它的运行时间属于“用户时间”

    它的运行时间属于“系统”时间

    属于过程调用,调用开销较小

    在用户空间和内核上下文环境间切换,开销较大

    库函数数量较多

    UNIX中大约有90个系统调用,较少

    典型的C函数库调用:printf scanf malloc 

    典型的系统调用:fork open write

    三. 联系

    一般而言,跟内核功能与操作系统特性紧密相关的服务,由系统调用提供;

    具有共通特性的功能一般需要较好的平台移植性,故而由库函数提供。

    库函数与系统调用在功能上相互补充,如进程间通信资源的管理,进程控制等功能与平台特性和内核息息相关,必须由系统调用来实现。

    文件 I/O操作等各平台都具有的共通功能一般采用库函数,也便于跨平台移植。

    某些情况下,库函数与系统调用也有交集,

    如 库函数中的I/O操作的内部实现依然需要调用系统的I/O方能实现。

  • 相关阅读:
    课堂讨论及思考
    问题账户需求分析
    阅读计划
    我们应当怎样做需求分析
    常用JavaScript触发事件
    form表单的字符串进行utf-8编码
    关于编码
    JavaScript弹窗
    测试
    感谢博客园
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8195976.html
Copyright © 2011-2022 走看看