关于系统调用、库函数的理解

这里不是去说系统调用、函数和程序的含义,这些网上有太多定义,但是如何结合现实生活中的事物去更好的理解它们呢?这就是我要说的。

什么是系统调用:就好像是组成汉字的笔画,无论是哪个汉字,所能用到的笔画就那几个,它是组成汉字的最小单位。

什么是库函数:就是笔画不同组合形成的众多汉字,它是文章组成的最小单位。

什么是程序:就是用不同汉字写成的不同形式的文章,诗词歌赋等等。

系统调用是对内核功能的调用,而系统调用也是内核最小的功能实现单位,但是如果让程序员开发程序去直接使用系统调用是否可以呢?答案是肯定的,但是效率太低,一个简单的功能就要使用多个系统调用来实现,这显然是顾此失彼,这就好像你要写一首诗,结果你得先用笔画造字然后在写诗。所以就有了库函数,函数实现了程序开发中常用的基本功能,就是一个造字过程。程序员开发程序如果要想使用内核的功能那么他直接去使用库函数就好了,他不用去关心这些函数里面是由哪些系统调用组成的。这就大大提高了编程效率,同时也可以让程序员把更多精力放在程序本身上。

时间: 2024-10-13 05:59:00

关于系统调用、库函数的理解的相关文章

Linux 库函数与系统调用的关系与区别

上周总结了<C 标准库的基础 IO>,其实这些功能函数通过「系统调用」也能实现相应功能.这次文章并不是要详细介绍各系统调用接口的使用方法,而是要深入理解「库函数」与「系统」调用之间的关系和区别. 一.系统调用 系统调用,我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了对系统硬件设备功能的操作.这么说可能会比较抽象,举个例子,我们最熟悉的 hello world 程序会在屏幕上打印出信息.程序中调用了 printf() 函数,而库函数 printf 本质上是调用了系统

linux 内核的futex系统调用 (二)

futex 设计成用户空间快速锁操作,由用户空间实现fastpath,以及内核提供锁竞争排队仲裁服务,由用户空间使用futex系统调用来实现slowpath.futex系统调用提供了三种配对的调用接口,满足不同使用场合的,分别为noraml futex,pi-futex,以及 requeue-pi. futex的同步(锁)状态定义由用户空间去执行,futex系统调用并不需要理解用户空间是如何定义和使用这个地址对齐的4字节长的整型的futex,但是pi-futex除外,用户空间必须使用futex系

实验五:扒开系统调用的三层皮(下)

实验五:扒开系统调用的三层皮(下) 王朝宪20135114 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 1. 通过内核的方式(跟踪调试系统调用)来理解并使用系统调用. rm menu -rf //强制删除当前menu git clone http://github.com/mengning/menu.git //重新克隆新版本的m

STM32F4 阿波罗 库函数与C语言知识

先聊一聊: 之前使用32都是用的库函数,但是没有理解为什么那么操作,有很多的文件我也不知道要看哪一个,感觉云里雾里,没有学清楚一件东西的感觉不太好,于是就在前几天一直跟着比较详细的视频学习.开始老师讲的方式是使用寻址以及寄存器的方式,我觉得这种比使用库函数要好理解,但是在几个视频之后会发现,开始讲解库了?嗯哼~我是拒绝的呀,带着十分抗拒的心情继续学习,这一次又有了一些不一样的理解. 为什么使用库呢?因为很多的函数都已经被32制造者写好了,就相当于我们喝红豆薏米粉吧(最近在喝,所以举个例子哈),没

Linux 文件操作总结

http://blog.163.com/he_junwei/blog/static/19793764620152592737741/ ioctl?? lseek?? 文件是linux中的一个重要概念.在Linux中,一切(几乎一切)都是文件.简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作. 对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数. 这篇文章将先介绍linux中文件的概念,系统调用和库函数的概念 ,然后具体的讨论两种方式

一切皆文件

文件是linux中的一个重要概念.在Linux中,一切(几乎一切)都是文件.简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作. 对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数. 这篇文章将先介绍linux中文件的概念,系统调用和库函数的概念 ,然后具体的讨论两种方式下的文件操作. 博文的主要内容如下: Linux 中的文件 文件访问-库函数 文件访问-系统调用 库函数 标准 I/O 库 /proc文件系统 1 Linux中的文件

linux架构分析

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们以下图为基础,说明Linux的架构(architecture).(该图参考< Advanced Programming in Unix Environment>) 最内层是我们的硬件,最外层是我们常用的各种应用,比如说使用firefox浏览器,打开evolution查看邮件,运行一个计算流体模型等等.硬件是我们的物质基础,而应用是我们所要奋斗的目标,但在两者之间,还要经过一

第1章 UNIX基础知识

1.1 引言 所有的操作系统都为程序提供服务:执行新程序,打开文件,读文件,分配存储区以及获取当前时间 1.2 unix体系结构 内核的接口称之为系统调用 公共函数库构建再系统调用接口之上,应用程序既可以使用公共库函数也可以使用系统调用接口,shell  是一个特殊的应用程序,为其他应用程序提供一个接口 1.3 shell shell是一个命令行解释器,shell的用户输入通常来自终端,有时来自文件(成为shell脚本) 1.4 文件和目录 stat 和fstat函数返回包含所有文件属性的信息结

Linux内核分析——期中总结

期中总结 一.MOOC课程 (一)计算机是如何工作的 1.冯诺依曼体系结构的核心思想是存储程序计算机. 2.CPU在实际取指令时根据cs:eip来准确定位一个指令. 3.寄存器模式,以%开头的寄存器标示符. 立即数是以$开头的数值. 直接寻址:直接访问一个指定的内存地址的数据. 间接寻址:将寄存器的值作为一个内存地址来访问内存. 变址寻址:在间接寻址之时改变寄存器的数值. 4.eip寄存器不能被直接修改,只能通过特殊指令间接修改. 5.在32位x86 CPU中,我们使用push和pop指令实现入