From 0775ad03c8f368199aa0d31ca3c5e1ea0bed93e9 Mon Sep 17 00:00:00 2001 From: Omooo <869759698@qq.com> Date: Mon, 18 May 2020 12:47:58 +0800 Subject: [PATCH] =?UTF-8?q?finish=20Binder=20=E8=AE=BE=E5=A4=87=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96=E3=80=81=E6=89=93?= =?UTF-8?q?=E5=BC=80=E5=92=8C=E5=86=85=E5=AD=98=E6=98=A0=E5=B0=84=E8=BF=87?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...–‡ä»¶çš„åˆå§‹åŒ–ã€æ‰“开和内存映射过程.md} | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) rename blogs/Android/Framework/æºä»£ç æƒ…景分æž/{Binder 设备的åˆå§‹åŒ–过程.md => Binder 设备文件的åˆå§‹åŒ–ã€æ‰“开和内存映射过程.md} (64%) diff --git a/blogs/Android/Framework/æºä»£ç æƒ…景分æž/Binder 设备的åˆå§‹åŒ–过程.md b/blogs/Android/Framework/æºä»£ç æƒ…景分æž/Binder 设备文件的åˆå§‹åŒ–ã€æ‰“开和内存映射过程.md similarity index 64% rename from blogs/Android/Framework/æºä»£ç æƒ…景分æž/Binder 设备的åˆå§‹åŒ–过程.md rename to blogs/Android/Framework/æºä»£ç æƒ…景分æž/Binder 设备文件的åˆå§‹åŒ–ã€æ‰“开和内存映射过程.md index 981fc14..950a44e 100755 --- a/blogs/Android/Framework/æºä»£ç æƒ…景分æž/Binder 设备的åˆå§‹åŒ–过程.md +++ b/blogs/Android/Framework/æºä»£ç æƒ…景分æž/Binder 设备文件的åˆå§‹åŒ–ã€æ‰“开和内存映射过程.md @@ -1,5 +1,5 @@ --- -Binder 设备文件 +Binder 设备文件的åˆå§‹åŒ–ã€æ‰“开和内存映射过程 --- #### åˆå§‹åŒ–过程 @@ -18,4 +18,10 @@ Binder 设备的åˆå§‹åŒ–过程是在 Binder 驱动程åºçš„åˆå§‹åŒ–函数 bind 进程打开了设备文件 /dev/binder 之åŽï¼Œè¿˜å¿…é¡»è¦è°ƒç”¨å‡½æ•° mmap 把这个设备文件映射到进程的地å€ç©ºé—´ï¼Œç„¶åŽæ‰å¯ä»¥ä½¿ç”¨ Binder 进程间通信机制。设备文件 /dev/binder 对应的是一个虚拟设备,将它映射到进程的地å€ç©ºé—´çš„目的并ä¸æ˜¯å¯¹å®ƒçš„内容感兴趣,而是为了为进程分é…内核缓冲区,以便它å¯ä»¥ç”¨æ¥ä¼ è¾“进程间通信数æ®ã€‚ -当进程调用函数 mmap 将设备文件 /dev/binder 映射到自己的地å€ç©ºé—´æ—¶ï¼ŒBinder 驱动程åºä¸­çš„函数 binder_mmap 就会被调用。 \ No newline at end of file +当进程调用函数 mmap 将设备文件 /dev/binder 映射到自己的地å€ç©ºé—´æ—¶ï¼ŒBinder 驱动程åºä¸­çš„函数 binder_mmap 就会被调用。 + +Binder 驱动程åºæœ€å¤šå¯ä»¥ä¸ºè¿›ç¨‹åˆ†é… 4M 内核缓冲区æ¥ä¼ è¾“进程间通信数æ®ã€‚Binder 驱动程åºä¸ºè¿›ç¨‹åˆ†é…的内核缓冲区在用户空间åªå¯ä»¥è¯»ï¼Œè€Œä¸å¯ä»¥å†™ã€‚ + +Binder 驱动程åºä¸ºè¿›ç¨‹åˆ†é…的内核缓冲区有两个地å€ï¼Œå…¶ä¸­ä¸€ä¸ªæ˜¯ç”¨æˆ·ç©ºé—´åœ°å€ï¼Œå¦ä¸€ä¸ªæ˜¯å†…核空间地å€ã€‚进程通过用户空间地å€æ¥è®¿é—®è¿™å—内核缓冲区的内容,而 Binder 驱动程åºé€šè¿‡å†…核空间地å€æ¥è®¿é—®è¿™å—内核缓冲区的内容。由于它们是连续的,并且起始地å€ç›¸å·®ä¸€ä¸ªå›ºå®šå€¼ï¼Œå› æ­¤ï¼Œåªè¦çŸ¥é“其中的一个地å€ï¼Œå°±å¯ä»¥æ–¹ä¾¿çš„计算出å¦å¤–一个地å€ã€‚ + +Binder 驱动程åºä¸ºè¿›ç¨‹åˆ†é…的内核缓冲区å³ä¸ºä¸€ç³»åˆ—物ç†é¡µé¢ï¼Œå®ƒä»¬åˆ†åˆ«è¢«æ˜ å°„到进程的用户地å€ç©ºé—´å’Œå†…核地å€ç©ºé—´ã€‚当 Binder 驱动程åºéœ€è¦å°†ä¸€å—æ•°æ®ä¼ è¾“给一个进程时,它就å¯ä»¥å…ˆæŠŠè¿™å—æ•°æ®ä¿å­˜åœ¨ä¸ºè¯¥è¿›ç¨‹æ‰€åˆ†é…的一å—内核缓冲区中,然åŽå†æŠŠè¿™å—内核缓冲区的用户空间地å€å‘Šè¯‰è¿›ç¨‹ï¼Œæœ€åŽè¿›ç¨‹å°±å¯ä»¥è®¿é—®åˆ°é‡Œé¢çš„æ•°æ®äº†ã€‚这样åšçš„好处便是ä¸éœ€è¦å°†æ•°æ®ä»Žå†…核空间å¤åˆ¶åˆ°ç”¨æˆ·ç©ºé—´ï¼Œä»Žè€Œæ高了数æ®çš„传输效率。 \ No newline at end of file