首页 > 其他分享 >函数库调用和系统调用区别

函数库调用和系统调用区别

时间:2023-06-25 17:37:04浏览次数:58  
标签:调用 函数库 区别 系统 用户 内核 缓冲区 库函数

1、系统调用是最底层的调用,是面向硬件的,而库函数的调用是面向开发的,相当于应用程序的api接口

2、各个操作系统的系统调用是不同,因此系统调用没有跨操作系统的可移植性,而库函数的可移植性良好

3、库函数属于过程调用,调用开销小;系统调用需要在用户空间和内核态之间切换,调用开销大。

4、有时候库函数调用函数库中的一段程序,这段程序最终还是要通过系统调用完成、实现,系统调用调用的是系统内核的服务。

  比如对于文件的操作,文件是存储在介质上的,所以读写是对硬件的操作,所以肯定会引起系统调用,c中的fopen()库函数封装了系统调用的很多细节,但是通过系统调用open()来实现的。

5、即使使用库函数也会有系统调用的情况,但是由于缓冲区技术,可以减少系统调用的次数,提高程序的运行效率;比如文件操作,在内核空间和用户空间,都使用了缓冲区,都先将内容写到用户空间缓冲区,当用户空间缓冲区写满或者写操作结束时,才将用户缓冲区的内容写到内核缓冲区,当内核缓冲区写满或者写结束时才将内核缓冲区的内容写到文件对应的硬件。

 

标签:调用,函数库,区别,系统,用户,内核,缓冲区,库函数
From: https://www.cnblogs.com/gunancheng/p/17503184.html

相关文章

  • redis,mongo,mysql,es区别
    Redis、MongoDB、MySQL和Elasticsearch(ES)都是常用的数据库系统,各有不同的特点和适用场景,具体区别如下:Redis:Redis是一种高性能键值存储数据库,基于内存操作,支持数据持久化,支持数据类型丰富灵活,如字符串、哈希、列表、集合、有序集合等。Redis还提供了订阅/发布、事务、Lua脚本、......
  • SpringBoot用@Async实现异步调用
    @Async的使用1、在启动类中加上注解@EnableAsync启用异步 2、在使用异步的方法上加上注解@Async,自己写一个线程池,指定线程池。不建议使用默认的线程池。 在线程池应用中,参考阿里巴巴java开发规范:线程池不允许使用Executors去创建,不允许使用系统默认的线程池,推荐通过T......
  • electron中调用node.js API
    主进程在node.js环境中运行,等同于它拥有调用require模块和使用所有node.jsAPI的能力。但是在渲染器进程中,渲染器是无法直接访问require和其他node.jsAPI的,想要访问有以下两种方法:Preload脚本预加载脚本运行在渲染器环境中,可以在BrowserWindow构造方法中的webPreferences选项里被......
  • RTSP/Onvif协议安防平台EasyNVR调用接口录像会被自动删除的原因排查与解决
    EasyNVR安防视频云服务是基于RTSP/Onvif协议接入的视频平台,可支持将接入的视频流进行全平台、全终端的分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等。平台丰富灵活的视频能力,可应用在智慧校园、智慧工厂、智慧水利等场景中。有用户反馈,在使用EasyNVR接入设备......
  • 【淘宝商品详情数据】api接口获得宝贝详情数据、优惠价格数据Java调用示例
    淘宝详情API接口的作用是获取淘宝平台上某个商品的详细信息,包括商品标题、价格、图片、规格、参数、店铺信息等。开发者可以通过该接口获取到商品的原始数据,方便进行数据分析、价格比较、爬取等操作。通过该接口获取到的商品详情数据可以结合其他数据进行深度挖掘,例如可以将商品数......
  • HandlerInterceptorAdapter和HandlerInterceptor的区别
    其实归根揭底一个是抽象类,一个是接口,HandlerInterceptor是接口,它提供了所有方法,让开发人员必须实现所有方法,而HandlerInterceptorAdapter是一个抽象类,它提供了所有方法的默认实现,让开发人员可以只覆盖需要对应的方法,从而简化代码。......
  • java调用cmd命令
    importlombok.extern.slf4j.Slf4j;importorg.apache.commons.io.IOUtils;importjava.io.InputStream;importjava.nio.charset.StandardCharsets;importjava.util.AbstractMap;importjava.util.List;importjava.util.Map;importjava.util.concurrent.Completab......
  • vuex里面的this.$store.dispatch 和 this.$store.commit用法以及区别
     两个方法都是传值给vuex的mutation改变statedispatch:异步操作,数据提交至actions,可用于向后台提交数据this.$store.dispatch('isLogin',true);commit:  同步操作,数据提交至mutations,可用于登录成功后读取用户信息写到缓存里this.$store.commit('loginStatus',1);......
  • 前端ajax调用后端下载Excel模板流,解决输出乱码等问题
    functionimportTemplate(){$.ajax({url:"/importTemplate",type:"get",success:function(data){letdownloadUrl="../importTemplate"//创建a标签letlabel=$("......
  • mockito5.4.0单元测试(9) --调用同一个方法和参数依次返回不同的值thenReturn和thenTh
    mockito官方文档地址:https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#exact_verification//mock一个对象ListsingleMock=mock(List.class);when(singleMock.get(20)).thenThrow(newRuntimeException())//mock第一次调用......