0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

看看Linux中形形色色的接口

Linux閱碼場(chǎng) ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-10-04 09:19 ? 次閱讀

如果將內(nèi)核比作一座工廠,那么Linux中眾多的接口就是通往這個(gè)巨大工廠的高速公路。這條路要足夠堅(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é)于ABI這個(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。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11177

    瀏覽量

    208498
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1465

    瀏覽量

    61683

原文標(biāo)題:黃東升: Linux中形形色色的接口API和ABI

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺談Linux內(nèi)核形形色色的“鐘表”

    既然本文講Linux的計(jì)時(shí)工具,那么我們首先面對(duì)的就是“什么是時(shí)間?”,這個(gè)問(wèn)題實(shí)在是太難回答了,因此我們這里就不正面回答了,我們只是從幾個(gè)側(cè)面來(lái)窺探時(shí)間的特性,而時(shí)間的本質(zhì)就留給物理學(xué)家和哲學(xué)家思考吧。
    發(fā)表于 09-18 16:08 ?818次閱讀
    淺談<b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>中</b>的<b class='flag-5'>形形色色</b>的“鐘表”

    如何利用廢舊手機(jī)芯片編程

    不知道大家有沒(méi)有共同的想法,工作至今,抽屜里面形形色色的手機(jī)都是換下來(lái)的產(chǎn)品,我們可不可以把各種cpu取下來(lái),對(duì)其進(jìn)行編程學(xué)習(xí)呢?需要找各種芯片的資料
    發(fā)表于 08-16 20:11

    形形色色的 USB 連接器,你分得清嗎?

    你能分清形形色色的 USB 連接器型號(hào)嗎,說(shuō)能的算你牛逼,但你能記住不同類(lèi)型 USB連接器的引腳定義嗎,請(qǐng)說(shuō)不能,否則小編這篇文章就白整理了。由于型號(hào)太多,在這里只是整理了幾種常見(jiàn)的 USB 連接器
    發(fā)表于 05-16 10:00

    畫(huà)PCB過(guò)程應(yīng)該注意哪些細(xì)節(jié)?

    布線是PCB設(shè)計(jì)過(guò)程中技巧最細(xì)、限定最高的,即使布了十幾年布線的工程師也往往覺(jué)得自己不會(huì)布線,因?yàn)榭吹搅?b class='flag-5'>形形色色的問(wèn)題,知道了這根線布了出去就會(huì)導(dǎo)致什么惡果,所以,就變的不知道怎么布了。但是高手還是有的,他們有著很理性的知識(shí),同時(shí)又帶著一些自我創(chuàng)作的情感去布線,布出來(lái)的線就頗為美觀有藝術(shù)感。
    發(fā)表于 02-24 06:53

    [組圖]形形色色的J型天線

    型天線的特點(diǎn):J型天線又叫波蘭人天線,其特點(diǎn)是輻射仰角低且有一定的增益,效率是1/4 GP天線的
    發(fā)表于 04-15 21:07 ?4275次閱讀

    SMT環(huán)境的最新復(fù)雜技術(shù)

       只要關(guān)注一下如今在各地舉辦的形形色色的專(zhuān)業(yè)會(huì)議的主題,我們就不難
    發(fā)表于 04-16 20:50 ?391次閱讀

    電容器的基礎(chǔ)知識(shí)

    第1講:電容的特性(隔直通交)形形色色的電容:
    發(fā)表于 04-16 23:47 ?4479次閱讀

    音箱選購(gòu)基礎(chǔ)知識(shí)問(wèn)與答

    ●音箱由哪幾部分組成?     市面上的音箱形形色色,但無(wú)論哪
    發(fā)表于 04-17 23:41 ?428次閱讀

    形形色色的光電器件

    形形色色的光電器件
    發(fā)表于 06-30 19:30 ?736次閱讀

    關(guān)于變電站,你知道多少?

    行走在城市的大街小巷,我們經(jīng)常能夠看到形形色色的變電站,你對(duì)它又知道多少呢?
    發(fā)表于 07-09 10:30 ?7331次閱讀

    盤(pán)點(diǎn)六大常見(jiàn)通訊接口,拿捏不定就選他們吧

    在互聯(lián)網(wǎng)時(shí)代,設(shè)備與設(shè)備之間的互連通訊、組網(wǎng)是在正常不過(guò)的事情了,而在形形色色接口中,什么場(chǎng)合下如何選擇通訊接口才能使通訊更為便捷呢?本文將給出解答。
    發(fā)表于 06-23 15:32 ?139次下載

    淺析Linux操作系統(tǒng)備份恢復(fù)技術(shù)的應(yīng)用

    都不可能保證絕對(duì)的安全。只要有網(wǎng)絡(luò)存在,就會(huì)有來(lái)自網(wǎng)絡(luò)的形形色色的威脅。為了抵御網(wǎng)絡(luò)的攻擊和入侵,雖然我們引入了日趨成熟的入侵檢測(cè)系統(tǒng)、防火墻系統(tǒng)等,黑客們的入侵手段也日益高明,他們總能找到這些系統(tǒng)的安全漏洞及不足
    發(fā)表于 11-07 10:18 ?0次下載

    Molex全套現(xiàn)成電纜解決方案

    Molex 提供全套的電纜解決方案,供應(yīng)多種連接器與形形色色長(zhǎng)度的配置,可以同時(shí)促進(jìn)原型的開(kāi)發(fā)以及全球化的生產(chǎn)。
    發(fā)表于 07-12 10:55 ?1235次閱讀

    區(qū)塊鏈將會(huì)如何改變各行各業(yè)

    比起形形色色的各類(lèi)虛擬貨幣,區(qū)塊鏈技術(shù)的潛力更大,應(yīng)用范圍更廣,商業(yè)潛力也是目前這些代幣所無(wú)法比擬的。
    發(fā)表于 07-09 14:34 ?534次閱讀
    區(qū)塊鏈將會(huì)如何改變各行各業(yè)

    機(jī)器人各顯其能 助力抗擊疫情

    今年這場(chǎng)突如其來(lái)的戰(zhàn)“疫”,一群特殊的戰(zhàn)士格外引人矚目。它們就是形形色色的機(jī)器人。
    發(fā)表于 03-06 08:49 ?1113次閱讀