精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

跟著小白一起學(xué)鴻蒙# Binder機(jī)制剖析和使用

系統(tǒng) OpenHarmony
Binder最開始是IPC工具,起源于OpenBinder項(xiàng)目,發(fā)展于Android項(xiàng)目,現(xiàn)在已經(jīng)和入LinuxKernel,目前演變成RPC工具,可以使當(dāng)前進(jìn)程調(diào)用另一個(gè)進(jìn)程的函數(shù)向自身函數(shù)一樣簡單。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

原理

1. 物理內(nèi)存中開辟4096字節(jié)內(nèi)存(1m-8k)
2. 物理內(nèi)存與磁盤內(nèi)存對(duì)應(yīng)
3. mmu將mmap開辟的物理內(nèi)存地址轉(zhuǎn)換成虛擬地址

Binder概述

  • 什么是Binder
    Binder最開始是IPC工具,起源于OpenBinder項(xiàng)目,發(fā)展于Android項(xiàng)目,現(xiàn)在已經(jīng)和入LinuxKernel,目前演變成RPC工具,可以使當(dāng)前進(jìn)程調(diào)用另一個(gè)進(jìn)程的函數(shù)向自身函數(shù)一樣簡單。
OpenBinder is a system for inter-process communication. It was developed at Be Inc. and then Palm, Inc. and was the basis for the Binder framework now used in the Android operating system developed by Google.

OpenBinder allows processes to present interfaces which may be called by other threads. Each process maintains a thread pool which may be used to service such requests. OpenBinder takes care of reference counting, recursion back into the original thread, and the inter-process communication itself. On the Linux version of OpenBinder, the communication is achieved using ioctls on a given file descriptor, communicating with a kernel driver.

The kernel-side component of the Linux version of OpenBinder was merged into the Linux kernel mainline in kernel version 3.19, which was released on February 8, 2015.

Binder是解決進(jìn)程間通訊問題的框架

  • Binder能干什么

    OpenHarmony里的對(duì)應(yīng)層次就是:
  1. 驅(qū)動(dòng):kernel/linux/linux-xxx/drivers/android/binderXXX
  2. 服務(wù):foundation/communication/ipc
  3. 框架:各種NAPI里面和對(duì)應(yīng)的服務(wù)接口:如foundation/communication/xxx/frameworks/js/napi/xxx和foundation/communication/xxx/services/bluetooth/service/xxx

在OpenHarmony上表現(xiàn)的功能是:

  1. 提供客戶端-服務(wù)器(Client-Server)模型,服務(wù)請(qǐng)求方(Client)可獲取提供服務(wù)提供方(Server)的代理 (Proxy),并通過此代理讀寫數(shù)據(jù)來實(shí)現(xiàn)進(jìn)程間的數(shù)據(jù)通信。通常,系統(tǒng)能力(System Ability)Server側(cè)會(huì)先注冊(cè)到系統(tǒng)能力管理者(System Ability Manager,縮寫SAMgr)中,SAMgr負(fù)責(zé)管理這些SA并向Client提供相關(guān)的接口。Client要和某個(gè)具體的SA通信,必須先從SAMgr中獲取該SA的代理,然后使用代理和SA通信。三方應(yīng)用可以使用FA提供的接口綁定服務(wù)提供方的Ability,獲取代理,進(jìn)行通信。

在OpenHarmony里的限制是:

  1. 單個(gè)設(shè)備上跨進(jìn)程通信時(shí),傳輸?shù)臄?shù)據(jù)量最大約為1MB,過大的數(shù)據(jù)量請(qǐng)使用匿名共享內(nèi)存。
  2. 不支持把跨設(shè)備的Proxy對(duì)象傳遞回該P(yáng)roxy對(duì)象所指向的Stub對(duì)象所在的設(shè)備。
  • Binder原理是什么

    Binder是C/S架構(gòu)的進(jìn)程間通訊機(jī)制。特點(diǎn)如下:
  1. 用戶空間運(yùn)行:Client,Service和Service Manager;內(nèi)核空間運(yùn)行:Binder Driver
  2. Client,Server和Service Manager通過系統(tǒng)調(diào)用open,mmap和ioctl來訪問設(shè)備文件/dev/binder。從而實(shí)現(xiàn)進(jìn)程間通信
  3. 功能詳細(xì)如下:
