SMART_Phone/Android
안드로이드 플랫폼 개념 정리
Request
2011. 1. 5. 01:48
안드로이드 플랫폼은 크게 네 부분의 레이어(Layer)로 나뉜다.
1)커널 부분
- 안드로이드는 리눅스 커널 2.6을 채택항 보안, 메모리 관리, 프로세스 관리, 네트워크 스택, 드라이버 등 지원
2)하드웨어 추상레이어
- 노란색 선으로 표시된 부분은 HAL layer로 불리는 Hardware Abstraction Layer임.
3)라이브러리
-애플리케이션 플레임워크를 통해 응용 프로그램에 기능을 제공하는 구조
4) 애플리케이션 플레임워크
-안드로이드 핵심은 자바 실행환경을 지원하는 안드로이드 런타임으로 달빅 가상머신을 기본으로 함.
(1)달빅가상머신 특징 : Device에서 복수의 가상머신으로 자바 인스턴스를 동작 시킬수 있도록 개발 되어 있으며, 복수의 응용 프로그램을 동작 시키면 복수의 버추얼 인스턴스들이 생성되는 형식으로 안드로이드 버전 업그레이디 때마다 변화되는 모듈임.
(2)플레임워크와 라이브러리 사이에는 자바와 C 사이의 서로 다른 호출 규약 등을 맵핑하는 JNI(Java Native Interface)라는 것이 존재하며, 이를 위한 안드로이드 가이드(NDK)가 있고 샘플도 공개 되어 있다.
사용이유는
속도문제, 자바에서 하드웨어 제어, 자바에서 지원되지 않는 특정 운영체제 서비스와 기능 구현 목적
(3)안드로이드 커널
ⓐ바인더(Binder)
- 바인더 서비스는 개체지향처럼 컴포넌트 중심으로 양쪽간 서로 다른 애플리케이션이나 서비스간 메세지를 주고받는 구조로 바뀜.
(무한정 기다리는 문제 처리)
단점으로는 각각 서비스마다 바인더가 있어야 하므로 메모리 낭비 있음.
쓰는 이유는 각각 별개로 동작하기 때문에 주고 받는 통신에 대한 보안과 안정성 그리고 응답속도를 높일수 있음.
ⓑ로우 메모리 킬러(Low Memory Killer)
-리눅스에서는 프로세스마다 우선순의를 주고 우선순위가 낮은 프로세스들을 없앴으나,
안드로이드는 바이더라는 기능 덕에 그룹마다 우선순위를 주기 되어, 메모리 부족시 우선순위가 낮은 그룹부터 제거 함.