최근 수정 시각 : 2024-08-25 15:19:25

Android/커널

파일:상위 문서 아이콘.svg   상위 문서: Android

1. 개요2. 상세
2.1. init 프로세스2.2. Zygote2.3. 시스템 서버
3. 기타

1. 개요

Google에서 개발하는 Android의 커널로 리눅스 커널을 기반으로 하고 있다. 리눅스 커널 기반인지라 라이선스도 GPLv2이다. 안드로이드 기본 커널은 common kernel이라고 부르며 소스 코드는 AOSP에 기본적으로 포함되어 있다.

2. 상세

리눅스 커널 위에 여러 안드로이드 프레임워크가 씌워진 커널이라고 생각하면 된다.

그래서 Android 부팅 과정은 부트로더 > 리눅스 커널 > init 프로세스 > 안드로이드 프레임워크 순이다. 안드로이드 프레임워크에는 OpenGL, SQLite, SSL, libc 등의 C/C++ 라이브러리, 안드로이드 런타임, 시스템 서버(System Server), 데몬 등이 있다.

2.1. init 프로세스

리눅스 커널 초기화 후 첫번째로 사용자 영역에서 실행되는 프로세스로 init.rc 파일을 읽어 스크립트를 실행하여 안드로이드 프레임워크 초기화, 디바이스 노드 생성, 데몬 실행 등을 수행한다.

2.2. Zygote

안드로이드 애플리케이션들을 관리하는 프로세스. 프로세스 이름은 app_process32 또는 app_process64.

모든 안드로이드 앱은 Java로 개발되어 있기에 앱 실행을 위해서는 먼저 가상머신을 초기화시켜야 한다. 그런데 앱마다 가상머신을 초기화해야 한다면 실행 시간이 오래 걸릴 수 있다.

그래서 Zygote는 실행될 때 가상머신 초기화 및 사용할 클래스들을 미리 메모리에 로딩시켜놓고 자신의 가상머신 및 메모리를 앱들과 공유하여 실행 시간을 단축시키고 성능을 향상시키는 역할을 한다. 또한 시스템 서버를 실행한다.

2.3. 시스템 서버

안드로이드 프레임워크와 소리, 카메라, 센서 등의 다양한 하드웨어의 기능을 담당하는 프로세스.

3. 기타

모든 운영체제가 그렇듯, 안드로이드에도 커널 패닉이 존재한다. 하지만 커널 패닉이 일어나는 경우는 매우 적은 편이다. 제조사가 모든 기능이 문제 없이 동작하고 테스트를 하기에 안정성이 매우 높다.