본문 바로가기
Mobile Phone/Android

[안드로이드] 안드로이드의 구동(부팅)은 어떻게 이루어 지는가 - 다주택자

by lhs9842 2013. 7. 7.
반응형



안녕하십니까 다주택자입니다. 이번에는 안드로이드 시리즈로 쓰기로 했던 것중에 심화에 1번으로 놓은 구동에 대해서 써보려고 합니다.

부팅 과정을 알아 보기 전에 안드로이드의 구조를 보여드리자면이런식으로 되어 있습니다. 대충 설명을 드리면 일단 기본 베이스는 Linux Kernel(즉 리눅스 커널)이고 그 위에 Libraries[각주:1](이러한 것을 전문적으로 배우신 분들은 아시겠지만 라이브러리라고 하는건데 위에 있는 어플리케이션 들이 참조하는 것들입니다.) 그리고 Android Runtime(말 그대로 안드로이드의 실행할떄 필요한 것입니다. 안에 보면 Core Libraries라는게 있는데 안드로이드의 라이브러리입니다. 앞에서 말한 Libraries는 기본적인것이고요 이것은 안드로이드에 특성화된 그런 라이브러리입니다.)가 있습니다. 그 위에 Application Framework가 있는데요. 영어를 읽고 해석할줄 아시는 분이라면 안에 있는 것을 보고 해석을 해서 아시겠지만 기본적인 시스템 관리 기능들입니다. 마지막으로 제일 위에 Applications 즉 어플리케이션입니다. 

그러면 본격적으로 부팅이 어떻게 이루어 지는지 설명해드리도록 하겠습니다.

방금 구조를 보았다시피 안드로이드는 리눅스 커널을 기반으로 동작합니다. 그렇기 떄문에 1차적으로 리눅스 커널이 로드됩니다. 그리고 나서 리눅스 쓰시는 분들은 아실거 같은데 "/init"를 로드하게 됩니다. 그리고 나서 필요한 폴더들을 만들게 됩니다. (예를 들면 /system이나 /dev 같은거요) 그리고 부팅에 필요한 파일들을 로드하게 됩니다. 그리고 /init에 기본적인 디바이스 설정을 거치게 됩니다. 그리고 나서 ADB Server와 같은 데몬 프로그램이 실행됩니다. 그리고 Zygote라는것을 실행하게 되는데요 이게 뭐하는 거냐면 예가 구동되면 예가 fork();이라는 명령을 이용하여 자기 자신을 복제합니다. 그리고 위에 있는 Applications를 Zygote 위에 구조에서 Android Runtime에 있던 Dalvik Virtual Machine라는 것을 올려 놓고 이것을 이용하여 구동하게 하는 것입니다. 이것을 구동하고 나서는 상당히 복잡한데요 저도 자세히는 모르기 떄문에 자세히는 못알려드리지만 간단히 알려드리자면 먼저 Application Framework을 시작하고 여기에서 Service Manager를 구동합니다. 그러면 또 Service Server라는것이 있습니다. 이것을 Zygote을 통해 구동합니다. 그리고 나서 Application Framework에 있는 여러가지 관리 프로그램과 연계 되어서 서로 구동하게 합니다. 이게 끝나면 제일 위에 있는 Application를 구동하여 부팅을 마치게 됩니다.

이러한 복잡한 과정을 통해 안드로이드가 구동됩니다. 이것으로 이번글을 마치겠습니다.


아래의 손가락버튼을 눌러주시면 블로그에 매우 큰 도움이됩니다. 히히




Copyright © 이동마이의 컴퓨터 하루 All Rights Reserved.


  1. 도서관이 아닙니다. 비슷한 역할을 하긴 하지만 [본문으로]
반응형
크리에이티브 커먼즈 라이선스
lhs9842 필자가 게시한 대부분의 블로그 게시물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다. 게시물에 CCL이 적용되지 아니하다고 적혀있는 경우엔 본 라이선스 적용 대상이 아닙니다.

댓글