A Design For Real-Time Android
A Design For Real-Time Android
Yin Yan, Sree Harsha Konduri, Amit Kulkarni, Varun Anand, Steven Y. Ko, Lukasz Ziarek
University at Buffalo, The State University of New York
{yinyan, sreehars, amitshri, varunana, stevko, lziarek}@buffalo.edu
ABSTRACT Since its inception, there has been much interest in a real-
There has been much recent interest in adding support for time Android variant; researchers have proposed four canon-
real-time capabilities to Android. Proposed architectures for ical system architectures [15, 17] for extending Android with
doing so fall into four broad categories, but only two sup- real-time capabilities. These architectural models are illus-
port real-time Android applications. These two proposals trated in Fig. 1. The first proposed system architecture
include a real-time garbage collector for real-time memory (Fig. 1a) is built around a clean separation between Android
management and a real-time operating system for real-time and real-time components, allowing for real-time applica-
scheduling and resource management. Although they pro- tions to run directly on top of a real-time operating system
vide the fundamental building blocks for real-time Android, (RTOS). Although viable, this model prevents the creation
unfortunately such proposals are incomplete. In this paper of real-time Android apps, instead opting for a system that
we examine the Android programming model, libraries, and can run both Android apps and separate real-time appli-
core systems services in the context of the Fiji real-time VM cations. In addition, real-time applications are prevented
coupled with the RT Linux and RTEMS real-time operat- from leveraging the features offered by Android and cannot
ing systems. We show that even with a real-time operating include any Android related services or libraries. The next
system as well as real-time memory management, the pre- approach (Fig. 1b) is similar to the first, but instead of swap-
dictability of core Android constructs is poor. To address ping the standard Linux kernel for an RTOS, it introduces a
this limitation we propose a preliminary RTDroid design and real-time hypervisor at the bottommost layer, running An-
show its applicability to real-time systems. droid as a guest operating system in one partition and real-
time applications in another. This model suffers from the
same deficiencies of the first.
Categories and Subject Descriptors The last two models (Fig. 1c and Fig. 1d) permit the con-
C.3 [Special-Purpose and Application-Based Systems]: struction of real-time Android apps by adding a secondary
Real-time and embedded systems VM with real-time capabilities or by extending DVM with
real-time support (alternatively, replacing DVM with a real-
time JVM) respectively. These two approaches provide the
1. INTRODUCTION ground work for predictability and determinism within the
Android’s open source nature has prompted its ubiquitous Android system by replacing the standard Linux kernel with
adoption in various embedded system domains. Instead of an RTOS as well as introducing real-time features at the
being built around the Java Virtual Machine (JVM), An- VM level. Notably, these models support real-time Android
droid uses the Dalvik Virtual Machine (DVM) [12]. Unlike apps, the use of Android features, in addition to Android
a JVM, DVM leverages register based [21] bytecode (called services and libraries. The last two models, unfortunately,
DEX [2]) instead of Java bytecode. The DVM supports just- provide little or no insight on how Android features, ser-
in-time compilation (JIT) [10] to optimize for the target de- vices, and libraries can themselves be extended to support
ployment device. Android, itself, runs on top of a modified execution of real-time Android apps.
Linux kernel and provides a framework layer for applications In this paper, we demonstrate a new approach to achieving
to leverage. The framework layer is built from Linux kernel real-time capabilities with the Android system. Our pro-
functionality, third party libraries, as well as core Android totype, called RTDroid, focuses on extending an existing
mechanisms. Applications targeting the Android system are real-time JVM 1 with Android constructs and leveraging
colloquially referred to as “apps.” an off-the-shelf RTOS. We have identified critical changes
to the Android framework and core mechanisms necessary
Permission to make digital or hard copies of all or part of this work for personal or
to guarantee predictable runtime performance for apps that
classroom use is granted without fee provided that copies are not made or distributed leverage Android mechanisms and services. Specifically, the
for profit or commercial advantage and that copies bear this notice and the full cita- contributions of this paper are:
tion on the first page. Copyrights for components of this work owned by others than
ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or re- • An investigation of the core Android components and
publish, to post on servers or to redistribute to lists, requires prior specific permission their suitability for real-time.
and/or a fee. Request permissions from [email protected].
JTRES’13, October 09 - 11 2013, Karlsruhe, Germany 1
Copyright 2013 ACM 978-1-4503-2166-2/13/10 $15.00. Extending an RT JVM for Android requires DEX support;
http://dx.doi.org/10.1145/2512989.2512993. we discuss this issue in Section 3.2.4.
Applications Applications Applications Applications
Application Framework
Application Framework Application Framework Application Framework
RT Core RT
Apps Libraries Apps
Core Core Core
Dalvik VM
Libraries Libraries RT JVM Libraries
RT JVM /
Dalvik VM Linux Kernel Dalvik VM
Extend Dalvik
Figure 1: Proposed RT Android System Architectures. Shaded components represent additions or changes to the Android
architecture.
• An initial system implementation of core Android con- The medical device industry has expended significant re-
structs and services, which provides real-time guaran- sources in exploring Android as a future platform [5, 8, 9,
tees for real-time threads. Our system is implemented 1]. They report that Android is well suited for envisioned
on top of the Fiji VM, but is both VM and RTOS applications, such as remote patient monitoring devices in-
agnostic. Our current design focuses on supporting a cluding cardio monitors and glucose analyzers, because such
single real-time app, but its design can be generalized applications require support for wireless connectivity as well
to support multiple apps. as good user interface design. Other proposed applications
• A detailed evaluation study of our system leveraging include fall and gate monitoring for the elderly and patients
two separate RTOSes, RT Linux and RTEMS. Our undergoing rehabilitation.
performance results indicate that previously proposed In all of these scenarios, Android is used as a platform to
models, without any changes to the framework layer, run a single real-time app. The underlying hardware can
cannot provide real-time guarantees if real-time threads be a traditional embedded board or a mobile device. As
and/or tasks leverage Android’s core mechanisms and we detail in Section 3, the benefit of using Android in these
services. scenarios is the rich APIs and libraries that exist on Android.
It supports connectivity through Wi-Fi, Bluetooth, 3G, and
The rest of paper is organized as follows: in Section 2, we 4G; it provides native support for various sensors such as
provide two high-level motivating examples for RTDroid. In GPS, accelerometer, camera, and gyroscope; and it fosters
Section 3 we outline Android details, specifically focusing an intuitive user interface design through a touch screen and
on the challenges of adding real-time capabilities. We de- gestures. Control and medical apps typically require these
tail our solution in Section 4. Evaluation and experiments functionalities and their development can be streamlined as
are presented in Section 5. We discuss related work and well as standardized through the Android APIs and libraries.
conclusions in Section 6 and Section 7 respectively.
2.2 Mixed-Criticality
In addition to supporting a single real-time app, we en-
2. MOTIVATION vision allowing a mobile device to run multiple real-time
This section presents two broad use cases as well as ex- apps along with regular apps through the use of a mixed-
amples of their concrete deployments to motivate the design criticality system. For medical monitoring, the same mobile
and utility of RTDroid. We envision RTDroid being lever- device that monitors its user’s medical conditions can be
aged in two distinct ways: 1) to run a single real-time app on used as a traditional smartphone. This reduces the number
either specialized embedded hardware or a mobile device and of devices a user needs to carry. Similarly, if a user requires
2) to run real-time apps along with existing non-real-time multiple medical monitoring applications, they can be exe-
apps in a mixed-criticality environment. The former case is cuted on the same device.
the primary contribution of this paper, but important de- Google reports that its Play Store currently has 700,000
sign considerations must be made to support the latter in apps available for Android 2 . The ability to install and lever-
the same system. As such, we discuss salient implemen- age these apps will greatly simplify the development and
tation details for supporting multiple real-time apps along maintenance of real-time apps. For example, any medical
with non-real-time apps. monitoring device may be expected to send a report to the
patient’s doctor on a daily or weekly basis. Since there are
2.1 Single Real-Time App many apps that already provide such a functionality, e.g.,
As Android becomes increasingly popular, researchers have Gmail that allows other apps to send emails through it, the
begun to explore its use as a platform for safety- and mission- monitoring app can simply leverage one of those apps; this
critical apps. For example, the UK has launched a satellite reduces the complexity of development and maintenance of
equipped with a regular control system as well as a smart- real-time apps.
phone (Google Nexus One) [7]. The goal of the satellite is We note that supporting such mixed-criticality scenarios
to experiment with transferring control from the standard 2
As of June, 2013 (https://play.google.com/about/
control system to the mobile device itself. apps/)
requires significant engineering effort to support download- tails). Simply modifying DVM or the OS is not enough to
ing and installation of real-time apps, validation of newly in- augment Android’s runtime model; the framework layer it-
stalled apps with regard to the schedulability of other apps self must be changed. Since the Fiji VM has mixed crit-
present in the system, JITing DEX bytecode to specialize icality support, we can execute system services either as
for the target platform [10], access to I/O and hardware threads within a single-app deployment, or as separate Java
sensors, and power management issues. Such challenges are programs executing in a partition of a single multi-VM in-
out of the scope of this paper. Instead, we focus on the core stance.
Android constructs and system services that are used not The third benefit of our architecture is the streamlining
only for single-app scenarios, but also for multi-app scenar- of real-time app development. Developers can leverage the
ios as those are essential to build Android compatibility as rich APIs and libraries already implemented and support for
we describe in the next section. various hardware components. Unlike other mobile OSes,
Android excels in supporting a wide variety of hardware
3. THE CASE FOR RTDROID with different CPUs, memory capacities, screen sizes, and
sensors. Thus, Android APIs make it easier to write a sin-
To support the scenarios discussed in the previous sec-
gle app that can run on different hardware. In addition,
tion, we advocate a clean-slate design for RTDroid. We
Android APIs allow a developer to use all hardware compo-
start from the ground up, leveraging an established RTOS
nents available on a mobile device, such as: a touch screen,
(e.g., RT Linux [4, 14], RTEMS [6]) and an RT JVM (e.g.,
Wi-Fi, GPS, Bluetooth, telephony, accelerometer, camera,
Fiji VM [19]). Upon this foundation we build Android com-
etc. Thus, Android compatibility can reduce the complexity
patibility. RTDroid provides a faithful illusion to an ex-
of real-time app development.
isting Android app running on our platform that it is ex-
ecuting on Android. This necessitates providing the same
set of Android APIs as well as preserving their semantics 3.2 Challenges
for both regular Android apps and real-time apps. For real- Providing Android compatibility means that we provide
time apps, Android compatibility means that developers can a faithful illusion that an app is running on Android, i.e.,
use standard Android APIs in addition to a small number of we should be able to take an existing Android app and run
additional APIs our platform provides to support real-time it on our platform. In addition, a developer should be able
features. These additional APIs provide limited RTSJ [13] to use Android APIs in a real-time app. This is where our
support without scoped memory. main challenge lies; due to the unique programming and
This approach, however, does not mean that we can sim- runtime model of Android, it requires careful consideration
ply “port” the existing Android code to run on an RTOS as to how to preserve the semantics of the APIs while us-
and an RT JVM. As a consequence, we do not have full ing an RT JVM and an RTOS. There are two main con-
freedom to re-architect the underlying implementation of cerns that Android introduces though its programming and
all the APIs. The unique programming and runtime model execution models: 1) Android leverages extensive usage of
of Android requires careful consideration as to how we can callbacks – callbacks registered by high priority threads will
simultaneously support Android compatibility while provid- not necessarily be executed in the high priority thread itself
ing real-time guarantees. In this section, we discuss why resulting in computation expressed in a high priority task
this is the case by first presenting the benefits of our design, to potentially execute at lower priority and 2) core Android
then discussing the challenges in realizing our design within constructs are not priority aware, most use FIFO ordering
the context of a concrete system. for processing.
More specifically, we need to consider the following four
3.1 Benefits aspects essential to Android to achieve our goal of providing
There are three major benefits of our clean-slate design. Android compatibility: 1) supporting the four main com-
First, by using an RTOS and an RT JVM, we can rely on ponents of Android that an app implements, 2) handling
the sound design decisions already made and implemented Android constructs that an app can use, 3) handling An-
to support real-time capabilities in these systems. For ex- droid system services, and 4) supporting Android’s byte-
ample, our RTDroid prototype uses Fiji VM [19], which code format, DEX. Two of the challenges—challenges 1 and
is designed to support real-time Java programs from the 4—are not necessarily research directions, but rather engi-
ground up. Fiji VM already provides real-time function- neering tasks. The other two challenges require more careful
ality through static compiler checks, real-time garbage col- consideration. In the rest of this section, we discuss these
lection [20], synchronization, threading, etc. and crucially challenges at a high level. In Section 4, we take two specific
provides mixed-criticality support necessary for executing examples that illustrate these challenges and discuss how we
multiple applications within a single VM. We note, however, address them within the implementation of RTDroid.
that RTDroid’s design is VM independent.
The second benefit of our architecture is the flexibility of
adjusting the runtime model for each use case discussed in 3.2.1 Supporting Android’s Four Main Components
Section 2. Using an RTOS and an RT JVM provides the The Android programming model provides four main com-
freedom to control the runtime model. For example, we can ponents for constructing apps—Activity, Service, Broad-
leverage the RTEMS [6] runtime model, where one process castReceiver, and ContentProvider—which are essentially
compiled together with the kernel with full utility of all the abstract Java classes that define callbacks that an app im-
resources of the underlying hardware, for single app deploy- plements. An Android app needs to extend and implement
ment. Using this runtime model is not currently possible at least one of these four classes to run on Android. Thus,
with Android, as Android requires most system services to supporting these four main components exactly the way An-
run as separate processes (Section 3.2.3 provides more de- droid does is critical to providing Android compatibility.
start
Activity Processing Thread Client
onCreate() onStart() onResume()
Running Message Thread
Queue
Handler
end Object
Message
onDestroy() onRestart() onStop() onPause() Looper
handleMessage
Message loop
Message sendMessage
RT
Thread Thread
Thread
Figure 7: An Example Flow of AlarmManager. An app uses
AlarmManager.set() to register an alarm. When the alarm
Figure 6: An Example of Looper and Handler on RTDroid.
triggers, the AlarmManager sends a message back to the app,
Each message has a priority and is stored in a priority queue.
and the app’s callback (BroadcastReceiver.onReceive() in
Processing of messages is also done by priority. The example
the example) gets executed.
shows one high-priority thread and multiple non-real-time
threads.
App Thread Alarm Map
Looper are leveraged. For instance, we are investigating an
earliest deadline first processing scheme for soft-real-time UI AlarmManager.set()
updates. Fully exploring priority assignment policies is our
Timestamp
future work.
Our second design decision is to create multiple prior-
ity queues to store incoming messages according to their
priority. We then associate one Looper and Handler for Message
each queue to process each message according to its prior-
ity. Fig. 6 shows our new implementation for Looper and
Handler. Since we now process each message according to Figure 8: The Implementation of Alarm Registration on RT-
its sender’s priority, messages sent by lower priority threads Droid. The tree colored black at the top maintains times-
do not delay the messages sent by higher priority threads. tamps; the trees colored gray are per-timestamp trees main-
Although our conceptual model leverages one thread per taining actual alarm messages to be delivered.
priority level, the implementation of these constructs is backed est path of the tree. We use one red-black tree for storing
by a thread pool. We adopt a similar approach to imple- timestamps and pointers to per-timestamp red-black trees;
menting efficient Asynchronous Event Handler (AEH) in then we use these per-timestamp trees to order alarms with
RTSJ, proposed by Kim et al. [16]. To provide memory the same timestamp by their sender’s priority. Thus, our
safety we limit the size of the queue. We are currently in- alarm registration process is essentially one insert operation
vestigating which queue management schemes and size lim- to the timestamp tree and another insert operation to a per-
itations are appropriate for which service. timestamp tree. By organizing the alarms based on senders’
priorities, we guarantee that an alarm message for a low
4.2 AlarmManager priority thread does not delay an alarm message for a high
The AlarmManager is an ideal candidate to discuss how priority thread. Expired alarms are discarded. Note that
we address the following two questions for system services: this ensure that low priority threads whose alarm registra-
1) how to adapt Android’s multi-process architecture when tion rate exceeds the alarm delivery capacity of the system
running a single real-time app, and 2) how to mediate access cannot prevent a high priority alarm from being triggered.
to a system service from multiple threads with different pri- For alarm delivery, we create an AlarmManager thread and
orities. We first briefly overview how AlarmManager works assign the highest priority for timely delivery of alarm mes-
and discuss our approach. sages. With this thread, we replace the multi-process mes-
Android’s implementation for AlarmManager involves alarm sage passing architecture of the original AlarmManager with
registration and alarm delivery as shown in Fig. 7. When an RTSJ’s AEH. More specifically, the thread wakes up when-
app registers an alarm, it makes an IPC call to AlarmMan- ever an app inserts a new alarm to our red-black trees; then
ager with a message and a time. The message is associated it schedules an AEH at the specified time for the alarm.
with a callback of the app which gets executed when the We associate the app’s callback for the alarm message with
message is delivered 4 . When the alarm triggers at the spec- this AEH, so that we execute the callback exactly at the
ified time, AlarmManager sends the message back to the app, time specified in the alarm. In practice, most Android apps
and the callback gets executed. In both the registration and leverage only a few alarms. However, we are exploring an
the delivery, Android provides no guarantee on when or in alternative approach where we create one AEH per priority
what order the message is delivered. level and leverage a thread pool.
Thus, we re-design both registration and delivery of alarms
to support predictability. For alarm registration, we use
red-black trees to maintain alarms as shown in Fig. 8; this
5. EVALUATION AND RESULTS
means that we can make the registration process predictable To measure and validate our prototype of RTDroid, we
based on the complexity of red-black tree operations, i.e., tested our implementation on two system level configura-
the longest path of a tree is no longer than twice the short- tions. The first configuration utilizes an Intel Core 2 Duo
1.86GHz Processor with 2GB of RAM running Linux patched
4 with RT Linux v.3.4.45. For precise timing measurements
This is done by using Android’s Intent, though we do not
discuss the details here due to space considerations. we disabled one of the cores prior to running the experi-
40 50
38
45
36
Microseconds
Microseconds
34 40
32
35
30
28 30
26
25
24
22 20
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Percentage Percentage
(a) With 30 low priority threads (b) With 300 low priority threads
Figure 9: The cumulative distribution of latency for RTDroid at 30 and 300 low priority threads configuration on Core 2 Duo
running RT Linux.
1800 4.5e+07
1600
4e+07
1400
Microseconds
Microseconds
3.5e+07
1200
1000 3e+07
800 2.5e+07
600
2e+07
400
1.5e+07
200
0 1e+07
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Percentage Percentage
(a) With 30 low priority threads (b) With 300 low priority threads
Figure 10: The cumulative distribution of latency for Android at 30 and 300 low priority threads configuration on Core 2 Duo
running RT Linux.
ments. cessing this message. To do this, we take a timestamp in the
For the second configuration we leveraged a stock LEON3 real-time thread prior to sending the message. This times-
embedded board manufactured by Gaisler. The experiments tamp is the data encoded within the message. A second
were run on a GR-XC6S-LX75 LEON development board 5 timestamp is taken within the Looper responsible for pro-
running RTEMS version 4.9.2. The board’s Xilinx Spartan cessing this message after the message has been received and
6 Family FPGA was flashed with a LEON3 configuration the appropriate callback invoked. The difference between
running at 50Mhz. The development board has an 8MB the timestamps is the messages latency. In addition, the
flash PROM and 128MB of PC133 SDRAM. experiments include a number of low priority threads which
In order to evaluate the performance of our approach, we also leverage the same resource though the same Handler
ran our experiments comparing two different configurations object. These threads have a period of 10ms and send 10
of Looper and Handler. The first configuration (Android) messages during each period.
is a direct port of the stock Android Implementation and To measure the predictability of our constructs under a
mirrors the previously proposed system architectures given loaded system, we increase the number of low priority threads.
in Fig. 1c and Fig. 1d. The second configuration (RTDroid) We have executed each experiment for 40 seconds, corre-
is our proposed extension. sponding to 400 releases of the high priority thread, and
have a hard stop at 50 seconds. We measure latency only
5.1 Experiments for the high priority messages. We scale the number of low
To measure the effectiveness of our prototype, we con- priority threads up to the point where the total number of
structed an experiment that leveraged Looper and Handler. messages sent by the low priority threads exceeds the abil-
Since these are two of the core constructs for inter-thread, ity to process those messages within the 40 second execu-
inter-component, and inter-process communication, show- tion window. We have varied the number of low priority
ing the predictability of this construct is crucial. Our mi- threads in increments of 10 from 10-100 and in increments
crobenchmark creates one real-time task with a 100ms pe- of 100 from 100-300 when running the experiments on the
riod that sends a high priority message. To measure the Intel Core 2 Duo running RT Linux. Considering memory
predictability of the system, we calculate the latency of pro- and other limitations of our resource constrained embedded
board, we have run the experiments increasing the low pri-
5
Additional board specification can be found at Gaisler’s ority threads in increments of 5 from 5-30 when running on
website: www.gaisler.com. the LEON3 board. Saturation of the message queue occurs
40 50
38
45
36
Microseconds
Microseconds
34 40
32
35
30
28 30
26
25
24
22 20
0 50 100 150 200 250 300 0 50 100 150 200 250 300
Message sequence number Message sequence number
(a) (b)
Figure 11: The raw latency measurement for RTDroid at 30 and 300 low priority threads configuration on Core 2 Duo running
RT Linux.
1800 4.5e+07
1600
4e+07
1400
Microseconds
Microseconds
3.5e+07
1200
1000 3e+07
800 2.5e+07
600
2e+07
400
1.5e+07
200
0 1e+07
0 50 100 150 200 250 300 0 50 100 150 200 250 300
Message sequence number Message sequence number
Figure 12: The raw latency measurement for Android at 30 and 300 low priority threads configuration on Core 2 Duo running
RT Linux.
at around 15 low priority threads. Besides the measurement thread to the high priority thread and also the increased
of high priority message, we also calculate the overall mes- contention on the scheduling queue with a higher number of
sage throughput to test the broken point for the both of the threads. On the Android configuration, we observe an inter-
Android and RTDroid in the same scenario. esting phenomena. When the number of low priority threads
The data is discussed both in aggregate as well as in- is relatively small with 30 threads in Fig. 10a, 60% of the
trospecting a given run on each hardware platform. We messages have similar latency to that of RTDroid, but there
present three different types of plots: 1) the cumulative is a high spike in latency in the last 10% of messages. Fur-
distribution of the message processing latency for each re- ther, the difference between the best latency and the worst
lease of the high priority thread with differing numbers of latency is almost two orders of magnitude. Once the num-
low priority threads using the same Handler, 2) the raw ber of low priority threads increases to 300 in Fig. 10b, the
latency observed in handling messages from high priority latency distribution becomes almost linear with a very large
threads, and 3) the overall throughput of RTDroid com- difference between the best case and the worst case latency.
pared to Android. Raw data gathered from the experiments This occurs because before the first release of the high prior-
as well as scripts to generate the graphs are available at: ity thread, the queue is already saturated. We provide more
http://RTDroid.cse.buffalo.edu. details of the phenomena in the following subsection.
900 900
Microseconds
Microseconds
850 850
800 800
750 750
700 700
650 650
600 600
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 50 100 150 200 250 300
Percentage Message sequence number
Figure 14: The cumulative distribution and raw measurement of latency for RTDroid at 10 low priority threads configuration
on LEON3 running RTEMS.
a RT JVM and Linux with an RTOS is insufficient to run [13] James Gosling and Greg Bollella. The Real-Time
Android application with real-time guarantees. To address Specification for Java. Addison-Wesley Longman
this shortcoming of the proposed real-time Android models, Publishing Co., Inc., Boston, MA, USA, 2000.
we presented RTDroid, an initial design of a real-time An- [14] D. Hart, J. Stultz, and T. Ts’o. Real-time linux in real
time. IBM Syst. J., 47(2):207–220, April 2008.
droid system focusing on supporting a single real-time app.
[15] Igor Kalkov, Dominik Franke, John F. Schommer, and
We have designed RTDroid to be VM and RTOS agnostic Stefan Kowalewski. A real-time extension to the Android
and with mixed-criticality in mind. We have validated our platform. In Proceedings of the 10th International
design and prototype, showing RTDroid has good observed Workshop on Java Technologies for Real-time and
predictability. Embedded Systems, JTRES ’12, pages 105–114, New York,
Our next step is about to adapt the solutions that we men- NY, USA, 2012. ACM.
tions in Section 4.2 to make the AlarmManager more efficient. [16] MinSeong Kim and Andy Wellings. An efficient and
predictable implementation of asynchronous event handling
Then we will move toward a mixed-criticality execution envi- in the RTSJ. In Proceedings of the 6th international
ronment and expand our IPC and service support to provide workshop on Java technologies for real-time and embedded
predictable, cross partition usage of the Android constructs. systems, JTRES ’08, pages 48–57, New York, NY, USA,
In addition, we plan to explore the use of scoped memory for 2008. ACM.
providing tighter memory guarantees within core Android [17] Cláudio Maia, Luı́s Nogueira, and Luis Miguel Pinho.
constructs. Evaluating Android OS for embedded real-time systems. In
Proceedings of the 6th International Workshop on
Operating Systems Platforms for Embedded Real-Time
8. REFERENCES Applications, Brussels, Belgium, OSPERT ’10, pages
63–70, 2010.
[1] Android and RTOS together: The dynamic duo for today’s [18] Hyeong-Seok Oh, Beom-Jun Kim, Hyung-Kyu Choi, and
medical devices. http://embedded-computing.com/ Soo-Mook Moon. Evaluation of Android Dalvik virtual
articles/android-rtos-duo-todays-medical-devices/. machine. In Proceedings of the 10th International
[2] .dex — Dalvik Executable Format. http: Workshop on Java Technologies for Real-time and
//source.android.com/tech/dalvik/dex-format.html. Embedded Systems, JTRES ’12, pages 115–124, New York,
[3] dex2jar. http://code.google.com/p/dex2jar/. NY, USA, 2012. ACM.
[4] Real-Time Linux Wiki. [19] Filip Pizlo, Lukasz Ziarek, Ethan Blanton, Petr Maj, and
https://rt.wiki.kernel.org/index.php/Main_Page. Jan Vitek. High-level programming of embedded hard
[5] Roving reporter: Medical Device Manufacturers Improve real-time devices. In Proceedings of the 5th European
Their Bedside Manner with Android. conference on Computer systems, EuroSys ’10, pages
http://goo.gl/d2JF3. 69–82, New York, NY, USA, 2010. ACM.
[6] RTEMS. http://www.rtems.org/. [20] Filip Pizlo, Lukasz Ziarek, Petr Maj, Antony L. Hosking,
[7] Strand-1 satellite launches Google Nexus One smartphone Ethan Blanton, and Jan Vitek. Schism:
into orbit. http://www.wired.co.uk/news/archive/ fragmentation-tolerant real-time garbage collection. In
2013-02/25/strand-1-phone-satellite. Proceedings of the 2010 ACM SIGPLAN conference on
[8] What OS Is Best for a Medical Device? Programming language design and implementation, PLDI
http://www.summitdata.com/blog/?p=68. ’10, pages 146–159, New York, NY, USA, 2010. ACM.
[9] Why Android will be the biggest selling medical devices in [21] Yunhe Shi, Kevin Casey, M. Anton Ertl, and David Gregg.
the world by the end of 2012. http://goo.gl/G5UXq. Virtual machine showdown: Stack versus registers. ACM
[10] B. Buzbee B. Cheng. A JIT Compiler for Android’s Dalvik Trans. Archit. Code Optim., 4(4):2:1–2:36, January 2008.
VM. http://www.google.com/events/io/2010/sessions/ [22] Yin Yan, Sree Harsha Konduri, Amit Kulkarni, Varun
jit-compiler-androids-dalvik-vm.html. Anand, Steven Y. Ko, and Lukasz Ziarek. [technical report]
[11] Alexandre Bartel, Jacques Klein, Yves Le Traon, and RTDroid: A Design for Real-Time Android. http:
Martin Monperrus. Dexpler: converting android Dalvik //rtdroid.cse.buffalo.edu/techreport/rtdroid.pdf.
bytecode to Jimple for static analysis with Soot. In
Proceedings of the ACM SIGPLAN International
Workshop on State of the Art in Java Program analysis,
SOAP ’12, pages 27–38, New York, NY, USA, 2012. ACM.
[12] D. Bornstein. Dalvik VM internals.
http://sites.google.com/site/io/dalvik-vm-internals.