91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Binder?驅(qū)動深度解析:Android IPC?的核心底層實現(xiàn)

jf_44130326 ? 來源:Linux1024 ? 作者:Linux1024 ? 2026-03-12 08:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Android系統(tǒng)的底層架構(gòu)中,Binder是當(dāng)之無愧的IPC(跨進(jìn)程通信)核心,堪稱Android組件通信的“心臟”。從應(yīng)用啟動、服務(wù)調(diào)用到系統(tǒng)服務(wù)交互,幾乎所有跨進(jìn)程操作都離不開Binder驅(qū)動的支撐。對于Android開發(fā)者而言,吃透Binder驅(qū)動的實現(xiàn)原理,不僅能深入理解Android系統(tǒng)的設(shè)計邏輯,更能高效定位性能問題、規(guī)避安全漏洞,實現(xiàn)系統(tǒng)級的開發(fā)優(yōu)化。

本文將基于Android 15 + Linux 6.1內(nèi)核源碼(kernel/drivers/android/binder.c),從核心架構(gòu)、事務(wù)流程、內(nèi)存管理到實戰(zhàn)調(diào)優(yōu),全方位解析Binder驅(qū)動的底層邏輯,同時搭配核心流程圖,讓抽象的底層實現(xiàn)變得直觀易懂。

一、核心架構(gòu):Binder驅(qū)動的設(shè)計精髓

Binder驅(qū)動的高效性,源于其精妙的分層設(shè)計,從并發(fā)控制的三層鎖機(jī)制,到核心數(shù)據(jù)結(jié)構(gòu)的聯(lián)動,構(gòu)成了整個IPC通信的基礎(chǔ)。

1.三層鎖機(jī)制:并發(fā)控制的核心

Binder驅(qū)動通過分層自旋鎖實現(xiàn)線程安全,嚴(yán)格遵循固定獲取順序避免死鎖,這是其并發(fā)控制的精髓。每個鎖對應(yīng)不同的保護(hù)范圍,函數(shù)名后綴也會明確標(biāo)注所需持有的鎖,設(shè)計極具規(guī)范性。

// 鎖的獲取順序:proc->outer_lock → node->lock → proc->inner_lock1) proc->outer_lock : 保護(hù) binder_ref2) node->lock: 保護(hù) binder_node 的大部分字段3) proc->inner_lock : 保護(hù)線程/節(jié)點列表及所有 todo 列表// 函數(shù)后綴標(biāo)識? _olocked() : 持有 node->outer_lock? _nlocked() : 持有 node->lock? _ilocked() : 持有 proc->inner_lock

2.三大核心數(shù)據(jù)結(jié)構(gòu):Binder通信的“骨架”

Binder驅(qū)動的所有操作,都圍繞binder_proc、binder_node、binder_ref三大核心數(shù)據(jù)結(jié)構(gòu)展開,三者相互聯(lián)動,實現(xiàn)進(jìn)程、Binder對象、跨進(jìn)程引用的統(tǒng)一管理。

wKgZPGmyBYWADofoAAEWTeVHkK0213.png

(注:流程圖核心邏輯:每個進(jìn)程對應(yīng)一個binder_proc,每個Binder服務(wù)對象對應(yīng)一個binder_node并歸屬某一binder_proc,跨進(jìn)程訪問時通過binder_ref建立對目標(biāo)binder_node的引用,實現(xiàn)進(jìn)程間的對象關(guān)聯(lián))

① binder_proc:進(jìn)程的Binder上下文

每個使用Binder通信的進(jìn)程,都會在內(nèi)核中創(chuàng)建一個binder_proc結(jié)構(gòu)體,作為該進(jìn)程的Binder核心上下文,管理進(jìn)程的所有Binder相關(guān)資源:

?線程管理:proc->threads(紅黑樹存儲)

?節(jié)點管理:proc->nodes(紅黑樹存儲)

?引用管理:proc->refs_by_desc / refs_by_node(雙紅黑樹)

?工作隊列:proc->todo(存儲待處理事務(wù))

② binder_node:Binder對象的內(nèi)核表示

每個Binder服務(wù)對象(如Service),在內(nèi)核中都會對應(yīng)一個binder_node,是對象的內(nèi)核級抽象,核心字段如下:

