-->

Monday, September 8, 2014

Android Architecture and Storage Partition | Android Architecture and Storage Partition Optimization

Android I/O Stack
Google Android is an open-source Linux-based operating system designed for mobile devices. Figure 1 illustrates the architecture of Android. Android applications are written in Java and packaged as .apk (Android Application Package) files.


Œ
Ž









’Ž
Fig-1: Android Architecture and Storage Partition barrier used extensively by various system components and applications; some of the most widely used libraries are SQLite, libc, and the media libraries. The Linux kernel provides core services, such as memory manage ment, process management, security, networking, and a driver model. Android uses the Dalvik virtual machine
(VM) with just-in-time compilation to run .dex (Dalvik Executable) files, and an application runs on top of the Dalvik VM. We define the Android I/O stack as a set of software and hardware layers used by applications for persistent data management. The I/O stack of the Android plat-fo-rm consists of the DBMS, filesystem, block device driver, and NAND flash based storage device. SQLite and EXT4 are the default DBMS and filesystem, respec-tively. The Android platform uses interrupt driven I/O
with a CFQ I/O scheduling scheme. The eMMC and SD card are used as internal and external storage devices, re-spectively. Most Android applications use SQLite to manage data in a persistent manner. SQLite interacts with the under-lying filesystems through the usual system calls, such as open(), unlink(), write(), and fsync(). SQLite uses journaling for recovery. It records rollback information at .db-journal file. The database file and journal file are frequently synchronized with the storage device using fsync(). Since the release of Android 4.0.4 (Ice Cream Sand-wich), Android only uses EXT4 to manage its internal storage, eMMC.

No comments:

Post a Comment