an operating system based on a modified Linux 2.6 with a Java programming
interface. Also several drivers and libraries have been modified to allow
Android to run efficient on mobile devices.
tools, e.g. a compiler, debugger and a device emulator as well as its own Java
Virtual machine (Dalvik Virtual Machine - DVM). Android is created by the Open
Handset Alliance which is led by Google.
Android’s Java virtual machine. It allows Android to run the byte-code
generated from Java-based apps and Android’s own system components and provides
both with the required hooks and environment to interface with the rest of the
system, including native libraries and the rest of the native user-space.
on Linux. Linux provides as well as:
Bionic-: Bionic, a super-fast and small license-friendly
libc library optimized for embedded use. The Bionic libc is a derivation of the BSD's standard C
library code that was originally developed by Google for their Android 
operating system based on the Linux kernel
Surface Manager-: Surface Manager for composing window
manager with off-screen buffering.
2D and 3D graphics
hardware support or
Media codecs offer support for major audio/video
WebKit library for fast HTML rendering.
What runs before
During startup of the Android system the Linux kernel first
calls the process "init". init reads the files "/init.rc"
and "init.device.rc". "init.device.rc" is device specific,
on the virtual device this file is called "init.goldfish.rc".
init.rc starts the process "Zygote" via the program
"/system/bin/app_process". Zygote loads the core Java classes and
performs initial processing of them. These classes can be reused by Android
application and therefore this step makes them faster to start. Once the
initial work of Zygote is done, the process listens to a socket and waits for
A special driver called Binder allow an efficient
interprocess communications (IPC) in which allow references to objects are
passed between processes. The real objects are stored in Shared Memory. This
way the communication between the processes is optimized as less data must be
Android does not provide a swap space like other Linux
systems therefore the amound of available memory is limited to the memory on
Androids uses a special C library "Bionic" instead
of the standard Glibc. This library is not compatible with Glibs but requires
less memory. Bionic contains a special thread implementation which optimizes
the memory consumption of each thread and reduces the start time of new
As of Android 2.3 the Android system uses Ext4, the standard
file system for Linux. Before that it used the YAFFS file system. Some vendors
replaces the standard file system by their own one.