久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 什么是Binder?

什么是Binder?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-11 20:00:25 1697025625

一、什么是Binder

Binder,一個通過內(nèi)存映射實現(xiàn)跨進(jìn)程通信的東東,Android中一個進(jìn)程空間分為用戶空間和內(nèi)核空間,其中用戶空間數(shù)據(jù)不可共享,內(nèi)核空間數(shù)據(jù)可共享。

因此跨進(jìn)程通信需要內(nèi)核空間的支持,傳統(tǒng)IPC通信例如管道,Socket等,它們是內(nèi)核空間的一部分,可以直接拷貝,通過內(nèi)容提供者進(jìn)程copy_from_user()拷貝到內(nèi)核空間,再通過copy_to_user()復(fù)制給內(nèi)容接收方用戶空間,實現(xiàn)的進(jìn)程間通信。

但是Binder不屬于Linux內(nèi)核空間,不能直接進(jìn)行內(nèi)核空間的兩次拷貝,所以需要借助Linux的動態(tài)內(nèi)核可加載模塊機(jī)制。

既然有現(xiàn)有的IPC方式,為什么重新設(shè)計一套Binder機(jī)制呢。主要是出于以上三個方面的考量:

高性能:從數(shù)據(jù)拷貝次數(shù)來看Binder只需要進(jìn)行一次內(nèi)存拷貝,而管道、消息隊列、Socket都需要兩次,共享內(nèi)存不需要拷貝,Binder的性能僅次于共享內(nèi)存。

穩(wěn)定性:上面說到共享內(nèi)存的性能優(yōu)于Binder,那為什么不適用共享內(nèi)存呢,因為共享內(nèi)存需要處理并發(fā)同步問題,控制負(fù)責(zé),容易出現(xiàn)死鎖和資源競爭,穩(wěn)定性較差。而Binder基于C/S架構(gòu),客戶端與服務(wù)端彼此獨立,穩(wěn)定性較好。

安全性:我們知道Android為每個應(yīng)用分配了UID,用來作為鑒別進(jìn)程的重要標(biāo)志,Android內(nèi)部也依賴這個UID進(jìn)行權(quán)限管理,包括6.0以前的固定權(quán)限和6.0以后的動態(tài)權(quán)限,傳榮IPC只能由用戶在數(shù)據(jù)包里填入UID/PID,這個標(biāo)記完全是在用戶空間控制的,沒有放在內(nèi)核空間,因此有被惡意篡改的可能,因此Binder的安全性更高。

延伸閱讀:

二、傳統(tǒng)IPC通信方式

Linux現(xiàn)有的進(jìn)程通信手段有以下幾種:

管道:在創(chuàng)建時分配一個page大小的內(nèi)存,緩存區(qū)大小比較有限; 消息隊列:信息復(fù)制兩次,額外的CPU消耗;不合適頻繁或信息量大的通信;

共享內(nèi)存:無須復(fù)制,共享緩沖區(qū)直接付附加到進(jìn)程虛擬地址空間,速度快;但進(jìn)程間的同步問題操作系統(tǒng)無法實現(xiàn),必須各進(jìn)程利用同步工具解決;

套接字:作為更通用的接口,傳輸效率低,主要用于不通機(jī)器或跨網(wǎng)絡(luò)的通信;

信號量:常作為一種鎖機(jī)制,防止某進(jìn)程正在訪問共享資源時,其他進(jìn)程也訪問該資源。因此,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段;

信號: 不適用于信息交換,更適用于進(jìn)程中斷控制,比如非法內(nèi)存訪問,殺死某個進(jìn)程等。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
一款好的APP應(yīng)該是什么樣子?

一、好的APP具備的特點1、直觀易用用戶界面應(yīng)該簡潔明了,操作邏輯清晰,使用戶能夠快速上手并自如地進(jìn)行操作。良好的用戶體驗是一款成功的APP...詳情>>

2023-10-11 21:33:38
python的五個特點?

一、簡潔易讀的語法Python以簡潔易讀而著稱。它采用了一種簡單而直觀的語法,使得代碼具有高度的可讀性,降低了學(xué)習(xí)和理解的難度。Python使用縮...詳情>>

2023-10-11 21:23:04
區(qū)塊鏈技術(shù)在醫(yī)療領(lǐng)域有沒有什么可以應(yīng)用的場景?

一、區(qū)塊鏈技術(shù)在醫(yī)療領(lǐng)域的應(yīng)用區(qū)塊鏈在醫(yī)療領(lǐng)域的應(yīng)用前景廣泛,國內(nèi)外各機(jī)構(gòu)都在積極探索區(qū)塊鏈在醫(yī)療領(lǐng)域的多方面應(yīng)用。主要應(yīng)用方向包括醫(yī)...詳情>>

2023-10-11 21:17:44
Java并發(fā)編程需要掌握什么?

一、Java并發(fā)編程需要掌握的內(nèi)容1、線程基礎(chǔ)知識了解線程的概念、生命周期和狀態(tài)轉(zhuǎn)換,以及如何創(chuàng)建和管理線程。熟悉Java中的Thread類和Runnabl...詳情>>

2023-10-11 21:08:03
WEB服務(wù)器是什么?

一、WEB服務(wù)器是什么WEB服務(wù)器是一種用于存儲、處理和提供Web內(nèi)容的軟件或硬件設(shè)備。它充當(dāng)了Web應(yīng)用程序和客戶端之間的中間層,負(fù)責(zé)接收來自客...詳情>>

2023-10-11 20:49:17