From: http://blog.csdn.net/maxleng/article/details/5490713
Basic Space Division
Google gave us a system architecture diagram, in which we can see the structure of the android framework.
You can see: Android applications, application framework, Dalvik virtual machine, and Linux. To generalize Android, we can divide the system into two parts:
However, for the convenience of our research, we should first look at the most essential three layers: Android, Dalvik virtual machine in the middle, and Linux.
Although the last two layers are included in Android, I still separated the virtual machines this time to facilitate understanding or start from pragmatism, because I am studying Android mobile phone systems, we are not doing too much research on virtual machines.
E: Pre; "> we can see from the above that the system is statically divided into three layers. However, this is not the logic of dynamic operation. Therefore, Space Division is an interesting concept. From the operating system perspective, Android is a collection of Linux applications. From the Linux perspective, we can see the Space Division: process space and kernel space. Android applications correspond to processes in Linux.
Andoid contains a Java virtual machine that runs on Linux. Android is built on JVM. From the android dynamic running logic, we need to divide Android into android space and non-android space. In the andoid system, we are faced with the concept space of andoid, instead of the Linux process. In the concept space of andoid, we have no concept of lliux process, but service, proxy, activity, provider, etc.
As for Virtual Machine JVM, we only need to know that the JVM is Dalvik VM (Virtual Machine). This is a Java virtual machine designed for embedded devices, it is a Java Virtual Machine with its own code-byte and format that can run efficiently on embedded devices.
For further research, we still need to involve the JNI native section. In this classification, I divide JVM into JVM space and C ++ space.
Android app developers work in the Concept Space of features outside Android, which does not have a sense of Linux. The concepts of features outside Android include activity, provider, interface, events, provider, service, etc. As for the division of JVM space and C ++ space, we proposed to study the core description of Android. During Android system development, we often need to modify it to the native part of JNI. I will elaborate on this part in more detail later.