---
title: "Android Internals"  
description: "In this article I am explaining about Android Internals"  
author: "Manoj Pandey"  
published: 2015-03-18  
updated: 2019-09-07  
canonical: https://www.mindstick.com/articles/1672/android-internals  
category: "android"  
tags: ["android"]  
reading_time: 3 minutes  

---

# Android Internals

Android is an [operating system](https://answers.mindstick.com/qa/114592/which-mobile-operating-system-is-better-for-privacy-ios-or-android) based on a modified Linux 2.6 with a Java [programming](https://yourviews.mindstick.com/view/88478/vibe-coding-the-rise-of-ai-assisted-programming) interface. Also several drivers and libraries have been modified to allow Android to run efficient on [mobile devices](https://yourviews.mindstick.com/view/85524/influence-of-mobile-devices-on-travel-and-tourism-experiences).\

It provides tools, e.g. a compiler, debugger and a device emulator [as well as](https://www.mindstick.com/forum/156547/difference-between-max-width-and-width-as-well-as-max-height-and-height) its own Java [Virtual machine](https://www.mindstick.com/forum/157900/what-is-a-virtual-machine-and-how-does-it-work) ([Dalvik Virtual](https://answers.mindstick.com/qa/32821/what-is-dalvik-virtual-machine) Machine - DVM). Android is created by the Open [Handset Alliance](https://answers.mindstick.com/qa/32823/what-is-the-open-handset-alliance) which is led by Google.

Dalvik is 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](https://answers.mindstick.com/qa/38115/according-to-the-report-released-by-the-ministry-of-environment-forests-and-climate-change-on-august-12-what-is-the-total-estimated-number-of-elephants-in-india) to interface with the rest of the system, including native libraries and the rest of the native user-space.

##### Android runs on Linux. Linux provides as well as:

· Hardware [abstraction](https://www.mindstick.com/articles/944/abstraction-in-c-sharp) layer

· Memory management

· Process management

· [Networking](https://www.mindstick.com/startup/26/zerotier-secure-peer-to-peer-networking-made-simple)

![Android Internals](https://www.mindstick.com/mindstickarticle/fcb83ee8-ff4a-4a30-a1ed-1f22276238da/images/f1d4c4d7-9ef5-4fb7-a924-d2fda1abb38c.png)**\**

##### Android Native Libraries

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 [2] 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 software simulation.

Media codecs offer support for major audio/video codecs.

SQLite database

WebKit library for fast HTML rendering.

##### What runs before android code-:

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 requests.

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 transferred.

Android does not provide a swap space like other Linux systems therefore the amound of available memory is limited to the memory on the device.

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 threads.

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.

---

Original Source: https://www.mindstick.com/articles/1672/android-internals

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
