久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

黃東升: Linux中形形色色的接口A(yíng)PI和ABI

 張宏韜 2018-09-20

今天我們來(lái)看看Linux中形形色色的接口


前言

如果將內(nèi)核比作一座工廠(chǎng),,那么Linux中眾多的接口就是通往這個(gè)巨大工廠(chǎng)的高速公路。這條路要足夠堅(jiān)固,,禁得起各種破壞(Robust),。要能跑得了運(yùn)貨的卡車(chē),還要能升降飛機(jī),。(Compatible),。當(dāng)然了這條路要越寬越好(Performant)。如下圖所標(biāo),,Linux中有四種類(lèi)型的接口,。位于內(nèi)核和用戶(hù)之間的API(應(yīng)用程序接口)和ABI(應(yīng)用二進(jìn)制接口)。內(nèi)核內(nèi)部的API和ABI,。下面我們逐條的來(lái)看看這些接口,。


1.Linux API

內(nèi)核-用戶(hù)接口有內(nèi)核系統(tǒng)調(diào)用和GNU C Library (glibc)的包裝例程(wrap subroutines)構(gòu)成。Linux API開(kāi)發(fā)的目標(biāo)是給POSIX標(biāo)準(zhǔn)提供一個(gè)相對(duì)兼容的,,程序健壯性強(qiáng)的,,高性能的實(shí)現(xiàn),同時(shí)又實(shí)現(xiàn)一些Linux特有的標(biāo)準(zhǔn),。


 1.1 Linux內(nèi)核的系統(tǒng)調(diào)用接口

系統(tǒng)調(diào)用接口包含了內(nèi)核中所有已經(jīng)實(shí)現(xiàn)的和可使用的系統(tǒng)調(diào)用,。

1.2 C標(biāo)準(zhǔn)庫(kù)

標(biāo)準(zhǔn)庫(kù)是對(duì)系統(tǒng)調(diào)用的封裝,用于給用戶(hù)提供一個(gè)簡(jiǎn)單易用的用戶(hù)態(tài)接口,。其中最為熟知的就是GNU C Library(glibc),,還有為嵌入式和移動(dòng)設(shè)備使用的uClibc。



1.3對(duì)POSIX的補(bǔ)充

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

Cgroup子系統(tǒng),,該子系統(tǒng)包含cgroup系統(tǒng)調(diào)用和libcgroup。


Futex,epoll,dnotify,inotify,Fanotify等系統(tǒng)調(diào)用,。


2. Linux ABI



ABI是一系列約定的集合,,例如GNU/Linux,F(xiàn)reeBSD約定函數(shù)調(diào)用的頭六個(gè)整型參數(shù)放在寄存器RDI, RSI, RDX, RCX, R8和R9上,;同時(shí)XMM0到XMM7用來(lái)放置浮點(diǎn)變?cè)?。?duì)于系統(tǒng)調(diào)用,R10用來(lái)替代RCX,。其他額外的參數(shù)推入棧,,返回值保存在RAX中,。[1] 可以說(shuō)調(diào)用慣例(calling convention)就是ABI。因此,,ABI是和具體CPU架構(gòu)和OS相關(guān)的,。


具體而言,ABI包含以下內(nèi)容:[3]

1. 一個(gè)特定的處理器指令集

2. 函數(shù)調(diào)用慣例

3. 系統(tǒng)調(diào)用方式

4. 可執(zhí)行文件的格式(ELF,PE)


那么,,究竟我們?yōu)槭裁匆m結(jié)于A(yíng)BI這個(gè)概念呢,?答案是為了兼容,只要OS遵守相同的ABI規(guī)范,,那么不同的應(yīng)用就可以實(shí)現(xiàn)向前兼容,,再也不用擔(dān)心版本升級(jí)后,舊版本的應(yīng)用不能運(yùn)行了,。




3. In-kernel API

內(nèi)核API主要是內(nèi)核中標(biāo)記為 “EXPORT_SYMBOL”的函數(shù),。這些函數(shù)主要是為了內(nèi)核模塊的編寫(xiě)而提供的。收到內(nèi)核版本迭代的影響,,內(nèi)核API并不穩(wěn)定,。2.x版本內(nèi)核的模塊可能在3.x版本上就無(wú)法使用。


4. In-Kernel ABI

內(nèi)核的abi和linux abi的定義類(lèi)似,,再次不再贅述,。


5. Abstraction ABI

在某些情況下,內(nèi)核過(guò)于底層,,開(kāi)發(fā)者需要更高一層的抽象,。于是出現(xiàn)了類(lèi)似Mesa 3D的為圖形驅(qū)動(dòng)開(kāi)發(fā)而生的API。



參考

[1] 

https://en./wiki/Linux_kernel_interfaces

所有圖的來(lái)源

[2]

https:///index.php?view=abi-view

[3] https://en./wiki/Application_binary_interface

abi的wiki

[4] https://zh./wiki/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A

x86調(diào)用慣例的中文wiki

[5] 

http:///blogs/316/

討論什么是ABI

[6] https://elixir./linux/latest/source/kernel/sched/wait.c

內(nèi)核API

[7]

https:///questions/2171177/what-is-an-application-binary-interface-abi

討論什么是ABI


查看'Linux閱碼場(chǎng)'精華技術(shù)文章請(qǐng)移步:

Linux閱碼場(chǎng)原創(chuàng)精華文章匯總

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多