반응형
SMALL

이번엔 안드로이드 OS 부팅과정에 대해서 포스팅해보려고한다. 안드로이드 운영체제만큼 중요하다고 생각하는 것이 안드로이드 OS 부팅과정이다. 전체적인 그림은 다음과 같다.




<출저: Google>



1. 커널(Kernel) 부팅


- 전원이 인가되고 부트로더를 통해 리눅스 기반 커널이 제일 먼저 시작된다.

- 커널이 부팅되면 일반적인 리눅스부팅과정처럼 커널 초기화를 수행한다.

- 커널 초기화를 수행하고나서 init 프로세서를 호출한다.


2. init 프로세서 실행


- init 프로세스는 각종 디바이스를 초기화해주고 안드로이드 프레임워크 동작에 필요한 각종 데몬, 컨택스트 매니져 등을 실행하는 역할을 해준다.


** init프로세서가 실행하는 주요 데몬프로세스**


- USB 데몬: usbd

- 안드로이드 디버그 브릿지 데몬: adbd

- 디버그데몬: debuggerd

- 무선 인터페이스 레이어 데몬: rild


3. 컨텍스트 매니저


- 안드로이드의 시스템 서비스를 관리하는 중요한 프로세서다. 

- 카메라, 오디오, 비디오 처리에서부터 애플리케이션 제작에 필요한 API를 제공한다.


4. 미디어 서버

- 오디오출력, 카메라 서비스와 같이 C, C+기반으로 작성되어있는 네이티브 시스템 서비스를 실행하는 역할을한다.

- 미디어 서버가 실행되야 소리가 실행될 수 있다.


5. 자이고트(Zygote), 달빅(Dalvik)

- 자이고트는 안드로이드 애플리케이션의 로딩시간을 단축시키기 위한 프로세스다. 모든 자바 기반 안드로이드 애플리케이션은 자이고트를 통해 포크된 프로세스 상에서 동작되게 된다.

- 달빅 가상머신은 애플리케이션 샌드박스를 만들기 위해 구글이 선택한 기술이며, 모든 자바기반 안드로이드 애플리케이션을 처리해주게 된다.


6. 시스템서버(System Server)

- 시스템서버는 자이고트에서 최초로 포크되어 실행되는 안드로이드 애플리케이션 프로세서이다.

- 로케이션매니져와 같은 자바서비스를 실행한다.(위치추적)

- 추가로 하나 더 설명하자면 바인더 IPC를 통해 자바시스템서비스를 C언어 기반의 서비스매니저에 등록하기위해 자바와 C언어 간의 인터페이스 역할을 하는 JNI를 추가로 이용한다.





이상으로 안드로이드 부팅과정에 대해 포스팅해보았다. 적어도 안드로이드 구성이 어떻게 되있고 부팅과정정도는 알고 써야 진정한 안드로이드 프로그래머가 될 수 있지 않을까 생각한다.

반응형
LIST
블로그 이미지

만년필석사

,