Priority Inheritance during Remote Procedure Calls in Real-Time Android using Extended Binder Framework
Different approaches for improving process scheduling, memory management and generic message passing have been introduced to Android in the past, in order to extend it with support for real-time applications. One of Android's most important security features is sandboxing and strict isolation of running processes. Through its highly modular application framework, an RPC-based interprocess communication using the Binder driver plays a crucial role in the Android platform. This paper presents an extended Binder module for preserving the priority of the calling thread across process boundaries. Introduced modifications affect the low level Linux driver as well as its Java / C++ wrapper in the Android framework. Instead of the invocation of the call with the default priority, an additional pool of real-time threads is created on the remote side and automatically used to handle high priority requests. Empirical evaluation results provide experimental evidence of the effectiveness and scalability of the proposed approach and show bounded execution time in different test configurations. Furthermore, the improved Android platform remains fully backward compatible with existing components and third-party applications.
Igor Kalkov, Alexandru Gurghian, Stefan Kowalewski