Binder面試系列之三

2021-10-09 22:07:06 字數 1761 閱讀 1290

1.1 簡介 記憶體

現代計算機都有兩種以上的執行模式(普通模式、特權模式),

linux系統只有兩層:

使用者空間

​ linux系統在高優先順序模式中執行系統核心**以及與硬體密切相關的**。低優先順序執行應用程式與硬體無關部分。

​ 應用程式不能直接操控硬體或者呼叫核心函式,需借助一系列介面函式申請讓系統呼叫相關**在核心空間執行,獲取**執行許可權。

1.2好處

​ 應用程式崩潰不會造成核心崩潰,拿windows舉例來說,qq崩潰掉不會造成程式宕機

​ 每個應用程式或者程序都會有自己特定的位址、私有資料空間,程式之間一般不會相互影響

1.3計算機藍屏帶來的啟示

​ 計算機藍屏主要是因為計算機硬體驅動不相容問題造成,硬體驅動**執行在核心空間,與kernel執行在相同空間內,所以驅動程式發生問題容易造成系統的崩潰。將使用者空間與核心空間隔離開,可減少系統崩潰的可能,提高系統的穩定性。畢竟現實情況中,應用程式崩潰的情況比藍屏出現的概率要多的多得多。在linux中這種情況可以模擬。

​ window有上百個驅動,如藍芽驅動,主機板驅動,音效卡驅動,麥克風驅動,顯示卡驅動,usb驅動等等!驅動過多容易造成藍屏的出現。他們都執行在核心中。為什麼會有這麼多驅動。電腦中每乙個配件都可以隨意組合。形成乙個完整的電腦

android 發現

​ 在android系統中,雖然也是基於linux系統,但是這些驅動在android廠商都已經消失了。全部整合化了、除了binder驅動外,螢幕驅動,藍芽驅動外幾乎看不到其他驅動,這也是藍屏比較少的原因

1.4 在linux中

​ 當使用者程序需要完成在特權模式下才能完成的某些工作時,通過linux向上提供的系統呼叫介面進入特權模式,然後執行呼叫所提供的有限功能 ​ 應用程式正常情況下都是執行在普通模式下,這部分**執行的空間稱為使用者空間,當**通過系統呼叫計入到特權級別執行的時候,對應的**執行空間稱為核心空間。

linux系統中每個程序占有4g空間(虛擬空間,並不一定真實占用)

空間分布如下:使用者空間: 0~(3g-1) 普通的應用程式**執行在此部分空間中

核心空間: 3g~(4g-1) 核心**段,其中驅動就是執行在此部分空間中

1.5 使用者空間與核心空間交流

​ 使用者空間應用程式往往需要呼叫硬體(qq呼叫相機拍照)或者執行與系統核心相關的內容(360清理程序),免不了與核心打交道,他們之間呼叫關係又是怎樣呢?

交流關係以open()檔案開啟函式為例 上層應用在使用者空間執行到 open() api函式時,會觸發系統軟中斷,系統呼叫 系統呼叫函式 sys_open()系統呼叫函式,在核心空間執行open**,這樣使用者空間的open函式內部**就取得了在核心空間執行的許可權,可以做一些比較牛比較核心的事情。 應用層api函式還有很多,大約有250個左右,涵蓋範圍包括檔案操作、程序控制、網路操作等等。呼叫原理大致相同。

binder面試系列之一

binder面試系列之二

binder面試系列之三

binder面試系列之四

Binder系列10 總結

從android driver層 binder還可以理解為一種虛擬的物理裝置,它的裝置驅動是 dev binder 從android native層 binder是建立service manager以及bpbinder bbinder模型,搭建與binder驅動的橋梁 從android framew...

《解剖PetShop》系列之三

解剖petshop 系列之三 三 petshop資料訪問層之訊息處理 在進行系統設計時,除了對安全 事務等問題給與足夠的重視外,效能也是乙個不可避免的問題所在,尤其是乙個b s結構的軟體系統,必須充分地考慮訪問量 資料流量 伺服器負荷的問題。解決效能的瓶頸,除了對硬體系統進行公升級外,軟體設計的合理...

ORM系列之三 Dapper

目錄 快,讀取資料接近idatareader。支援大部分主流的資料庫,如 ms sql,oracle,mysql,sqlite等等。支援對映一對一,一對多,多對多關係。示例中需要用到兩個實體型別,分別為post.cs和user.cs。1 2 3 4 5 6 7 8 9 10 11 12 13 pub...