본문 바로가기
Android 개발/Android 기본개념

Android 운영체제의 기본구조 및 Architecture

by Developer88 2017. 3. 8.
반응형

오늘은 안드로이드 운영체제의 기본구조에 대해서 정리해 보겠습니다.

안드로이드를 공부하게 될때, 보통 초반에 스윽 보고 지나가게 되는 부분인데요.

하나하나 짚어가면서 보겠습니다.



1. 안드로이드 기본구조


안드로이드의 기본구조에 대해서는 아래표를 보면 이해하기가 쉬운데요.

크게 5개의 큰 레이어로 분리할 수 있습니다.


아래의 표와 같이, 가장 하단부터, 

Linux Kernel, Libraries, Android Runtime, Application FrameWork, Applications 으로 구성되어 있습니다.


(출처 = Smieh - Anatomy Physiology of an Android)


1-1. Linux Kernel 레이어


안드로이드는 가장 하단에 Linux Kernel이 있기 때문에, 

리눅스 기반을 가지고 있다고 할 수 있는데요.


Linux의 모든 요소를 가져온 것은 아니구요.

Core부분과 휴대폰사용에 필요한 부분만 추가해서 사용하는 Linux Kernel을 가지고 있습니다.

Power Management같은 경우가 특히 스마트폰을 위해 추가된 부분이라고 할 수 있겠네요.


Android와 리눅스를 간단히 비교해보면 다음 이미지와 같은 데요.

중요한 것은, 리눅스에 Dalvik가상머신을 올리고, 

그위에 Android에 필요한 API들을 추가한 FrameWork을 올렸다는 점이네요.




1-2. Libraries 레이어


여기에는 주요 라이브러리들이 위치하는데요.
모바일 데이터 베이스로 유명한 SQLite는 아실테구요, 
Media Player에 관련한 MediaFrameWork나 화면과 관련된 Surface Manager등이 위치하고 있습니다.


1-3. Android Runtime 레이어

이곳에 드디어, 구글의 자바 가상머신인 Dalvik이 위치하고 있는데요.
Dalvik의 실행 파일은 최소한의 메모리에 최적화된 DEX(Dalvik Execute)포맷을 사용합니다.
이 DEX파일을 APK로 만들어서 배포가 되어지는 것이구요.

Dalvik가상머신 이외에도, Core Library들이 이 Layer에 위치하고 있는데요.
Dalvic을 위한 라이브러리나 자바코드와 관련된 라이브러리, 
그리고, 이름과 같이 중요한, Android Core Library가 위치하고 있습니다.

android.app, android.database, android.graphics, android.hardware, android.opengl, android.util, android.view 등등 
이름만으로도 중요성을 알 수 있네요.

한가지, 중요한 점은, 이 라이브러리들이 대부분 C++로 되어 있다는 것입니다.
저희가 개발할 때, Java를 쓰지만, 밑에 깔려있는 핵심 Core Library들은,
C++로 프로그래밍 된 것을, Java 클래스로 Wrapping한 라이브러리인 것이지요. 
(참고로 재미있는 점은, ios도 Core요소는 C++로 되어있다는 것입니다. )


1-4. Application Framework 레이어

Application Framework는  안드로이드 SDK에 의해서 제공되는 API라이브러리나 emulator, 디버깅툴 같은 툴들 인데요.
여기에는 데이터를 공유할 때 사용하는 Content Providers부터 푸쉬메시지와 관련된 Notification Manager 와
위치와 관련된 Location Manager까지 안드로이드 프로그래밍을 하면서 사용되는 라이브러리들도 포함되어 있습니다.

프로그래밍하면서 사용하는 Java코드로 된 많은 라이브러리들이 여기에 있으므로,
개발자인 저희들과 직접 연관되어 있는 부분은 바로 이 Layer라고 할 수 있겠습니다.


1-5. Applications 레이어

여기가 바로 사용자들과 만나는 최상위 레이어라고 할 수 있겠네요.
안드로이드에서 제작되어 번들로 실리는 앱이나, 사용자가 설치한 앱들을 가르킵니다.


728x90

댓글