#define BINDER_WRITE_READ   _IOWR('b', 1, struct binder_write_read)
#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32)
#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32)
#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
#define BINDER_VERSION _IOWR('b', 9, struct binder_version)
#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info)
#define BINDER_FEATURE_SET _IOWR('b', 30, struct binder_feature_set)
#define BINDER_GET_ACCESS_TOKEN _IOWR('b', 31, struct access_token)
  1. 對(duì)應(yīng)文件如下
.
├── binder_alloc.c
├── binder_alloc.h
├── binder_alloc_selftest.c
├── binder.c
├── binder_trace.h
├── Kconfig
└── Makefile
  1. Binder通信過程介紹
  1. Service使用 BINDER_SET_CONTEXT_MGR命令通過Ioctl將自己注冊(cè)成為ServiceMannager
  2. Client向Binder驅(qū)動(dòng)發(fā)起獲取服務(wù)的請(qǐng)求,Binder驅(qū)動(dòng)通過Client需要獲取服務(wù)的名稱,從ServiceManager中獲取對(duì)Binder實(shí)體的引用,通過獲得到的引用就能實(shí)現(xiàn)和Server進(jìn)程的通信
  1. IPC通信過程介紹
  1. 首先Binder驅(qū)動(dòng)在內(nèi)核空間創(chuàng)建一個(gè)數(shù)據(jù)接收緩存區(qū)
  2. 接著在內(nèi)核空間開辟一塊內(nèi)核緩存區(qū),建立內(nèi)核緩存區(qū)和內(nèi)核中數(shù)據(jù)接收緩存區(qū)之間的映射關(guān)系,以及內(nèi)核中數(shù)據(jù)接收緩存區(qū)和接收進(jìn)程用戶空間地址的映射關(guān)系
  3. Client通過系統(tǒng)調(diào)用copy_from_user()將數(shù)據(jù)拷貝到內(nèi)核中的內(nèi)核緩存區(qū),由于內(nèi)核緩存區(qū)和Service的用戶空間存在內(nèi)存映射,所以Service進(jìn)程的用戶空間也有了此數(shù)據(jù),這就完成一次跨進(jìn)程通信

角色說明

  1. Client進(jìn)程:使用服務(wù)的進(jìn)程
  2. Server進(jìn)程:提供服務(wù)的進(jìn)程
  3. Service Manager進(jìn)程:管理Service注冊(cè)與查詢(將字符形式的Binder名字轉(zhuǎn)化成Client中對(duì)該Binder的引用)
  4. Binder驅(qū)動(dòng):虛擬設(shè)備驅(qū)動(dòng),是連接Service進(jìn)程,Client進(jìn)程和Service Manager的橋梁,具體作用為:1.傳遞進(jìn)程間的數(shù)據(jù),通過內(nèi)存映射。2.實(shí)現(xiàn)線程控制:采用Binder的線程池,并由Binder驅(qū)動(dòng)自身進(jìn)行管理。
  • Binder怎么用

    JS側(cè)依賴
import rpc from "@ohos.rpc"
import featureAbility from "@ohos.ability.featureAbility"

Native側(cè)編譯依賴

sdk依賴:

external_deps = [
"ipc:ipc_core",
]

此外, IPC/RPC依賴的refbase實(shí)現(xiàn)在公共基礎(chǔ)庫下,請(qǐng)?jiān)黾訉?duì)utils的依賴:

external_deps = [
"c_utils:utils",
]

