0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看看Linux中形形色色的接口

Linux阅码场 来源:未知 作者:胡薇 2018-10-04 09:19 次阅读

如果将内核比作一座工厂,那么Linux中众多的接口就是通往这个巨大工厂的高速公路。这条路要足够坚固,禁得起各种破坏(Robust)。要能跑得了运货的卡车,还要能升降飞机。(Compatible)。当然了这条路要越宽越好(Performant)。如下图所标,Linux中有四种类型的接口。位于内核和用户之间的API(应用程序接口)和ABI(应用二进制接口)。内核内部的API和ABI。下面我们逐条的来看看这些接口。

1.Linux API

内核-用户接口有内核系统调用和GNU C Library (glibc)的包装例程(wrap subroutines)构成。Linux API开发的目标是给POSIX标准提供一个相对兼容的,程序健壮性强的,高性能的实现,同时又实现一些Linux特有的标准。

1.1 Linux内核的系统调用接口

系统调用接口包含了内核中所有已经实现的和可使用的系统调用。

1.2 C标准库

标准库是对系统调用的封装,用于给用户提供一个简单易用的用户态接口。其中最为熟知的就是GNU C Library(glibc),还有为嵌入式和移动设备使用的uClibc。

1.3对POSIX的补充

还有一些接口是Linux特有的,比如:

Cgroup子系统,该子系统包含cgroup系统调用和libcgroup。

Futex,epoll,dnotify,inotify,Fanotify等系统调用。

2. Linux ABI

ABI是一系列约定的集合,例如GNU/Linux,FreeBSD约定函数调用的头六个整型参数放在寄存器RDI, RSI, RDX, RCX, R8和R9上;同时XMM0到XMM7用来放置浮点变元。对于系统调用,R10用来替代RCX。其他额外的参数推入栈,返回值保存在RAX中。[1] 可以说调用惯例(calling convention)就是ABI。因此,ABI是和具体CPU架构和OS相关的。

具体而言,ABI包含以下内容:[3]

1. 一个特定的处理器指令集

2. 函数调用惯例

3. 系统调用方式

4. 可执行文件的格式(ELF,PE)

那么,究竟我们为什么要纠结于ABI这个概念呢?答案是为了兼容,只要OS遵守相同的ABI规范,那么不同的应用就可以实现向前兼容,再也不用担心版本升级后,旧版本的应用不能运行了。

3. In-kernel API

内核API主要是内核中标记为 “EXPORT_SYMBOL”的函数。这些函数主要是为了内核模块的编写而提供的。收到内核版本迭代的影响,内核API并不稳定。2.x版本内核的模块可能在3.x版本上就无法使用。

4. In-Kernel ABI

内核的abi和linux abi的定义类似,再次不再赘述。

5. Abstraction ABI

在某些情况下,内核过于底层,开发者需要更高一层的抽象。于是出现了类似Mesa 3D的为图形驱动开发而生的API。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206744
  • API
    API
    +关注

    关注

    2

    文章

    1384

    浏览量

    60994

