Android FrameWork (四)

Android FrameWork (四)

binder &service_manager && ServiceManager


知識回顧:

init
ZygoteInit
Systemserver


源碼分析:

會比較麻煩的一個模塊:
橫跨我們應(yīng)用層- framework-驅(qū)動層 java- native-內(nèi)核

client binder server之間的關(guān)系圖:


client_binder_server關(guān)系圖.png

SystemServer.java
ActivityManagerService.java
SystemServiceManager.java
ServiceManager.java

關(guān)系圖:

暫存

ServiceManager.rc:
service_manager.c:


總結(jié):

1扒吁,bind_open :打開了binder驅(qū)動 對Binder_version校驗 映射了內(nèi)存空間 大小是128k
2,調(diào)binder_becom_context_manager 設(shè)置 讓自己成為binder設(shè)備的上下文管理者
3脓规,調(diào)用binder_loop 讓service_manager進入死循環(huán)狀態(tài),binder設(shè)備進入loop的狀態(tài) ioctl(BINDER_WRITE_READ)
4蛇损,binder_parse客戶端數(shù)據(jù)進行解析润绵,并且進行回調(diào) svcmgr_handler處理


binder.c

總結(jié):

1,binder_init: 函數(shù) 注冊binder驅(qū)動(mmap open flush release)
2列粪,binder_open: 創(chuàng)建binder_proc,并且初始化進程信息福侈,pid todo wait
把binder_proc 添加到binder_procs
3酒来,binder_mmap: 開辟內(nèi)核空間128k 同時開辟物理內(nèi)存 把內(nèi)核空間和物理空間進行映射,讓他們兩個指向同一個地址
4肪凛,binder_ioctl: 對設(shè)備進行讀寫操作


servicemanager/binder.c
#######總結(jié):
一個串聯(lián)關(guān)系圖:


binder_service_manager關(guān)系圖.png

補充前提知識:

Binder傳統(tǒng)ipc怎么進行通信的堰汉?
系統(tǒng)里進程之間是相互隔離的,a進程無法直接訪問b進程伟墙,每個進程里分為用戶空間和內(nèi)核空間


截屏2023-04-13 下午4.29.01.png

sp:StrongPointer.h. 智能指針

拓展知識:
  • 性能上:穩(wěn)定性: 安全:
    Binder : 一次拷貝 c/s架構(gòu) 客戶端和服務(wù)端 穩(wěn)定 內(nèi)核層校驗系統(tǒng)來保證通信安全
    共享內(nèi)存:0次 不穩(wěn)定會有同步問題和并發(fā)死鎖問題 自定義協(xié)議
    管道pipe:需要兩次拷貝 單管道 效率低只能讀或者只能寫 自定義協(xié)議
    Socket:兩次拷貝 c/s架構(gòu) 不好的地方消耗性能握手和揮手 自定義協(xié)議

  • (拓展知識:ServiceManager.rc比我們的zygote更先執(zhí)行翘鸭,這里執(zhí)行文件的大小順序:core-> main->late_start)


面試題:

1,binder是什么戳葵?原理是什么就乓?
binder是一個虛擬的硬件設(shè)備,它是一個驅(qū)動程序拱烁,也是Android特有的一種通信方式生蚁,它的好處是一次拷貝效率高,把我們的用戶空間戏自,內(nèi)核空間邦投,物理內(nèi)存都映射在了一個地址,這樣它就少了一次拷貝擅笔,也可以參考前期講的集中通信方式管道 進行講講區(qū)別志衣,也可以講講幾個函數(shù)方法比如binder_open binder_mmap binder_ioctl幾個函數(shù)進行講解一下屯援。
2,binder是怎么進行工作的念脯?
這個話題比較大狞洋,參考流程圖進行分析。以命令流的方式進行講解 比如 client binder server之間的關(guān)系圖進行講解和二,如果更專業(yè)的方式就是代碼的調(diào)用流程圖更加的專業(yè)徘铝。
3耳胎,binder是給我們的每個應(yīng)用分配的內(nèi)存是多少惯吕?如果不夠用了怎么辦?
ProcessState.cpp:中會設(shè)置常量大小
binder_vm_size(1M-8k). 的大小怕午。默認給我們每個應(yīng)用是這些
service_manager 比較特殊是128k
如果不夠用了怎么辦废登?我們可以用其它方式的ipc機制,比如說共享內(nèi)存郁惜,socket堡距,可以展開講講幾種的區(qū)別
4,binder的線程數(shù)是多少兆蕉?
16個
5羽戒,其它?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載虎韵,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者易稠。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市包蓝,隨后出現(xiàn)的幾起案子驶社,更是在濱河造成了極大的恐慌,老刑警劉巖测萎,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡电,死亡現(xiàn)場離奇詭異,居然都是意外死亡硅瞧,警方通過查閱死者的電腦和手機份乒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腕唧,“玉大人或辖,你說我怎么就攤上這事∷奈” “怎么了孝凌?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長月腋。 經(jīng)常有香客問我蟀架,道長瓣赂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任片拍,我火速辦了婚禮煌集,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捌省。我一直安慰自己苫纤,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布纲缓。 她就那樣靜靜地躺著卷拘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祝高。 梳的紋絲不亂的頭發(fā)上栗弟,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音工闺,去河邊找鬼乍赫。 笑死,一個胖子當著我的面吹牛陆蟆,可吹牛的內(nèi)容都是我干的雷厂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼叠殷,長吁一口氣:“原來是場噩夢啊……” “哼改鲫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溪猿,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤速勇,失蹤者是張志新(化名)和其女友劉穎盆昙,沒想到半個月后俯邓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體检号,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年依痊,在試婚紗的時候發(fā)現(xiàn)自己被綠了避除。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸嘁,死狀恐怖瓶摆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情性宏,我是刑警寧澤群井,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站毫胜,受9級特大地震影響书斜,放射性物質(zhì)發(fā)生泄漏诬辈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一荐吉、第九天 我趴在偏房一處隱蔽的房頂上張望焙糟。 院中可真熱鬧,春花似錦样屠、人聲如沸穿撮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悦穿。三九已至,卻和暖如春勤揩,著一層夾襖步出監(jiān)牢的瞬間咧党,已是汗流浹背秘蛔。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工陨亡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人深员。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓负蠕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親倦畅。 傳聞我的和親對象是個殘疾皇子遮糖,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容