繁体   English   中英

为什么android在linux内核中引入binder?

[英]Why android introduce binder in linux kernel?

我正在尝试学习 android (linux) 内核,我知道 android 需要非常快的(零拷贝)IPC,但是,我仍然不明白为什么 binder 需要在那里。

可以用 unix socket + mmap /dev/shm 文件做同样的事情吗?

假设使用 dbus,但要实现零拷贝,在 tmpfs(例如 /dev/shm)中创建和打开文件,将其删除(这样另一个进程可能会意外打开它),将文件描述符发送到其他进程并映射它。

编辑:您也可以使用 shm_open 而不是在 tmpfs 中创建文件

因为在 2000 年代中期,Linux 中还没有可靠的标准化快速内核内 IPC。 传统的 SysV IPC 由于年代久远而被弃用,并且不再使用。 因此,Android 开发人员制作了他们自己的简单但功能强大的实现。 在桌面端,直到多年后 D-BUS 才变得足够广泛,但它仍然不够高效,无法在低功耗嵌入式设备中使用。

Binder 实现已在 2015 年初主线化到 Linux 3.19 内核中。有计划将 DBUS 移入内核(又名 KDBUS 和后来的 BUS1),但由于某些 Linux 内核开发人员/维护者之间的一些戏剧性和分歧而从未实现。

Binder 之所以存在,是因为它已经是现代 Linux 的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM