Android跨進(jìn)程通信IPC之1——Linux基礎(chǔ)

移步系列Android跨進(jìn)程通信IPC系列

一某弦、Linux介紹

1.1 Unix簡(jiǎn)介

  • Unix因?yàn)槠浒踩煽客┯洌咝?qiáng)大的特點(diǎn)在服務(wù)器領(lǐng)域得到了廣發(fā)的應(yīng)用。直到GNU/Linux流行開(kāi)始前宗挥,Unix也是科學(xué)計(jì)算乌庶、大型機(jī)、超級(jí)電腦等所用操作系統(tǒng)的主流契耿。
  • Unix的誕生:湯普遜和里奇最早是在貝爾實(shí)驗(yàn)室開(kāi)發(fā)Unix

1.2 Linux的誕生

1991年瞒大,在赫爾辛基,Linus Toral開(kāi)始寫了一個(gè)項(xiàng)目搪桂,目的是用來(lái)訪問(wèn)大學(xué)里面的大型Unix服務(wù)器的虛擬終端透敌。他專門寫了一個(gè)用于他當(dāng)時(shí)正在用的硬件的,與系統(tǒng)操作系統(tǒng)無(wú)關(guān)的程序锅棕,開(kāi)發(fā)是在Minix拙泽,用的編譯器是GCC來(lái)完成的淌山,這個(gè)項(xiàng)目后面逐漸轉(zhuǎn)變?yōu)長(zhǎng)inux內(nèi)核裸燎。

1.3 Linux的全局圖

5713484-64910e3e959d8bbb.png

1.4 Linux的源碼目錄結(jié)構(gòu)

目錄 解釋 部分子子目錄
kernel 內(nèi)核管理相關(guān),進(jìn)程調(diào)度等 sched/fork等
fs 文件子系統(tǒng) ext4/f2fs/fuse/debugfs/proc等
mm 內(nèi)存子系統(tǒng)
drivers 設(shè)備驅(qū)動(dòng) staging/cpufreq/gpu 等
arch 所有CPU系統(tǒng)結(jié)構(gòu)相關(guān)的代碼 arm/x86等
include 頭文件 linux/uapi/asm_generic等
lib 標(biāo)準(zhǔn)通用的C庫(kù)
ipc 進(jìn)程通信相關(guān)
init 初始化過(guò)程(非系統(tǒng)引導(dǎo))
block 塊設(shè)備驅(qū)動(dòng)程序
crypto 加密泼疑、解密德绿、校驗(yàn)算法
Documentation 說(shuō)明文檔

2 內(nèi)核態(tài)與用戶態(tài)

Binder驅(qū)動(dòng)里面會(huì)用到

2.1 內(nèi)核態(tài)和用戶態(tài)的簡(jiǎn)介

  • 內(nèi)核態(tài):CPU可以訪問(wèn)內(nèi)存所有數(shù)據(jù),包括外圍設(shè)備退渗,例如硬盤移稳、網(wǎng)卡,CPU可以將自己從一個(gè)程序切換到另外一個(gè)程序会油。
  • 用戶態(tài): 只能受限的訪問(wèn)內(nèi)存个粱,且不允許訪問(wèn)外圍設(shè)備,占用CPU的能力被剝削翻翩,CPU資源可以被其他程序獲取都许。
  • 由于需要限制不同的程序之間的訪問(wèn)能力稻薇,防止他們獲取別的程序的內(nèi)存數(shù)據(jù),或者獲取外圍設(shè)備的數(shù)據(jù)胶征,并發(fā)送網(wǎng)絡(luò)塞椎,CPU劃分出兩個(gè)權(quán)限等級(jí) ----用戶態(tài) 和 內(nèi)核態(tài)。

2.2 用戶態(tài)與內(nèi)核態(tài)的切換