structbinder_node{ structbinder_proc*proc;    // 所屬進(jìn)程的binder_proc binder_uintptr_tptr;     // 對象在用戶空間的地址 binder_uintptr_tcookie;    // 用戶空間Cookie structhlist_headrefs;    // 該節(jié)點的跨進(jìn)程引用列表 structbinder_node_workwork; // 節(jié)點相關(guān)工作項 // ...};

③ binder_ref:跨進(jìn)程引用的橋梁

當(dāng)進(jìn)程需要訪問其他進(jìn)程的Binder對象時,不會直接操作目標(biāo)進(jìn)程的binder_node,而是通過binder_ref建立引用,這是跨進(jìn)程通信的關(guān)鍵橋梁:

structbinder_ref { structbinder_node *node;   // 指向目標(biāo)binder_node structbinder_proc *proc;   // 所屬的本地進(jìn)程binder_proc structbinder_ref_data data;  // 引用數(shù)據(jù)(包含句柄) // ...};

二、事務(wù)處理流程:Binder通信的核心執(zhí)行邏輯

Binder跨進(jìn)程通信的本質(zhì),是事務(wù)的傳遞與處理。從事務(wù)創(chuàng)建、對象轉(zhuǎn)換,到分發(fā)執(zhí)行,整個流程由一系列核心函數(shù)驅(qū)動,形成了一套完整的事務(wù)生命周期。以下是Binder事務(wù)處理的完整流程圖和關(guān)鍵步驟解析:

wKgZPGmyBYaAVDGAAAyKf7DvRDU348.png

(注:流程圖核心步驟:事務(wù)創(chuàng)建初始化→ Binder對象轉(zhuǎn)Handle →文件描述符傳遞(如有)→事務(wù)分發(fā)→目標(biāo)線程處理→結(jié)果返回(同步場景))

1.事務(wù)創(chuàng)建與初始化:binder_alloc_transaction

由binder_alloc_transaction函數(shù)完成,創(chuàng)建并初始化事務(wù)結(jié)構(gòu)體,填充通信的核心元信息,為后續(xù)傳輸做準(zhǔn)備:

?from:發(fā)起事務(wù)的源線程

?to_proc:目標(biāo)進(jìn)程的binder_proc

?to_thread:目標(biāo)處理線程(可為空,由驅(qū)動后續(xù)選擇)

?buffer:事務(wù)數(shù)據(jù)的存儲緩沖區(qū)

?flags:事務(wù)標(biāo)志(同步/異步、單向通信等)

2.對象轉(zhuǎn)換:Binder → Handle映射

跨進(jìn)程通信中,Binder對象無法直接傳輸,需通過binder_translate_binder函數(shù)將Binder對象轉(zhuǎn)換為句柄(Handle),這是跨進(jìn)程對象訪問的核心邏輯:

1.從源進(jìn)程中獲取待傳輸?shù)腷inder_node;

2.在目標(biāo)進(jìn)程中創(chuàng)建/查找對應(yīng)的binder_ref;

3.將內(nèi)核中的BINDER_TYPE_BINDER類型轉(zhuǎn)換為BINDER_TYPE_HANDLE;

4.更新句柄編號和對象引用計數(shù)。

3.文件描述符傳遞:binder_translate_fd

Binder支持跨進(jìn)程傳遞文件描述符(如FD),由binder_translate_fd函數(shù)處理,保證文件描述符的安全傳遞和有效映射:

1.檢查目標(biāo)進(jìn)程是否有權(quán)限接收FD;

2.通過fget()獲取文件內(nèi)核結(jié)構(gòu),做安全校驗;

3.創(chuàng)建binder_txn_fd_fixup結(jié)構(gòu),實現(xiàn)FD的延遲分配,避免資源泄漏。

4.事務(wù)分發(fā):binder_transaction

binder_transaction是Binder驅(qū)動中最復(fù)雜的函數(shù)之一,承擔(dān)事務(wù)的最終分發(fā)職責(zé),處理數(shù)據(jù)拷貝、對象修復(fù)、線程選擇、優(yōu)先級繼承、死亡通知等核心邏輯,最終將事務(wù)加入目標(biāo)進(jìn)程的todo隊列,并喚醒目標(biāo)線程處理。

5.內(nèi)存管理:零拷貝的高效實現(xiàn)

Binder驅(qū)動的高性能,很大程度上源于基于mmap的內(nèi)存共享機(jī)制,實現(xiàn)了內(nèi)核空間與用戶空間的零拷貝通信,避免了數(shù)據(jù)的重復(fù)拷貝帶來的性能損耗。

// 進(jìn)程打開Binder設(shè)備時調(diào)用mmap,建立內(nèi)存映射mmap(NULL, map_size, PROT_READ, MAP_PRIVATE, binder_fd,0)

核心優(yōu)勢

?零拷貝:數(shù)據(jù)無需在用戶/內(nèi)核空間之間來回復(fù)制;

?內(nèi)存共享:通過映射實現(xiàn)跨進(jìn)程的內(nèi)存數(shù)據(jù)共享;

?按需分配:由binder_alloc管理內(nèi)存池,實現(xiàn)內(nèi)存的動態(tài)按需分配。

三、引用計數(shù)與生命周期:Binder對象的可靠管理

Binder驅(qū)動實現(xiàn)了類似智能指針的引用計數(shù)機(jī)制,分為強(qiáng)引用和弱引用,通過自動的引用計數(shù)傳播,保證Binder對象在跨進(jìn)程通信中的生命周期安全,避免對象被提前釋放或內(nèi)存泄漏。

1.強(qiáng)引用vs弱引用:分工明確的生命周期管理

由binder_inc_node_nilocked函數(shù)完成引用計數(shù)的增減,兩者分工明確,共同保障對象安全:

?強(qiáng)引用(strong):表示對象正在被使用,強(qiáng)引用計數(shù)為0時,對象可能被內(nèi)核釋放;

?弱引用(weak):僅用于跟蹤對象的存在性,不影響對象的生命周期,用于處理“死亡通知”場景。

2.引用計數(shù)的自動傳播

當(dāng)事務(wù)中包含Binder對象時,驅(qū)動會自動完成引用計數(shù)的傳播,通過binder_inc_node和binder_inc_ref_olocked函數(shù),分別增加源對象和目標(biāo)引用的計數(shù):

// 增加binder_node的引用計數(shù)binder_inc_node(node, strong,internal, target_list);// 增加binder_ref的引用計數(shù)binder_inc_ref_olocked(ref, strong, target_list);

核心保障

1.發(fā)送方不會釋放正在被傳輸?shù)膶ο螅?/p>