JS側(cè)實(shí)現(xiàn)跨進(jìn)程通信基本步驟:

  1. 獲取代理

    使用ohos.ability.featureAbility提供的connectAbility方法綁定Ability,在參數(shù)里指定要綁定的Ability所在應(yīng)用的包名、組件名,如果是跨設(shè)備的情況,還需要指定所在設(shè)備的NetworkId。用戶需要在服務(wù)端的onConnect方法里返回一個(gè)繼承自ohos.rpc.RemoteObject的對(duì)象,此對(duì)象會(huì)在其onRemoteMessageRequest方法里接收到請(qǐng)求。

  2. 發(fā)送請(qǐng)求

    客戶端在connectAbility參數(shù)指定的回調(diào)函數(shù)接收到代理對(duì)象后,使用ohos.rpc模塊提供的方法完成RPC通信,其中MessageParcel提供了讀寫各種類型數(shù)據(jù)的方法,IRemoteObject提供了發(fā)送請(qǐng)求的方法,RemoteObject提供了處理請(qǐng)求的方法onRemoteRequest,用戶需要重寫。

Native側(cè)實(shí)現(xiàn)跨進(jìn)程通信的基本步驟:

  1. 定義接口類

    接口類繼承IRemoteBroker,定義描述符、業(yè)務(wù)函數(shù)和消息碼。

  2. 實(shí)現(xiàn)服務(wù)提供端(Stub)

    Stub繼承IRemoteStub(Native),除了接口類中未實(shí)現(xiàn)方法外,還需要實(shí)現(xiàn)AsObject方法及OnRemoteRequest方法。

  3. 實(shí)現(xiàn)服務(wù)請(qǐng)求端(Proxy)

    Proxy繼承IRemoteProxy(Native),封裝業(yè)務(wù)函數(shù),調(diào)用SendRequest將請(qǐng)求發(fā)送到Stub。

  4. 注冊(cè)SA

    服務(wù)提供方所在進(jìn)程啟動(dòng)后,申請(qǐng)SA的唯一標(biāo)識(shí),將Stub注冊(cè)到SAMgr。

  5. 通過SA的標(biāo)識(shí)和設(shè)備NetworkId,從SAMgr獲取Proxy,通過Proxy實(shí)現(xiàn)與Stub的跨進(jìn)程通信。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發(fā)畫布功能

2023-02-24 16:02:45

WebSocket網(wǎng)絡(luò)通訊協(xié)議

2023-02-27 16:30:32

鴻蒙開源協(xié)議分析

2023-03-30 09:19:54

SELinux安全子系統(tǒng)

2022-08-19 19:02:20

開源鴻蒙操作系統(tǒng)

2023-04-04 09:24:11

鴻蒙HiDumper

2022-10-10 14:47:04

藍(lán)牙應(yīng)用鴻蒙

2023-01-03 15:09:10

鴻蒙常用工具

2023-04-06 09:18:52

鴻蒙AVPlayerAVRecorder

2022-10-20 16:40:16

JS應(yīng)用控制LED鴻蒙

2022-10-09 15:05:50

NAPI框架鴻蒙

2022-12-06 15:39:16

鴻蒙主干代碼

2022-11-24 14:34:41

Hap程序鴻蒙

2022-11-03 15:47:04

HTTP通信協(xié)議

2022-10-31 15:35:02

Wi-Fi藍(lán)牙子系統(tǒng)

2022-11-08 15:43:45

開源鴻蒙藍(lán)牙協(xié)議棧

2022-10-17 14:29:24

