【Binder 机制】进程通信 | 用户空间与内核空间 | MMU 与虚拟内存地址
文章目錄
- 一、進程通信
- 二、用戶空間與內核空間
- 三、MMU 與虛擬內存地址
一、進程通信
進程隔離概念 : 系統中的進程存在 " 進程隔離 " , 出于對進程運行的保護 , 兩個進程的內存是隔離的 , 并且不允許進行直接通信 ;
內核自帶通信機制 : 內核提供了 pipe 管道 , socket 等通信機制 , 可以進行跨進程通信 ;
Binder 機制 : Android 中的進程間的通信 , 是通過 " Binder " 機制 完成的 ; Binder 機制不是內核自帶的機制 , 而是 Android 可以動態進行 Binder 注冊 , 然后進程間通過 Binder 進行通信 ;
二、用戶空間與內核空間
系統中的內存分為 222 部分 , 用戶空間 和 內核空間 , 內核空間一般是運行操作系統 , 用戶空間一般運行應用 ;
操作 內核空間 時的狀態稱為 " 內核態 " ;
操作 用戶空間 時的狀態稱為 " 用戶態 " ;
三、MMU 與虛擬內存地址
每個 應用進程 的 內存空間 使用的地址都是 獨立的 , 連續的 , 虛擬地址 ;
內存管理單元 ( MMU - Memory Management Unit ) 的作用就是進行 內存映射的 ;
MMU 的作用是將真實的 內存 物理地址 轉為 虛擬地址 , 虛擬地址 又稱為 邏輯地址 , 一般情況下虛擬地址大小遠遠大于物理地址 ;
MMU 可以讓每個進程都擁有獨立的連續的內存空間 ;
323232 位的操作系統的 尋址空間是 000 ~ 2322^{32}232 , 大小 444 GB ;
323232 位操作系統 , 使用的是 二級分頁 ;
646464 位的操作系統的 尋址空間是 000 ~ 2642^{64}264 , 這個尋址空間很大 , 一般是使用前 404040 位 , 大概是 181818 TB ;
646464 位操作系統 , 使用的是 四級分頁 ;
在 323232 位的系統中 , MMU 會讓每個應用都有 111 個 444 GB 大小的空間 ,
Linux 系統內核空間占 111 GB , 用戶空間 333 GB ; 000 ~ 333 GB 是用戶空間地址 , 333 ~ 444 是內核空間地址 ;
Windows 系統內核空間占 222 GB , 用戶空間 222 GB ;
虛擬地址的必要性 : 代碼編譯完成之后 , 地址是分配好的 , 都是從 000 地址開始計數的 , 因此如果要保證程序的運行 , 必須保證應用進程的內存從 000 開始 ; 這里將實際的物理內存地址映射為虛擬內存地址 , 這個虛擬內存地址可以保證每個程序都按照相同的初始地址運行 ;
匯編指令 需要直接操作 虛擬內存地址 ;
總結
以上是生活随笔為你收集整理的【Binder 机制】进程通信 | 用户空间与内核空间 | MMU 与虚拟内存地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【字节码插桩】AOP 技术 ( “字节码
- 下一篇: 【Binder 机制】AIDL 分析 (