본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android/안드로이드] 안드로이드 부팅과 커널 구조에 대한 기초.

by 돼지왕 왕돼지 2012. 2. 7.
반응형


안녕하세요 돼지왕왕돼지입니다.

오늘은 안드로이드의 부팅커널 폴더 구조에 대한 기초자료들을 함께 보고자 합니다.

안드로이드 부팅과 커널 폴더 구조를 왜 알아야 하는가?


프레임워크의 구조에 익숙하고 그것의 동작 원리를 제대로 파악하면, 어떤 개발 시나리오라도 주눅들지 않을 수 있습니다.
게다가 안드로이드 프레임워크를 잘 알면 최적화된 S/W 설계를 하는 데 도움도 됩니다.
물론 여기서 다루는 간단한 소개정도로는 의도가 정확히 이루어지지 않지만, 출발점이 되겠습니다.



안드로이드 소스 폴더 구조


kernel: Linux 2.6

bionic : 표준 C lib
bootloader : 참고용 부트 로더
build : 빌드 시스템
cts : 호환성 테스트 관련 소스
dalvic : 가상 머신
external : 오픈 소스들
frameworks : 프레임워크
hardware : HAL( Hardware Abstraction Layer ) 소스 
packages : 기본 어플, 컨텐트 프로바이더 등
system : init 프로세스, 블루투스 도구 모음 등

 
여기서 우리가 집중해서 봐야 할 녀석들은, 분홍색으로 표시된 녀석인데요.
App. 개발입장에서는 특히 frameworks 와 packages 를 집중해서 봐야 하겠습니다. 
 
 

 

안드로이드의 부팅 순서

 

이미지 출처 : http://greenweblog.tistory.com/82






 

1. 리눅스 커널

 
 
 커널 초기화를 마친 후 init 프로세스 호출




2. init

 
 
 안드로이드 init 프로세스는 각종 디바이스를 초기화, 프레임워크 동작에 필요한 각종 데몬, 컨텍스트 매니저 ( Context Manager ), 미디어 서버( Media Server ), Zygote 등을 실행한다.

 

init 프로세스가 실행하는 데몬 프로세스

 - USB 데몬 ( usbd ) : USB 연결 관리

 - 안드로이드 디버그 브릿지 데몬 ( adbd ) : ADB 연결 관리

 - 디버거 데몬 ( debuggerd) : 디버그 시스템 시작

 - 무선 인터페이스 레이어 데몬 ( rild ) : 무선 통신 연결 관리

 
 

 

3. 컨텍스트 매니저 ( Context Manager )


 시스템 서비스를 관리하는 중요한 프로세스.

 카메라, 오디오, 비디오 처리 등 각종 app 제작에 필요한 중요 API 제공.

 안드로이드 내에서 동작하는 각종 시스템 서비스에 대한 정보는 컨텍스트 매니저로부터 얻을 수 있다.

 App. 이나 Framework에서 해당 서비스를 사용하려면, service를 얻고, binder를 이용해서 IPC 통해 통신.

 이를 위해 안드로이드의 모든 시스템 서비스는 부팅 시 자신의 핸들 정보를 컨텍스트 매니저에 등록해야 함.

 ( 이 등록 과정도 IPC 이용 )

 




4. 미디어 서버 ( media Server )


 Audio Flinger ( 오디오 출력 담당 ) 과 Camera 서비스와 같이 C/C++ 기반으로 작성돼 있는

 네이티브 시스템 서비스를 실행하는 역할.

 


5. Zygote

 

 안드로이드 어플리케이션 로딩 시간을 단축하기 위한 프로세스로, 모든 자바 기반 안드로이드 앱

 Zygote를 통해 포크(fork)된 프로세스 상에서 동작.

 

 

6. 시스템 서버 ( System Server )


 Zygote에서 최초로 포크되어 실행되는 안드로이드 App. 이다.

 시스템 서버는 앱 생명 주기를 제어하는 액티비티 매니저 서비스 ( Activity Manager Service)

 단말기의 위치 정보를 제공하는 로케이션 매니저 서비스 ( Location Manager Service ) 와 같은 자바 시스템 서비스를 실행

 자바 시스템 서비스도 컨텍스트 매니저에 등록돼 있어야 한다.

 


< 참고 사항 >

 

 

이후에 자바 시스템 서비스가 모두 로딩되고 나면 액티비티 매니저 서비스 ( Activity Manager Service ) 가

HOME 어플을 실행하면서 계속 부팅 과정 진행한다.


이상입니다.  더 자세한 사항은 추후 포스팅 혹은 스스로 공부하도록 합시다용~

 

로그인 없이 추천 가능합니다. 손가락 꾸욱~


반응형

댓글