2.接收方能夠正確管理接收到的對象引用;

3.有效處理跨進(jìn)程的循環(huán)引用問題。

四、線程管理與調(diào)度:高效的任務(wù)處理機(jī)制

Binder驅(qū)動內(nèi)置了智能的線程管理和調(diào)度策略,包括線程狀態(tài)管理、動態(tài)線程選擇、優(yōu)先級繼承,保證事務(wù)處理的高效性和公平性,避免線程過載或優(yōu)先級反轉(zhuǎn)。

1. Binder線程的六大狀態(tài)

Binder線程有明確的狀態(tài)標(biāo)識,通過枚舉值定義,驅(qū)動根據(jù)狀態(tài)進(jìn)行線程的調(diào)度和管理:

enum{  BINDER_LOOPER_STATE_REGISTERED =0x01, // 已注冊  BINDER_LOOPER_STATE_ENTERED   =0x02, // 已進(jìn)入循環(huán)  BINDER_LOOPER_STATE_EXITED   =0x04, // 已退出  BINDER_LOOPER_STATE_INVALID   =0x08, // 無效  BINDER_LOOPER_STATE_WAITING   =0x10, // 等待中  BINDER_LOOPER_STATE_POLL    =0x20, // Poll 模式};

2.智能線程選擇策略:binder_select_thread_ilocked

驅(qū)動通過binder_select_thread_ilocked函數(shù)選擇事務(wù)處理線程,遵循**“復(fù)用優(yōu)先、負(fù)載均衡”**的原則,避免線程創(chuàng)建的開銷和單線程過載:

1.優(yōu)先選擇**等待中(WAITING)**的線程,最大化線程復(fù)用;

2.無等待線程時,根據(jù)負(fù)載動態(tài)創(chuàng)建新線程,實現(xiàn)負(fù)載均衡;

3.基于進(jìn)程的線程池上限,避免無限制創(chuàng)建線程。

3.優(yōu)先級繼承:解決優(yōu)先級反轉(zhuǎn)問題

Binder支持優(yōu)先級繼承機(jī)制(由binder_transaction_priority實現(xiàn)),防止高優(yōu)先級進(jìn)程因等待低優(yōu)先級進(jìn)程的事務(wù)處理而出現(xiàn)“優(yōu)先級反轉(zhuǎn)”:

1.發(fā)送方的進(jìn)程優(yōu)先級傳遞給目標(biāo)接收方;

2.接收方處理該事務(wù)時,臨時提升線程優(yōu)先級;

3.事務(wù)處理完成后,恢復(fù)線程的原始優(yōu)先級。

五、死亡通知機(jī)制:進(jìn)程崩潰的容錯處理

在跨進(jìn)程通信中,若服務(wù)端進(jìn)程意外死亡,客戶端需要及時感知并清理資源,否則會出現(xiàn)空指針、通信阻塞等問題。Binder驅(qū)動的死亡通知機(jī)制,實現(xiàn)了進(jìn)程崩潰的實時感知,保證通信的容錯性。

wKgZPGmyBYaABNlqAAVY0pnhK0A016.png

(注:流程圖核心步驟:客戶端注冊死亡通知→服務(wù)端進(jìn)程意外死亡→驅(qū)動檢測到死亡事件→向客戶端發(fā)送BR_DEAD_BINDER通知→客戶端清理資源)

核心實現(xiàn)流程

1.注冊通知:客戶端通過BC_REQUEST_DEATH_NOTIFICATION向驅(qū)動注冊對目標(biāo)服務(wù)的死亡通知;

2.檢測死亡:Binder驅(qū)動實時監(jiān)控進(jìn)程狀態(tài),檢測到服務(wù)端進(jìn)程死亡后,標(biāo)記對應(yīng)的binder_node和binder_ref;

3.發(fā)送通知:驅(qū)動通過BR_DEAD_BINDER向客戶端發(fā)送死亡通知,攜帶相關(guān)標(biāo)識;

4.資源清理:客戶端接收到通知后,及時清理對目標(biāo)服務(wù)的引用和相關(guān)資源,避免無效調(diào)用。

六、性能優(yōu)化:讓Binder通信更高效

理解Binder驅(qū)動的底層邏輯后,可從開發(fā)層面針對性優(yōu)化,減少性能損耗,避免ANR、卡頓等問題。以下是經(jīng)過實戰(zhàn)驗證的核心優(yōu)化技巧:

1.減少事務(wù)次數(shù):合并小事務(wù)

多次小事務(wù)會帶來頻繁的跨進(jìn)程通信開銷,建議將多個小事務(wù)合并為一個大事務(wù),大幅減少通信次數(shù):

// 優(yōu)化前:100次小事務(wù),開銷大for(inti =0; i ();for(inti =0; i 

2.異步事務(wù):使用單向通信

對于不需要返回結(jié)果的場景,設(shè)置異步(單向)事務(wù)標(biāo)志,避免客戶端阻塞等待,提升響應(yīng)速度:

// C層:設(shè)置異步標(biāo)志t->flags |= TF_ONE_WAY;// Java層:使用oneway關(guān)鍵字定義AIDL方法onewayvoiddoSomething(intnum);

3.合理設(shè)置線程池:適配業(yè)務(wù)負(fù)載

根據(jù)應(yīng)用的業(yè)務(wù)特點,調(diào)整Binder線程池的最大線程數(shù),避免線程數(shù)不足導(dǎo)致事務(wù)排隊,或線程數(shù)過多導(dǎo)致資源浪費(fèi):

// 在Application的onCreate()中設(shè)置,示例:最大16個線程BinderInternal.setMaxThreads(16);

4.避免大對象傳輸:使用共享內(nèi)存

大對象(如大文件、大數(shù)據(jù)數(shù)組)直接通過Binder傳輸會占用大量緩沖區(qū),導(dǎo)致性能下降。建議使用Ashmem共享內(nèi)存實現(xiàn)大數(shù)據(jù)傳輸:

// 使用Ashmem創(chuàng)建共享內(nèi)存,傳遞文件描述符MemoryFilememoryFile=newMemoryFile(size);ParcelFileDescriptorpfd=memoryFile.getFileDescriptor();

七、調(diào)試與分析:快速定位Binder相關(guān)問題

開發(fā)中遇到Binder相關(guān)的性能問題(如事務(wù)阻塞、ANR)或內(nèi)存泄漏時,可通過內(nèi)核調(diào)試接口和工具,快速定位問題根源,以下是最常用的調(diào)試技巧:

1. debugfs:查看Binder核心狀態(tài)

Binder驅(qū)動提供了豐富的debugfs調(diào)試接口(/sys/kernel/debug/binder/),可直接查看驅(qū)動狀態(tài)、事務(wù)日志:

# 查看Binder整體狀態(tài)cat/sys/kernel/debug/binder/state# 查看所有事務(wù)日志cat/sys/kernel/debug/binder/transaction_log# 查看失敗的事務(wù)日志,定位錯誤原因cat/sys/kernel/debug/binder/failed_transaction_log

2.性能分析:使用trace工具跟蹤事務(wù)

通過內(nèi)核trace工具,實時跟蹤Binder事務(wù)的執(zhí)行過程,分析事務(wù)的耗時、阻塞點:

# 開啟Binder事件的trace跟蹤echo1 > /sys/kernel/debug/tracing/events/binder/enable# 查看trace日志,分析事務(wù)執(zhí)行流程cat/sys/kernel/debug/tracing/trace# 關(guān)閉traceecho0 > /sys/kernel/debug/tracing/events/binder/enable

3.內(nèi)存分析:監(jiān)控Binder內(nèi)存使用

通過/proc文件系統(tǒng),查看指定進(jìn)程的Binder內(nèi)存映射情況,定位內(nèi)存泄漏或內(nèi)存占用過高問題:

# 替換為目標(biāo)進(jìn)程ID,查看Binder相關(guān)內(nèi)存映射cat/proc//maps | grep binder

八、安全機(jī)制:內(nèi)核層面的通信防護(hù)

Binder作為Android系統(tǒng)的核心通信機(jī)制,在內(nèi)核層面實現(xiàn)了多重安全防護(hù),防止未授權(quán)訪問、權(quán)限繞過等安全漏洞,保障系統(tǒng)和應(yīng)用的通信安全。

1.內(nèi)核級權(quán)限檢查

在事務(wù)傳輸過程中,驅(qū)動通過security_binder_transfer_binder函數(shù)進(jìn)行內(nèi)核級的權(quán)限校驗,若校驗失敗,直接拒絕事務(wù)傳輸:

if(security_binder_transfer_binder(proc->cred, target_proc->cred)) {  ret = -EPERM; // 權(quán)限不足,返回錯誤 gotodone;}

2. UID/PID嚴(yán)格驗證

每個Binder事務(wù)都會攜帶發(fā)起方的UID和PID信息,驅(qū)動會對UID/PID進(jìn)行驗證,同時用于審計日志和資源統(tǒng)計,確保通信主體的合法性。

3.深度集成SELinux

Binder與Android的SELinux(安全增強(qiáng)型Linux)深度集成,實現(xiàn)細(xì)粒度的訪問控制,通過SELinux策略,限制進(jìn)程之間的Binder通信權(quán)限,防止越權(quán)訪問。

九、實戰(zhàn)案例:解決Binder相關(guān)的經(jīng)典問題

理論結(jié)合實戰(zhàn),以下是兩個開發(fā)中最常見的Binder相關(guān)問題,結(jié)合底層原理給出分析思路和解決方案:

案例1:應(yīng)用啟動延遲(3-5秒)

問題現(xiàn)象:應(yīng)用啟動緩慢,遠(yuǎn)超正常啟動時間;

底層分析

1.通過dumpsys activity分析啟動流程,發(fā)現(xiàn)啟動階段存在大量Binder事務(wù);

2.借助debugfs查看binder/state,確認(rèn)事務(wù)出現(xiàn)排隊現(xiàn)象,導(dǎo)致啟動流程阻塞;

解決方案

?將啟動階段的同步Binder調(diào)用改為異步調(diào)用;

?預(yù)加載核心服務(wù)的Binder連接,避免啟動時動態(tài)建立連接;

?優(yōu)化應(yīng)用初始化順序,將非核心的Binder調(diào)用延遲到應(yīng)用啟動完成后。

案例2:界面卡頓、頻繁ANR

問題現(xiàn)象:應(yīng)用界面卡頓,頻繁出現(xiàn)ANR彈窗;

底層分析

1.查看ANR日志(/data/anr/traces.txt),發(fā)現(xiàn)主線程等待Binder事務(wù)結(jié)果;

2.排查服務(wù)端,發(fā)現(xiàn)服務(wù)端在主線程處理耗時操作,導(dǎo)致Binder事務(wù)處理阻塞;

解決方案

?將服務(wù)端的耗時操作移到工作線程,避免阻塞Binder事務(wù)處理;

?客戶端使用oneway異步調(diào)用,避免主線程阻塞等待;

?為Binder調(diào)用實現(xiàn)超時機(jī)制,防止無限期等待。

十、總結(jié)與展望

Binder驅(qū)動作為Android IPC通信的核心,其精妙的設(shè)計貫穿了高效、安全、可靠三大原則:

1.內(nèi)存管理:基于mmap的零拷貝機(jī)制,實現(xiàn)跨進(jìn)程的高效數(shù)據(jù)傳輸;

2.并發(fā)控制:三層鎖機(jī)制確保線程安全,避免死鎖和數(shù)據(jù)競爭;

3.線程調(diào)度:智能的線程選擇和優(yōu)先級繼承,保證事務(wù)處理的高效性;

4.生命周期管理:強(qiáng)/弱引用計數(shù)+自動傳播,保障對象的安全管理;

5.容錯機(jī)制:死亡通知機(jī)制,實現(xiàn)進(jìn)程崩潰的實時感知和資源清理;

6.安全防護(hù):內(nèi)核級權(quán)限檢查、UID/PID驗證、SELinux集成,全方位保障通信安全。

對于Android開發(fā)者而言,理解Binder驅(qū)動的底層原理,不僅是進(jìn)階的必備知識,更是解決復(fù)雜性能問題、實現(xiàn)系統(tǒng)級開發(fā)的關(guān)鍵。

未來展望

隨著Android 15升級到Linux 6.1內(nèi)核,Binder驅(qū)動也在持續(xù)優(yōu)化,未來將朝著更高性能、更低延遲、更強(qiáng)安全的方向發(fā)展:

?進(jìn)一步優(yōu)化內(nèi)存管理和線程調(diào)度,降低通信開銷;

?增強(qiáng)異步事務(wù)的處理能力,提升并發(fā)通信效率;

?完善安全機(jī)制,實現(xiàn)更細(xì)粒度的權(quán)限控制和審計。

Binder驅(qū)動是Android系統(tǒng)的“神經(jīng)系統(tǒng)”,吃透它,就能真正理解Android跨進(jìn)程通信的底層邏輯,在開發(fā)中做到游刃有余。

審核編輯

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4028

    瀏覽量

    134063
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS跨進(jìn)程通信—IPC與RPC通信開發(fā)

    使用Binder驅(qū)動,用于設(shè)備內(nèi)的跨進(jìn)程通信,后者使用軟總線驅(qū)動,用于跨設(shè)備跨進(jìn)程通信。需要跨進(jìn)程通信的原因是因為每個進(jìn)程都有自己獨立的資源和內(nèi)存空間,其他進(jìn)程不能隨意訪問不同進(jìn)程的內(nèi)存和資源,
    的頭像 發(fā)表于 02-02 17:47 ?4344次閱讀
    HarmonyOS跨進(jìn)程通信—<b class='flag-5'>IPC</b>與RPC通信開發(fā)

    Android核心模塊及相關(guān)技術(shù)

    標(biāo)準(zhǔn)的技術(shù),Linux也是一個開放的操作系統(tǒng)。Android對操作系統(tǒng)的使用包括核心驅(qū)動程序兩部分,Android的Linux核心為標(biāo)準(zhǔn)的
    發(fā)表于 05-04 15:24

    [資料分享]+Android框架揭秘

    、binder driver概要及相關(guān)術(shù)語 192第7章 android binder ipc 1977.1 linux內(nèi)存空間與binder
    發(fā)表于 09-26 09:47

    Android手機(jī)操控ARM開發(fā)板外圍硬件設(shè)備【創(chuàng)科之龍】原創(chuàng)

    的使命:調(diào)試確保手機(jī)端發(fā)送過來的可以收到數(shù)據(jù),然后解析這個數(shù)據(jù)進(jìn)行對底層實現(xiàn)操作設(shè)備節(jié)點,最后實現(xiàn)操作硬件。學(xué)完可以學(xué)生課做只能家居控制系統(tǒng)或者遠(yuǎn)程控制家電等項目。 主要講解嵌入式li
    發(fā)表于 01-12 22:31

    Android_Linux BSP底層內(nèi)核驅(qū)動及framework開發(fā)

    Android_Linux BSP底層內(nèi)核驅(qū)動及framework開發(fā)
    發(fā)表于 11-02 10:35

    淺談Android與Linux系統(tǒng)之間的差異

    Linux內(nèi)核具備的常用核心驅(qū)動外,還增加了自己專有的內(nèi)核驅(qū)動程序,如顯示驅(qū)動、藍(lán)牙驅(qū)動、相機(jī)驅(qū)動
    發(fā)表于 07-05 06:06

    Android電源管理底層簡析

    Android 4.4.2Android電源管理底層用的是Linux power supply框架。驅(qū)動部分不敘述。只看JAVA、JNI和CPP應(yīng)用層。
    發(fā)表于 03-02 07:30

    openHarmony IPC數(shù)據(jù)調(diào)用的過程分享

    OnRemoteRequest方法。這里就是大概ipc調(diào)用的過程,對驅(qū)動自身的闡述比較淺薄,驅(qū)動中的多線程模型還有自身數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性并沒有闡述。如果有機(jī)會研究后,再講講dsoftbus驅(qū)動
    發(fā)表于 03-30 09:26

    移植openharmony啟動后一直打印binder驅(qū)動程序報錯是怎么回事

    在移植openharmony過程中,由于添加了新組件,啟動后,一直打印binder驅(qū)動程序報錯,錯誤如下所示。01-01 00:00:45.218 1 1 E 00719/Init
    發(fā)表于 05-23 17:27

    Deep Dive into Android IPC_Binde

    深入介紹Android系統(tǒng)的IPC binder 框架,對了解Android系統(tǒng)內(nèi)部運(yùn)作機(jī)制有很大幫助。
    發(fā)表于 03-11 13:42 ?11次下載

    Android對內(nèi)核修改的詳細(xì)說明

    Android binder,基于 Open Binder框架的一個驅(qū)動,用于提供 Android平臺的進(jìn)程間通訊(
    發(fā)表于 03-08 17:10 ?14次下載

    Andorid系統(tǒng)中binder是什么意思

    binder是什么?可以理解為Andorid系統(tǒng)中的一種進(jìn)程間通信的方式,雖然Android系統(tǒng)基于Linux,但是它并沒有采用Linux自帶的進(jìn)程間通信方式,而是采用了更高效的binder,理解
    的頭像 發(fā)表于 10-07 15:13 ?1504次閱讀
    Andorid系統(tǒng)中<b class='flag-5'>binder</b>是什么意思

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的頭像 發(fā)表于 05-09 10:50 ?894次閱讀

    底層邏輯到架構(gòu)設(shè)計:聚徽解析MES看板的技術(shù)實現(xiàn)路徑

    與數(shù)據(jù)接口的協(xié)同設(shè)計。本文將從底層邏輯出發(fā),深入解析MES看板的技術(shù)架構(gòu)與實現(xiàn)路徑。 一、底層邏輯:數(shù)據(jù)驅(qū)動的生產(chǎn)管理 MES看板的
    的頭像 發(fā)表于 06-16 15:23 ?715次閱讀

    深入解析RK平臺Android/Linux Bootloader核心文件:android_bootloader.c

    參數(shù)組裝等關(guān)鍵工作。(這個啟動流程android和linux共用) 本文將從 文件定位、核心函數(shù)、執(zhí)行流程 三個維度,拆解這個文件的底層邏輯。 一、文件核
    的頭像 發(fā)表于 01-09 10:58 ?1232次閱讀
    深入<b class='flag-5'>解析</b>RK平臺<b class='flag-5'>Android</b>/Linux Bootloader<b class='flag-5'>核心</b>文件:<b class='flag-5'>android</b>_bootloader.c