鴻蒙應(yīng)用開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩一区二区在线观看视频| 成人国产精品视频| 一区二区三区黄色| 日本77777| 国产激情在线播放| 国产精品女主播在线观看| 亚洲自拍欧美另类| av大片在线免费观看| 99久久综合| 日韩成人在线播放| 中文字幕1234区| 在线观看涩涩| 伊人开心综合网| 日本一区二区高清视频| 成人av手机在线| 三级一区在线视频先锋| 欧美风情在线观看| 国产精品久久久久久久av| 一区二区在线视频观看| 欧美色综合网站| 精品国产一区三区| 91福利国产在线观看菠萝蜜| 国产亚洲综合在线| 国产精品久久久久免费| 国产精品国产三级国产aⅴ| 国产精品最新自拍| 国产日韩三级在线| 高清不卡日本v二区在线| 在线观看视频二区| 亚欧美中日韩视频| 久久免费国产视频| 国产盗摄一区二区三区在线| 欧美一区二区三| 精品一区二区三区四区| 亚洲色图欧美日韩| 欧洲精品99毛片免费高清观看| 欧美三级韩国三级日本一级| jizzjizzxxxx| 日本在线播放一二三区| 亚洲一级二级三级| 欧洲精品视频在线| 午夜小视频在线| 国产色婷婷亚洲99精品小说| 精品欧美一区二区在线观看视频 | av在线电影院| 久久久国产精华| 久久久综合亚洲91久久98| 欧美一级性视频| 国产成人福利片| 亚洲aaaaaa| 一本色道久久综合亚洲精品婷婷| 欧美一区二区三区久久久| 亚洲精品社区| 午夜欧美不卡精品aaaaa| 手机在线免费看片| 91精品啪在线观看国产81旧版| 亚洲视频日韩精品| 麻豆精品免费视频| 亚洲影院天堂中文av色| 亚洲精品一区中文| 加勒比一区二区| 久久99蜜桃| 在线播放国产精品| 潮喷失禁大喷水aⅴ无码| 欧美aaaa视频| 久久成人18免费网站| 国产精品视频一区二区三 | 国产丝袜一区二区三区| 日韩人妻无码一区二区三区| 希岛爱理av免费一区二区| 亚洲女人天堂成人av在线| 色欲av无码一区二区三区| 日韩黄色大片网站| 欧美成人手机在线| 一区二区三区视频免费看| 久久精品伊人| 国产一区二区视频在线观看| 国产成年妇视频| 波多野结衣中文一区| 久久久久网址| av男人的天堂在线| 亚洲精品欧美在线| www插插插无码视频网站 | 欧美性猛交xxxxx水多| 欧美日韩激情视频在线观看| 99欧美精品| 欧美一级久久久| 一区二区视频观看| 久久亚洲国产| 久久久久久美女| 色老头在线视频| 国产毛片精品一区| 久久国产精品一区二区三区| av在线资源站| 亚洲国产精品影院| 日本激情视频在线播放| 网站一区二区| 亚洲欧美日韩一区在线| 国产色无码精品视频国产| 在线不卡视频| 成人伊人精品色xxxx视频| 四虎精品成人免费网站| 日韩一区欧美小说| 337p粉嫩大胆噜噜噜鲁| www.久久爱.com| 亚洲精品综合精品自拍| 国产探花在线播放| 日韩精品一区第一页| 成人国产一区二区| 永久免费在线观看视频| 一本大道久久a久久综合婷婷| 91小视频在线播放| 99ri日韩精品视频| 中文字幕日韩欧美在线| 国产三级av片| 高清不卡一区二区在线| 亚洲精品中文字幕在线| 在线观看网站免费入口在线观看国内| 欧美一区二区三区婷婷月色| 白白色免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产亚洲精品久久飘花| 大地资源网3页在线观看| 在线看国产日韩| 亚洲国产精品无码久久久久高潮| 自拍日韩欧美| 国产精品稀缺呦系列在线| 男人久久精品| 欧美日韩午夜剧场| 看全色黄大色黄女片18| 欧美1级日本1级| 91久久久久久国产精品| 91亚洲欧美| 欧美在线视频不卡| 69精品无码成人久久久久久| 亚洲少妇在线| 精品欧美国产| 天堂网在线最新版www中文网| 精品国产污污免费网站入口 | 精品一区在线播放| 丁香花电影在线观看完整版| 欧美成人艳星乳罩| 久热这里有精品| 国产精品中文字幕日韩精品| 综合一区中文字幕| 伊人久久一区| 久久成人综合视频| av网站在线观看免费| 亚洲情趣在线观看| 日本黄色www| 国内激情久久| 好吊妞www.84com只有这里才有精品| 先锋成人av| 精品国产一区二区国模嫣然| 国产精品suv一区二区| 成人av电影免费在线播放| 黄页网站在线观看视频| 欧美男男freegayvideosroom| 午夜免费日韩视频| 日本1级在线| 欧美在线免费观看亚洲| 亚洲色图100p| 国产精品一卡二卡在线观看| 福利视频一区二区三区四区| 婷婷激情久久| 国产精品视频一区国模私拍| 午夜伦理在线| 欧美精品一区二区三区一线天视频| 国产在线成人精品午夜| 久久午夜色播影院免费高清 | 国产米奇在线777精品观看| 国产一二三四五| 丁香五月缴情综合网| 欧洲中文字幕国产精品| 欧美日本精品在线| 免费观看黄网站| 午夜久久影院| 精品久久精品久久| 欧美中文字幕精在线不卡| 最近2019中文字幕大全第二页 | 欧美多人猛交狂配| 日韩 欧美一区二区三区| 精品91一区二区三区| 99精品国产高清一区二区麻豆| 777777777亚洲妇女| 国产毛片在线| 日韩精品中文字幕一区| 色屁屁影院www国产高清麻豆| 国产午夜精品在线观看| 亚洲精品无码久久久久久久| av成人激情| 亚洲午夜精品一区二区三区| 999久久精品| 国产精品直播网红| brazzers在线观看| 日韩在线视频中文字幕| 三级网站免费观看| 欧美日本乱大交xxxxx| 黄色激情视频在线观看| 国产精品国产三级国产有无不卡| 亚洲v在线观看| 青青草国产成人av片免费| www.亚洲成人网| 日本精品三区| 精品国产一区二区三区免费| 伦一区二区三区中文字幕v亚洲| 欧美精品video| 欧美私人网站| 亚洲欧洲激情在线| 亚洲欧美高清视频| 欧美日高清视频| 亚洲影院在线播放| 亚洲成人一区在线| 欧美做爰啪啪xxxⅹ性| 久久久久久久久免费| av av在线| 狠狠色综合日日| 久久精品免费网站| 亚洲一区二区三区四区五区午夜 | 妖精视频在线观看免费| 99久久夜色精品国产网站| 手机av在线网站| 久久精品99国产精品| 成人在线观看a| 亚洲三级网站| 日韩久久久久久久久久久久| 911久久香蕉国产线看观看| 三级三级久久三级久久18| 久久精品国产亚洲5555| 丁香婷婷久久久综合精品国产| 国产亚洲精彩久久| 国产精品精品久久久| 久久人体大尺度| 91国内免费在线视频| 国产高清在线a视频大全| 久久精品国产v日韩v亚洲| 丁香在线视频| 中国日韩欧美久久久久久久久| 丝袜视频国产在线播放| 日韩不卡在线观看| 深爱激情五月婷婷| 日韩精品亚洲元码| 天天av综合网| 亚洲免费高清视频| 日产精品久久久久久久性色| 国产视频久久久久| 日韩专区一区二区| 亚洲色图第三页| 成年人在线看| 中文字幕久热精品在线视频| 永久免费av在线| 久久精品色欧美aⅴ一区二区| 老司机在线看片网av| 久久亚洲综合国产精品99麻豆精品福利| 日本电影全部在线观看网站视频| 亚洲天堂开心观看| jizz在线观看视频| 久久久国产精品亚洲一区| a级影片在线| 欧美日韩ab片| 成人影院在线视频| 国产高清在线不卡| 黄色成人在线观看网站| 成人性生交大片免费看小说| 日韩在线精品强乱中文字幕| 国产精品一区二区三区免费观看 | 亚洲女人天堂成人av在线| 国产在线观看精品一区| 久久久www成人免费精品| 国产99re66在线视频| 欧美专区国产专区| 久久精品国产福利| 成人在线免费观看一区| 琪琪久久久久日韩精品| 性欧美大战久久久久久久免费观看| 色婷婷综合网| 无码专区aaaaaa免费视频| 久久国产精品久久w女人spa| 污污的视频免费| 成人av电影在线| 夫妇露脸对白88av| 亚洲午夜精品在线| 中文字幕免费视频观看| 日韩视频在线你懂得| 在线观看xxx| 久久网福利资源网站| 理论不卡电影大全神| 国产精品自产拍高潮在线观看| 欧美专区一区| 日韩国产高清一区| 国产精品v日韩精品v欧美精品网站| 大肉大捧一进一出好爽视频| 麻豆一区二区在线| 精品中文字幕在线播放| 国产精品久久久久久久浪潮网站| 国产亚洲欧美久久久久| 欧美亚洲国产一区二区三区va| 国产高清视频免费| 中文字幕亚洲国产| 天堂√8在线中文| 91久久精品国产91久久性色tv| 欧美1区二区| 在线观看18视频网站| 久久亚洲一区| 国产黑丝在线观看| 亚洲欧洲成人av每日更新| 久久精品视频1| 欧美v亚洲v综合ⅴ国产v| 97电影在线观看| 欧美亚洲在线播放| jizz性欧美23| 国产人妻互换一区二区| 久久香蕉精品| 黑丝av在线播放| 一区av在线播放| 国产又黄又粗又长| 一区二区亚洲欧洲国产日韩| 亚洲插插视频| 国产视色精品亚洲一区二区| 一本精品一区二区三区| 欧美日韩中文不卡| 欧美高清在线一区二区| 国产又黄又猛又粗又爽| 欧美成人女星排名| 色综合999| 91久久国产自产拍夜夜嗨| 91综合在线| 国产原创精品在线| 国产目拍亚洲精品99久久精品| 伊人手机在线视频| 亚洲精品电影网站| 黄视频网站在线观看| 国产精品视频在线免费观看| 国产综合亚洲精品一区二| av在线天堂网| 洋洋成人永久网站入口| www.中文字幕| 欧美日本精品在线| 丁香综合av| 奇米精品一区二区三区| 成人av网站在线观看免费| 久久综合加勒比| 日韩精品中文字幕一区| 国产美女一区视频| 国产v亚洲v天堂无码| 激情欧美一区二区三区| 99热超碰在线| 精品久久久久久久久久国产 | 欧美激情18p| 丁香综合av| 成人在线免费在线观看| 久久综合色鬼综合色| 丁香社区五月天| 在线精品91av| 久久三级毛片| 色哺乳xxxxhd奶水米仓惠香| 国产精品1区2区| 日本网站免费观看| 国产视频综合在线| 成人在线视频免费| 中文字幕精品一区日韩| 国产盗摄精品一区二区三区在线| 欧美激情精品久久| 亚洲精品98久久久久久中文字幕| 亚洲天堂资源| 亚洲日本精品国产第一区| 国产在线精品国自产拍免费| 中文字幕影音先锋| 精品夜色国产国偷在线| 亚洲不卡系列| 成人短视频在线观看免费| www.视频一区| 亚洲午夜在线播放| 欧美成人小视频| 欧美日韩导航| 欧美激情第3页| 亚洲成人一二三| 成人网视频在线观看| 亚洲一区免费网站| 国产精品色网| 麻豆网址在线观看| 日韩大陆毛片av| 少妇高潮一区二区三区99| 日韩成人手机在线| 久久久久久久久免费| 国产精品视频一二区| 91国产中文字幕| 亚洲欧美网站在线观看| 中国极品少妇videossexhd| 精品视频在线免费观看| 国产探花在线观看| 亚洲成人a**址| av中文字幕一区| 91精东传媒理伦片在线观看| 97在线观看免费| 天天综合一区| 天天躁日日躁aaaxxⅹ| 欧美成人一区二区三区片免费| 粉嫩一区二区三区| 免费看欧美黑人毛片|