(六)Binder面試問題

一、Linux內(nèi)核的基礎(chǔ)知識

1.進程隔離/虛擬地址空間

進程隔離 :在操作系統(tǒng)中,為了保證某些進程互不干擾,為了避免進程A可以操作進程B的數(shù)據(jù)的情況采用的方法。進程隔離使用了虛擬地址空間,進程A的虛擬地址空間和進程B的虛擬地址空間是不同的,可以防止進程A的數(shù)據(jù)寫入進程B中。進程間需要通信的話,需要進行跨進程通信,Android中使用的機制就是Binder。

2.系統(tǒng)調(diào)用

操作系統(tǒng)中需要分權(quán)限進行控制,用戶只能訪問某些許可的資源,不許可的資源是訪問不到的。用戶可以通過系統(tǒng)調(diào)用在用戶空間訪問內(nèi)核的某些程序。

3.Binder驅(qū)動

在Android系統(tǒng)中,Binder驅(qū)動是運行在內(nèi)核空間中的,負責各個用戶進程通過Binder通信的內(nèi)核來進行交互的一個模塊。

二、Binder通信機制介紹

1.為什么使用Binder

1)Android使用的Linux內(nèi)核擁有著非常多的跨進程通信機制。

2)性能:Binder相對于傳統(tǒng)的Socket有著更高效的性能。

3)安全:傳統(tǒng)的進程間通信機制對于通信雙方?jīng)]有作出嚴格的認證,而Binder支持通信雙方的校驗,有更好地安全性。

2.Binder通信模型

1)通信錄:ServiceManager。里面存有所需要的對象的連接方式。

2)電話基站:Binder驅(qū)動。連接服務(wù)端與客戶端。

3.Binder通信進制原理

Server服務(wù)端通過Binder驅(qū)動在ServiceManager中注冊所有的類和方法,在Client客戶端請求服務(wù)端的方法的時候,會通過Binder驅(qū)動到ServiceManager中查找已注冊的方法,ServiceManager找到該方法之后會返回該方法對應的代理對象的方法。當客戶端調(diào)用該方法的時候,代理對象會通過驅(qū)動調(diào)用服務(wù)端的方法,服務(wù)端的方法執(zhí)行完之后,會通過ServiceManager返回給客戶端。

Binder原理圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容