5 ms·
Sounds like Android's binder was heavily inspired by this. Works "well" in practice in that I can't recall ever having concurrency problems, but I would not bot
by creshal 2y ago
Sounds like Android's binder was heavily inspired by this. Works "well" in practice in that I can't recall ever having concurrency problems, but I would not bother trying to benchmark the efficiency of Android's mess of abstraction layers piled over `/dev/binder`. It's hard to tell how much of the overhead is required to use this IPC style safely, and how much of the overhead is just Android being Android.
- p_l 2y agoNot sure which one came first, but Binder is direct descendant (down to sometimes still matching symbol names and calls) of BeOS IPC system. All the low level components (Binder, Looper, serialization model even) come from there.
- kragen 2y agowhat's the best introduction to how beos ipc worked?
- p_l 2y agoBe Book, Haiku source code, and yes Android low level internals docs. A quick look through BeOS and Android Binder-related APIs will quickly show how Android side is derived from it (through OpenBinder, which was for a time going to be used in next Palm system based on Linux, at least one of them)
- kragen 2y agothank you very much!
- stuaxo 2y agoThat's really interesting, I wonder if a Haiku on Linux could use it. Will binder ever make it into mainline Linux?
- creshal 2y agoAs far as I understand, it is already mainlined, it's just not built by "desktop" distributions since nobody really cares - all the cool kids want dbusFactorySingletonFactoryPatternSingletons to undo 20 years of hardware performance increases instead.
- p_l 2y agoBunch of desktop distros include it to run anbox/waydroid
- p_l 2y agoBinders has been in mainline kernel for years, and some projects ended up using it, if only to emulate android environment - both anbox and its AFAIK successor Waydroid use native kernel binder to operate. You can of course build your own use (depending on what exactly you want to do, you might end up writing your own userland instead of using androids)
- creshal 2y agoFrom what I understand, Sun made their Doors concept public in 1993 and shipped a SpringOS beta with it in 1994, before BeOS released, but it's hard to tell if Sun inspired BeOS, or of this was a natural solution to a common problem that both teams ran into at the same time.
- p_l 2y agoI'd expect convergent evolution - both BeOS team and Spring team were very well aware of issues with Mach (which nearly single-handedly coined the idea that microkernels are slow and bad) and worked to design better IPC mechanisms. Sharing of scheduler slice is an even older idea, AFAIK, and technically something already done whenever you call a kernel (it's not a context switch to a separate process, it's a switch to different address space but running in the same scheduler thread)
- pjmlp 2y agoBinder was inspired by IPC mechanisms in Palm and BeOS, whose engineers joined the original Android team.