2.2.1 切換簡(jiǎn)介

  • 所有用戶程序都是運(yùn)行在用戶態(tài)的睛低,但是有時(shí)候程序確實(shí)需要做一些內(nèi)核態(tài)的事情案狠,例如從硬盤讀取數(shù)據(jù),或者從鍵盤獲取輸入等钱雷。
  • 唯一可以這這些事情的就是 操作系統(tǒng) 骂铁,所以這時(shí)候 程序 就需要先向 操作系統(tǒng) 請(qǐng)求,以 程序 的名字來(lái)執(zhí)行這些操作罩抗。
  • 需要一個(gè)這樣的機(jī)制:用戶態(tài) 切換到 內(nèi)核態(tài)从铲,但是不能控制內(nèi)核態(tài)中執(zhí)行的執(zhí)行這種機(jī)制叫做系統(tǒng)調(diào)用,在CPU中的實(shí)現(xiàn)稱之為"陷阱指令(Trap Instruction)"

2.2.2 系統(tǒng)調(diào)用機(jī)制流程

    1. 用戶態(tài)程序?qū)⒁恍?shù)據(jù)值放在寄存器中澄暮,或者使用參數(shù)創(chuàng)建一個(gè)堆棧(stack frame)名段,以表明需要操作系統(tǒng)提供的服務(wù)。
    1. 用戶態(tài)程序執(zhí)行陷阱指令
    1. CUP切換到內(nèi)核態(tài)泣懊,并跳到內(nèi)存指定位置的指令伸辟,這些指令是操作系統(tǒng)的一部分,他們具有內(nèi)存保護(hù)馍刮,不可被用戶態(tài)程序訪問(wèn)
    1. 這些指令稱之為 陷阱 (trap) 或者新系統(tǒng)調(diào)用處理器 ( system call hanlder )信夫。他們會(huì)讀取程序放入內(nèi)存的數(shù)據(jù)參數(shù),并執(zhí)行程序請(qǐng)求的服務(wù)卡啰。
    1. 系統(tǒng)調(diào)用完成后静稻,操作系統(tǒng)會(huì)重置CPU為用戶態(tài)并返回系統(tǒng)調(diào)用的結(jié)果。

參考

Android跨進(jìn)程通信IPC之1——Linux基礎(chǔ)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匈辱,一起剝皮案震驚了整個(gè)濱河市振湾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亡脸,老刑警劉巖押搪,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浅碾,居然都是意外死亡大州,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門垂谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厦画,“玉大人,你說(shuō)我怎么就攤上這事滥朱「睿” “怎么了娃豹?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)购裙。 經(jīng)常有香客問(wèn)我懂版,道長(zhǎng),這世上最難降的妖魔是什么躏率? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任躯畴,我火速辦了婚禮,結(jié)果婚禮上薇芝,老公的妹妹穿的比我還像新娘蓬抄。我一直安慰自己,他們只是感情好夯到,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布嚷缭。 她就那樣靜靜地躺著,像睡著了一般耍贾。 火紅的嫁衣襯著肌膚如雪阅爽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天荐开,我揣著相機(jī)與錄音付翁,去河邊找鬼。 笑死晃听,一個(gè)胖子當(dāng)著我的面吹牛百侧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播能扒,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼佣渴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了初斑?” 一聲冷哼從身側(cè)響起辛润,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎越平,沒(méi)想到半個(gè)月后频蛔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體灵迫,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秦叛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瀑粥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挣跋。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狞换,靈堂內(nèi)的尸體忽然破棺而出避咆,到底是詐尸還是另有隱情舟肉,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布查库,位于F島的核電站路媚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏樊销。R本人自食惡果不足惜整慎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望围苫。 院中可真熱鬧裤园,春花似錦、人聲如沸剂府。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腺占。三九已至淤袜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衰伯,已是汗流浹背饮怯。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嚎研,地道東北人蓖墅。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像临扮,于是被迫代替她去往敵國(guó)和親论矾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348