Reliable Real-Time Applications on Android OS Bhupinder S. Mongia Vijay K. Madisetti, Fellow, IEEE Electrical and Computer Engineering Georgia Tech Atlanta, GA 30332 Electrical and Computer Engineering Georgia Tech Atlanta, GA 30332
[email protected] [email protected] Abstract – The Android operating system (OS) is widely used within several types of embedded & mobile platforms, including mobile phones and tablets, and the industry is exploring the ability of Android within other embedded platforms, i.e., automotive or military, that require real-time guarantees and the ability to meet deadlines as a pre-requisite for reliable operation. In this paper, we present preliminary conclusions on Android’s real-time behavior based on experimental measurements performed on a commercially available Android platform. Dalvik VM makes full use of Linux for memory management and multi-threading, which is intrinsic in the Java language. The Application Framework provides many higher-level services to applications in the form of Java classes. This will vary in its facilities from one implementation to another. Index Terms – Android OS, Realtime Software, OMAP I. INTRODUCTION Traditional studies on the reliability of software focus on functional failures, and do not emphasize the time-related behavior of systems that can also cause the software to fail. The ability to meet deadlines and time constraints is critical to embedded systems software (as in automotive or robotic applications) that mandate response to stimuli within prespecified real-time design specifications, and reliability considerations require a detailed evaluation of the ability of the system to meet these specifications [1-3]. The Android OS is an operating system primarily designed for mobile platforms by Google. It is an open source OS based on LINUX kernel (version 2.6) that enables developers to write applications primarily in Java with support for C/C++ as well [4]. Android is finding widespread acceptance in the mobile and portable computing market, and this study examines, for the first time, its performance & reliability in more demanding embedded real-time applications. A. Android Architecture An Android system is a stack of software components. At the bottom of the stack is Linux (kernel version 2.6). This provides basic system functionality like process and memory management and security. Also, the kernel handles all the things such as network interface and a vast array of device drivers, which make it easy to interface to peripheral hardware. On top of Linux is a set of libraries, including bionic (the Google libc), media support for audio and video, graphics (OpenGL ES), support for browsers (Webkit), and a lightweight database, SQLite [4]. A key component of an Android system is the runtime engine – the Dalvik Virtual Machine (VM). It was designed specifically for Android and is optimized in two ways. It is designed to be instantiated multiple times – each application has its