Android was designed from the ground up as an operating system (OS) for mobile devices. Its built-in application and memory-management systems were engineered with battery life as one of the most critical concerns. The Android OS does not work like a desktop operating system. On a desktop OS, like Windows, Mac OS X, or Ubuntu Linux, the user is responsible for closing programs in order to keep a reasonable amount of memory available. On Android, this is not the case. The OS itself automatically removes programs from memory as memory is needed. The OS may also preload applications into memory which it thinks might soon be needed.
Under the Hood of Google Android
The easiest way I can think of to visualize Android's structure is by imagining a house with five rooms The house represents Android in general. The rooms inside, however, represent the five key features in Android's structure: * Applications
* The Application Framework
* Android Runtime
* Linux Kernel.
Now, imagine that each of these rooms hold a certain number of people. Each person represents an element of that room. Different rooms hold different amounts of people. Applications
This first room is a doozy. It's "people" represent all the applications that you have in Android. Games, SMS a calendar, maps, a browser, and your contacts. All applications are written in Java ,so you can add or take away as many of these as you like.
The Application Framework
As a developer, you'll have full acces to the APIs used by the core apps. Android is designed so that any application can publish its capabilities. In turn, any other application can use those capabilities, as well. It has some security constraints, as is expected, but still. That's pretty awesome. Along with all that, you get a Content Provider (which allows apps to share information), a Resource Manager (to help you with graphics, layout files, etc), a Notification Manager (which gives you those annoying status beeps and such), and an Acticity Manager (which manages the life cycle of your apps). All in all, when it comes to creating applications quickly and easily, Android has you covered. We'll cover how to write an application in another article. So, you could say that the 'people' in this room are the managers and providers and etc. Believe me, there are a LOT. Libraries
Android has a set of core libraries off of which the applications run. As always, developers can directly access these. Some of the core libraries include FreeType, SQLite, LibWebCore, and SGL. Android Runtime
You could say that the 'Android runtime' room is pretty exclusive-- it only has two people: the Dalvik Virtual Machine and the core libraries (am I getting on your nerves with this 'people' thing yet?). In Google Android, there's a tool called 'DX'. What this does is it executes files in '.dex' format, which are specially for the Dalvik Virtual Machine. This format is also created for minimal memory footprints, which makes it ideal for cell phones. The Dalvik Virtual Machine is written so it can run multiple prcesses quickly and smoothly. It relies on the Linux Kernel to do its magic. We'll talk about that right after this. Linux Kernel
Lastly, we have the Linux Kernel. This little room contains the Keypad, WiFi, Camera, and etc. drivers. The Linux Kernel holds all of Android's internal structure together. It uses Linux 2.6, and also acts like an abstraction layer between the hardware and the software.
6 FILE SYSTEM
6.1 Storage media: NAND
Android uses the YAFFS flash file system, the first NAND optimized Linux flash file system. For mobile devices, hard disks are too large in size, too fragile and consume too much power to be useful. In contrast, flash memory provides fast read access time and better kinetic shock resistance than hard disks. There are fundamentally two different types of flash memory based on their construction technique: NOR and NAND....