博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统调用与库函数
阅读量:7046 次
发布时间:2019-06-28

本文共 643 字,大约阅读时间需要 2 分钟。

     linux操作系统提供了良好定义、数量有限、直接进入内核的入口点,这些入库点成为系统调用。linux中位每个系统调用在标准C库中设置一个具有同样名字的函数。用户进程用标准C调用序列来调用这些函数,然后函数又用系统所要求的技术调用相应的内核服务。

     对于开发者来说,内核系统调用接口和标准C库这两者没有什么区别,因为他们都为我们所写的应用程序提供服务,但是对于系统开发者来说系统调用与库函数之间有根本的区别。例如我们可以替换库函数或者自己编写库函数但是系统调用通常是不能被替换的。如果要替换系统调用,必须重新编写内核里面系统调用服务函数,重新编译内核才能让系统调用正常运行。

     从存储空间分配函数malloc为例,我们有很多方法可以进行存储空间分配及其相关的无用空间回收,并不存在对所有进程都最优的一种技术,linux系统调用中处理存储空间分配的是sbrk。我们可以这样理解内核中的系统调用分配一块空间给进程,而库函数malloc则在用户层次管理这一空间。

     上面所讲的就是库函数和系统调用都做了同一件事情就是内存分配,但是他们工作的层次从软件上来说不在同一个层,所以不具备可比性性,职责不同。

     对于从应用程序到库函数到系统调用,特别是库函数到系统调用在现代操作系统中往往会存在虚拟文件系统这一层在两者中间,所以如果要详细的分析系统调用和库函数还需分析虚拟文件系统这一层次与这两者之前的关系。

转载于:https://www.cnblogs.com/qiuheng/p/5684026.html

你可能感兴趣的文章
《Spark大数据分析:核心概念、技术及实践》一3.9 共享变量
查看>>
理解RESTful架构
查看>>
【问答集锦】人工智能/机器学习技术在电商场景下的应用
查看>>
在 Linux 上检测硬盘上的坏道和坏块
查看>>
《响应式Web设计全流程解析》一1.4 我们都是交互设计师
查看>>
搭建一个私有的Docker registry
查看>>
《手机测试Robotium实战教程》——第1章,第1.2节自动化测试和手动测试的对比...
查看>>
《精通QTP——自动化测试技术领航》—第1章1.6节对象库(下)之进阶编程篇
查看>>
深入实践Spring Boot2.1.1 MySQL依赖配置
查看>>
《树莓派开发实战(第2版)》——2.6 使用条件和约束指定证据
查看>>
窥探小程序的秘密 个人小程序申请
查看>>
Java面试 机试题01
查看>>
单链表(C语言)
查看>>
linux目录结构
查看>>
Guarded Suspension
查看>>
centos7.5 安装git客户端
查看>>
搞大数据,需要关注的东西
查看>>
win平台安装gridcontrol11R1的agent
查看>>
Docker image的工作原理
查看>>
Baruch Computing and Technology Center (BCTC)
查看>>