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...