Syscall,API,ABI

本文介绍了Linux系统中系统调用的实现方式及其发展变化,包括早期使用int 0x80指令的方法及后续采用sysentry/sysexit指令的方式。此外还详细解释了API与ABI的概念及其作用。
  • 系统调用(Syscall):Linux2.6之前是使用int0x80(中断)来实现系统调用的,在2.6之后的内核是使用sysentry/sysexit(32位机器)指令来实现的系统调用,这两条指令是CPU原生支持的是内核向上层库(是应用提供的接口)API的一个特例,也是从ring3到ring0的一种方式。
  • API(Application Programming Interface):程序编程接口。在我们使用一些库的时候,库提供的接口。如果两个模块提供相同的API,则这两个模块是源码兼容,但是API如何实现,可能不一样,但是API用户都能成功编译。
  • ABI(Application Binary Interface):二进制接口。它定义了应用程序内部如何交互,应用程序如何与内核交互,以及如何和库交互,保证了二进制兼容,对于同一个ABI,目标代码可以在任何系统上正常运行,而不需要重新编译。它关注的是函数调用约定,字节序,寄存器的使用,系统调用,链接,库的行为以及二进制目标的格式。ABI是操作系统和体系结构共同提供的功能。为一个体系结构定义一套ABI是比较困难的,二进制可移植比较困难的。

转载于:https://www.cnblogs.com/echo1937/p/6259458.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值