1. Init.rc

Zygote 대한 내용을 분석하기 전에 먼저 Zygote 실행시키는 init.rc 관한 내용을 보면

 

init.rc daemon, Zygote, Runtime 실행하며 여기서 daemon init.rc 소스 코드에 정의된 daemon으로 부팅 시점에 바로 실행되는 daemon들이다. 실행하고 싶은 daemon 등록할 때는 당연히 ini.rc 파일의 수정이 필요하고 SELinux 정책에 영향을 받게 된다.

그리고 Runtime 생성하는데 Runtime ART, Dalvik 의미하지 않는다 (얘네는 Zytgote아래에 생성)

여기서 생성되는 것은 Runtime 통해 Service Manager 생성한다.

Service Manager Context BInder 기능을 제공하는 Context 관리하는 것으로 Service Manager실행을 통해 Context BInder과정이 가능하다.

 

2. Zygote

Dalvik, ART VM 로드해서 빌드환경을 구축한다.

그리고 System Server 자식 프로세스로 생성한다. System Server System동작을 관할한다. APK에서도 system 동작 수행 결국 System Server process 해당 일을 전달하고 처리는 system server 프로세스가 처리한다. 여기서 system server 처리하는 동작에 포함되는 내용은 아래와 같다.

 

1) System Server

Entropy, Power, Activity Manager, Telephony Registry, Package Manager, Battery, Light, Vibrator, Alaram, Window, Bluetooth 등을 처리한다.

물론 위의 서비스들은 모두 Context bind 과정을 통해 동작을 제어할 있기 때문에 실제적으로 Service Manager와도 연결이 되어있다.

 

실제적으로 Service Manager와 System Server가 모두 필요한 상황이며 실제 소스코드로 해당 기능을 제어할 때도 아래와 같이

val powerManager = context.getSystemService(Context.POWER_SERVICE)

context 이용해서 system service bind 제어할 있다.

 

2) APK 동작

위와 같이 이루어진 안드로이드의 내부에서 화면역시 하나의 Activity 같다.

여기서 Activity 실행한다는 것은 빌드 실행을 한다는 것이고 Dalvik ART 이용해서 실행을 하는 것이다.

 

홈화면이라는 하나의 Activity 띄우기위해 device내에서는 실제로 Zygote fork 통해 Dalvick VM 하나더 생성하고 해당 VM위에서 Home 화면이라는 Activity 빌드되고 실행 되는 것이다.

 

마찬가지로 여기서 우리가 임의로 만든 APK등이 동작한다면.?

마찬가지도 이러한 APK 하나하나가 모두 하나의 MainActivity 가지며 화면 하나하나가 Activity이다.

때문에 Zygote fork 통해서 하나의 VM 만들게 되고 해당 VM 아래에서 APK 동작하게 된다.

 

결론적으로 APK 실행한다는 것은 APK 실행 (app 아이콘 클릭) 명령이 떨어 졌을 해당 Context System Server에서 Activity Manager 통해서 생성하고 또한 해당 Activity 실행 있는 VM 환경을 Zygote 통해 fork 해당 VM 활용하여 Apk 실행할 activity 구성하여 실행하는 것이다.

 

부팅이 시작되면 init.rc 통해 Zygote 과정과 Service Manager 구축(BInd 과정 구축 VM 생성하여 System Server, Home Activity 생성) init.rc 구현된 daemon들의 실행이 진행된다. 일련의 작업들이 마무리되면 우리는 정상적인 home화면(부팅완료된 모습) 있다.

-> 물론 여기서 일종의 daemon home activity 구성 실행될 있다.(처음 부팅 home directory 만들어진 직후 폰을 사용하는데 있어 동작시 약간 느린 이유가 바로 이 때문이라 할 수 있다)

+ Recent posts