2010. 1. 15. 10:39

Android Run-Time 분석





안드로이드는 구글의 모바일 운영체제로 알려져 있다. 실제 안드로이드는 Linux Kernel 위에 돌아가는 RunTime과 그에 따른 라이브러리라고 보아야 한다. 물론 모바일 플랫폼에 맞게 리눅스 커널이 패치되기는 하지만 운영체제의 기본적은 core는 Linux라고 봐야 할 것이다.
위 그림중 초록색 부분이 C/C++ 구성 부분이고 파란색 부분이 Java로 구성된 부분이다. Android Runtime은 Dalvik 이라는 VM과 Core libraries로 구성되어 있다. Linux Kernel은 ashmem(android shared memory)이라고 불리는 Shared Memeroy 부분하고 Binder Driver 부분이 모바일 플랫폼에 맞게 만들어져 있다. Binder는 프로세스간 통신하는 Overhead를 줄이기 위해서 만들어져 있고 Power Management는 기존의 리눅스에서 사용되는 모듈을 사용하지 않고 모바일 환경에 맞도록 개발된 모듈을 가지고 있다.
Android 라이브러리는 GNU 기반의 소스를 사용하지 않는다. 이는 상용화에 제약이 없도록 GPL 로 부터 해방되기 위함이다. 이에 libC도 glibc를 사용하지 않고 있다.
Android의 개발은 Eclipse의 ADT Plug-in을 통해서 Java로 컴파일 되고 class와 resource가 Dx 컨버터를 통해서 Android App(.apk)로 만들어지며 이 apk가 Dalvik VM위에서 동작하게 된다.
안드로이드 개발 환경은 eclipse와 제공되는 emulator를 가지고 가능하며 emulator는 실제 Chip위에 올라가는 것 같이 만들어져 있다. 안드로이드는 어플리케이션을 빠르게 구동하기 위해서 zygote라는 미리 구동되어 있는 프로세스를 가지고 있으며 이 프로세스는 특정 어플리케이션과 Binding되어 동작하기 전의 상태로 즉 중립적인 상태를 유지한다.
Dalvik Virtual Machine은 Register기반의 가상 머신으로 모바일 환경에 맞게 구성된 VM이고 더 효율적인 인터피리터이다.
워낙 내용이 많아서 추상적으로 요약을 했다. 자세한 부분은 http://www.kandroid.org 를 보아도 될듯.