이번 포스팅에서는 안드로이드의 시스템 구조에 대하여 알아 보겠습니다.
1. 안드로이드의 구조는 크게 네 분류으로 나눌 수 있습니다. 리눅스 커널과 라이브러리와 버추얼 머신, 어플리케이션 프레임워크, 어플리케이션 이렇게 네 분류로 나눌 수 있습니다. 각 부분에 대해 알바보도록 하겠습니다.
2. 리눅스 커널
- 안드로이드는 리눅스 커널 위에 만들어 졌지만 안드로이드가 리눅스는 아님
- 핵심적인 시스템 서비스들을 제공하며, 프로세스, 메모리, 전원 관리, 네트워크, 드라이버, 보안 들의 내용을 포함
- 표준 리눅스 도구를 모두 제공하지 않음
- 안드로이드 커널도 공개되어 있음
3. 라이브러리와 버추얼 머신
- C/C++로 구성된 라이브러리로 어플리케이션 프레임워크를 통해 사용할 수 있도록 구성됨
- 코어 라이브러리는 자바 라이브러리의 대부분 기능을 제공
- 안드로이드 어플리케이션을 위한 실행 환경을 제공하는 Drlvik VM의 실행 파일은 최소한의 메모리에 최적화된 Dex(Dalvik EXecute) 포멧을 사용하며 안드로이드 어플리케이션은 독립적 프로세스를 할당 받음
- 버추얼 머신에서 각각의 안드로이드 어플리케이션은 하나의 프로세스로 실행되며 Dalvik VM의 인스턴스를 받음
- 버추얼 머신은 디바이스가 여러 개의 VM을 효율적으로 실행할 수 있도록 구성되어 있음
- 버추얼 머신은 Dalvik에서 안드로이드 5.0부터 AOT 기술을 구현한 ART로 실행
- 버추얼 머신이 실행 포멧인 dex 포멧은 최소한의 메모리만을 사용할 수 있도록 최적화되어 있고 컴파일 시에 생성됨
4. 어플리케이션 프레임워크
- 안드로이드에서 제공하는 어플리케이션도 어플리케이션 프레임워크의 API에 기반하는 경우가 많음
- 간단한 재사용 컴포넌트, 어떤 어플리케이션과도 호환 가능한 호환성을 제공
- Activity Manager는 어플리케이션의 라이프 사이클을 제어함
- Content Provider는 어플리케이션 간에 데이터를 공유할 수 있도록 함
- Resource Manager는 코드 이외의 부분인 리소스를 관리함
- Location Manager는 자신의 위치 파악에 필요한 기능을 제공함
- Notification Manager는 알림 기능를 사용자에게 방해가 되지 않도록 제공함
5. 어플리케이션
- 모든 어플리케이션은 Java로 작성되며 어플리케이션 프레임워크의 API를 사용할 수 있음
- 안드로이드의 핵심 어플리케이션들은 이메일 클라이언트, SMS 프로그램, Calendar, Maps, 웹브라우저, 연락처들을 포함함
'Development > Android' 카테고리의 다른 글
[Android] Marshmello(Android OS 6.0) 특징 (0) | 2016.04.22 |
---|---|
[Android] Lollipop (Android OS 5.0) 특징 (0) | 2016.04.22 |
[Android] GridLayout (0) | 2016.04.18 |
[Android] dp를 px값으로 변환 (0) | 2016.04.14 |
[Android] View의 터치영역 넓히기 (0) | 2016.03.25 |