原文标题:黄东升: Linux中形形色色的接口API和ABI

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浅谈Linux内核中的形形色色的“钟表”

    既然本文讲Linux中的计时工具,那么我们首先面对的就是“什么是时间?”,这个问题实在是太难回答了,因此我们这里就不正面回答了,我们只是从几个侧面来窥探时间的特性,而时间的本质就留给物理学家和哲学家思考吧。
    发表于 09-18 16:08 771次阅读
    浅谈<b class='flag-5'>Linux</b>内核中的<b class='flag-5'>形形色色</b>的“钟表”

    如何利用废旧手机芯片编程

    不知道大家有没有共同的想法,工作至今,抽屉里面形形色色的手机都是换下来的产品,我们可不可以把各种cpu取下来,对其进行编程学习呢?需要找各种芯片的资料
    发表于 08-16 20:11

    形形色色的 USB 连接器,你分得清吗?

    你能分清形形色色的 USB 连接器型号吗,说能的算你牛逼,但你能记住不同类型 USB连接器的引脚定义吗,请说不能,否则小编这篇文章就白整理了。由于型号太多,在这里只是整理了几种常见的 USB 连接器
    发表于 05-16 10:00

    下一代手机设计需要些什么

    随着各玩家开始推出形形色色的应用商店或忙于推出特定内容,移动产业正在进入其业务周期的一个可能的决定性阶段。短短数年前,时髦的手机在移动设备领域风靡一时。现在,功能更丰富、外观更时尚的手机产品正与全球整个无线市场内的各种移动设备、嵌入式软件、服务和应用共处这一舞台的中央。  
    发表于 05-16 10:44

    通信系统基本概念

    举个例子:假设你家里有矿,形形色色的矿有一天你闲得无聊,去看别人挖矿你所能看见的各种各样的矿石就是我们所说的"消息",而从矿石里面提炼出金银铜铁,便是"信息"
    发表于 05-23 09:04

    如何设计智能导盲犬?

    随着信息化和数字化的发展,现在社会中人们的生活变得更加丰富多彩,生活更加便利。但是有一种人群却不容忽视,社会上形形色色、丰富多彩的物是与他们无缘的,他们就是盲人。众所周知眼晴是“心灵之窗”,而对
    发表于 08-07 08:15

    传感器感知传输对物联网有什么意义?

    国大电器有限公司调查发现把物联网产业链分为DCM三个大业务层面,同时DCM也是一个物联网系统的典型技术架构,并且汽车空气流量计和压力传感器占有重要的组成部分。形形色色的传感器感知传输铺就物联网基础
    发表于 10-09 08:15

    【AI学习】第 1 篇--活用创新模板学 AI

    创造新模版,也支持不熟悉编程者,善用模版来创造形形色色的 AI 模型。所以,不一定需要写程序,不一定需要高深数学,大家都可以利用模板来创作 AI 智能模型。那么如何使用 AI 模板?AI 模板的使用可以分为三个层级。如下图所示: `
    发表于 11-02 10:38

    画PCB过程应该注意哪些细节?

    布线是PCB设计过程中技巧最细、限定最高的,即使布了十几年布线的工程师也往往觉得自己不会布线,因为看到了形形色色的问题,知道了这根线布了出去就会导致什么恶果,所以,就变的不知道怎么布了。但是高手还是有的,他们有着很理性的知识,同时又带着一些自我创作的情感去布线,布出来的线就颇为美观有艺术感。
    发表于 02-24 06:53

    ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系

    本文转自嵌入式资讯精选公众号,特别鸣谢,编者按:初学习ARM单片机的同学们可能会对ARM的架构定义并不是很明确,形形色色的名词背后到底代表什么含义呢?请听听这位嵌入式工程...
    发表于 07-01 07:54

    服务器软件firmware的作用(BIOS、BMC、PSOC、CPLD)精选资料分享

    写在前面:服务器 从功能上来讲,跟我们日常学习办公使用的台式机和笔记本没有本质区别,主要也是由最为关键的三大件CPU、内存、硬盘组成,但是服务器的应用场景主要是提供给企业等角色用来支撑形形色色业务
    发表于 07-23 08:01

    载车选择的关键指标是什么

    1.背景及术语大街上经常可见各家地图公司形形色色、各种品牌的地图采集车。究竟应该用什么样的车作为地图采集车的载车,对载车选择有什么要求或讲究?是不是随便什么车都行呢?作为有多年经验的采集车...
    发表于 08-30 08:55

    [组图]形形色色的J型天线

    型天线的特点:J型天线又叫波兰人天线,其特点是辐射仰角低且有一定的增益,效率是1/4 GP天线的
    发表于 04-15 21:07 4105次阅读

    形形色色的光电器件

    形形色色的光电器件
    发表于 06-30 19:30 689次阅读

    盘点六大常见通讯接口,拿捏不定就选他们吧

    在互联网时代,设备与设备之间的互连通讯、组网是在正常不过的事情了,而在形形色色接口中,什么场合下如何选择通讯接口才能使通讯更为便捷呢?本文将给出解答。
    发表于 06-23 15:32 139次下载