当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 >
让你从根本上了解系统函数,简单快速
时间:2018-06-21作者:华清远见

我们都知道C语言,C语言提供了通用的函数比如fread fwrite fclose,不论你在windows linux还是其他 操作系统上,都可以使用.这就是平台无关性,所以C语言有很好的移植性.接下来我们思考一个问题,不同的操作系统windows linux,他们的设计肯定不一样的,windows再设计之处肯定不会 考虑linux的设计,linux在设计之处也不会向微软请教.所以问题是为什么都可以使用标准的C函数 ?

这要从操作系统 的系统调用说起.高级的操作系统都分为用户态和内核态,说白了用户态就是执行用户程序的,比如QQ 微信.而内核是 操作系统管理硬件 内存 CPU的,应用程序因为在用户态所以无法访问硬件,这也保证了操作系统的安全性. 但是有时候应用程序需要操作硬件,比如打开摄像头,那怎么办呢.

解决办法就是用户程序请求操作系统打开,操作系统接收请求去打开硬件.所以真实的访问过程不是应用程序直接访问. 应用程序如何请求操作系统呢?这就是系统调用的功能.因为不同的操作系统管理方式 硬件访问方式几乎完全不同,所以不同的操作系统提供了完全不同的系统调用接口.这些接口 又称为系统函数.

比如常见的linux下API:read write close open socket都是系统函数 ,可以完成操作系统的各种功能.windows上API 是不相同的,所以如果你直接使用这些系统函数,写出来的代码不具有移植性.

那怎么办呢?解决方法就是对系统函数封装一层,封装为C库. C库 对外提供统一的接口,不同的操作系统提供不同的C库,但是不同的C库对外提供相同的 API,这也就保证了你基于C库开发的代码在不同的操作系统上具有 很好的移植性.记住,是很好,而不是绝对的.针对一些特殊的功能,我们也是针对操作系统进行处理.

下面一张图来解释他们之间的关系:

系统函数


发表评论

全国咨询电话:400-611-6270,双休日及节假日请致电值班手机:15010390966

在线咨询: 曹老师QQ(3337544669), 徐老师QQ(1462495461), 刘老师 QQ(3108687497)

企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300)

Copyright 2004-2018 华清远见教育集团 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号