아키텍처



리눅스 커널(운영체제의 핵심)

안드로이드가 리눅스를 채용한 주된 이유는 공개 운영체제라는 이유도 있지만 디바이스 드라이버의 지원이 광범위하기 때문

- 백그라운드 스레드, 메모리 관리, 보안, 디바이스 드라이버 등의 저수준 관리 기능을 담당

- 터치 스크린, 카메라, 무선 인터넷, 메모리, 키패드 등 대부분의 모바일 장비에 사용되는 부품의 드라이가 제공


하드웨어 추상레이어(HAL)

추상레이어는 주로 커널을 통해 안드로이드가 제공하는 드라이버를 제어하는 목적으로 사용.

- 표준화된 API를 제공하고 있을 뿐만 아니라 사용자 정의 컴포넌트를 추가할 수 있다.


라이브러리

장비의 전반적인 속도를 결정하는 중요한 요소. 라이브러리 대부분은 C언어로 작성되어 성능이 뛰어나고 충분한 테스트를 거쳐 신뢰성이 보장

- BSD 파생 libc라이브러리

- 2D 그래픽을 위한 서피스 관리자(Suface Manager) 및 SGL

- 3D 그래픽을 위한 OpenGL

- 백터 폰트 출력을 위한 FreeType

- 데이터베이스 지원을 위한 SQLite

- 인터넷 브라우징을 위한 SSL과 크롬, 사파리에 채용된 WebKit


안드로이드 런타임

달빅 가상 머신과 자바 코어 라이브러리로 구성. 자바 가상 머신이 아닌 모바일 환경에 최적화된 달빅(Dalvik) 가상 머신을 사용. 각 프로세스별로 별도의 달빅 가상 머신이 할당되므로 안정성이 높고 메모리 사용량을 줄여 임베디드 환경에 효율적으로 동작하도록 설계. 달빅은 자바 클레스로 바로 실행할 수 없으며 클래스 파일을 dex포맷으로 변환해야만 실행 가능


프레임워크(안드로이드 API)

응용프로그램은 하위의 커널이나 시스템 라이브러리를 직접적으로 호출할 수 없으면 API를 통해서 기능을 요쳥해야 한다. API는 하드웨어 엑세스를 추상화하여 UI 제작에 필요한 위젯을 정의하고 시스템 라이브러리와 통신.

- Activity Manager : 어플리케이션의 생명주기를 관장

- Window Manager : 윈도우의 모양이나 크기 등을 관리

- Content Manager : 어플리케이션이 다른 어플리케이션의 정보나 메시지를 공유하고 작업등을 요청

- View System : 리스트, 텍스트 박스, 버튼 및 다이얼로그 등 제작을 용이하게 하는 UI세트를 제공

- Notification Manager : 콜수신, 메시지수신, 배터리 부족, 시스템 상태 변화, 네트워크 시그널 등 이벤트 발생에 따라 상태바나 토스트와 같은 알람을 출력

- Package Manager : 패키지 설치, 제거 등을 지원하는 관리자

- Telephony Manager : 음성 및 영상통화, MMS/SMS, SIM/USIM관리

- Resource Manager : 애플리케이션에게 파일, 그래픽 등의 자원 할당하고 해제한다.

- Location Manager : 위치정보를 제공하는 기능을 담당한다.


Application (개발자가 만들어야 할 대상)

인터넷 브라우저, 바탕화면, 주소록 등 플랫폼과 함께 설치되는 애플릿과 게임, 유틸리티 등 기본적으로 제공되는 어플리케이션을 말한다.

----------------------------------------------------------------------------------------------------

BSD : Berkley Software Distribution 1997년 미국 캘리포니아 대학교 버클리에서 개발한 유닉스 계열의 컴퓨터 운영 체제.

----------------------------------------------------------------------------------------------------


연습문제 


+ Recent posts