Binder機制及底層實現

2022-08-03 02:51:11 字數 796 閱讀 1285

<1>程序間的記憶體空間是程序私有的

<2>程序間和核心的空間是互通的

<3>程序1空間<--->核心空間<-->程序2空間

binder跨程序通訊(ipc)的原理就是利用了這個可共享的核心空間將程序私有的空間進行關聯的。而binder就是這個通道。

使用步驟:

1.服務端註冊服務

<1>server端向binder驅動發起註冊請求

<2>binder驅動將請求**給servicemanage程序

<3>servicemanage把服務註冊到表裡面

<4>此時servicemanage程序擁有該服務

2.客戶端獲取服務

<1>客戶端向binder驅動發起獲取服務的請求

<2>binder驅動將請求**給servicemanage

<3>servicemanage查詢對應的服務返回給binder

<4>binder再將服務傳遞給客戶端

3.客戶端使用服務

client程序將引數資料發到server程序

<1>客戶端把資料從程序空間交給binder的核心空間

<2>binder將資料copy到對應的service空間

server程序根據client程序要求,呼叫目標方法

<3>service程序收到binder的通知後進行對應的方法呼叫

<4>把處理結果寫道自己的記憶體中

server程序將目標方法的結果,返回給client程序

<1>binder從service程序的內從中取出資料

<2>把資料copy到客戶端程序並通知客戶端

Binder學習 二 Binder機制解析

程序隔離 程序隔離是為保護作業系統中程序互不干擾而設計的一組不同硬體和軟體的技術。這個技術是為了避免程序a寫入程序b的情況發生。程序的隔離實現,使用了虛擬位址空間。虛擬位址 虛擬位址是對整個記憶體的抽像描述。它是相對於物理記憶體來講的,可以直接理解成 不真實的 假的 記憶體,例如,乙個0x08000...

Binder機制簡介

binder是一種程序間通訊機制,通俗一點,其實是提供遠端過程呼叫機制 rpc 傳輸效能 一次拷貝 易用性 相對於共享記憶體 安全性 許可權分離 servicemanager proxy client server 匿名共享記憶體方式 實現乙個binder通訊例項,需要經過一下步驟 1 獲得serv...

STL的底層實現機制

1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double ended que...