zj3t

email: euntaejang@gmail.com

Latest Posts

개요.

By 오후 4:55




안드로이드 플랫폼의 구조: 에플리케이션, 프레임워크, 라이브러리, 리눅스 커널

안드로이드에서 제공하는 기본 에플리케이션은 에플리케이션 프레임워크 계층 위에서 동작

안드로이드 소스 코드 구조(크게 4가지):

kernel: 안드로이드는 리눅스 커널을 기반

frameworks: 안드로이드 프레임 워크

package: 안드로이드 기본 에플리케이션 등

system: 안드로이드 init 프로세스, 각종 도구 모음 등



리눅스 커널: 커널 초기화 수행 후 init프로세스를 호출

init: 각종 디바이스 초기화등, 프레임워크 동작에 필요한 각종 데몬, 프로세스들을 실행

Context Manager: 
안드로이드의 시스템 서비스를 관리하는 중요한 프로세스, 시스템 서비스란 안드로이드 시스템에서 동작하는 서비스 중에서 시스템에 등록된 서비스를 의미

시스템 서비스를 이용하고자 하는 애플리케이션, 프레임워크 내부 모듈은 서비스 매니저에게 요청한후 IPC(Inter process communication)메카니즘을 통해 시스템 서비스를 이용

     Context Manager: 시스템 서비스의 위치를 관리하는 프로세스이며, 서비스 매니저 프                                로세스로 동작하는 특별한 서비스

     Service Manager:  시스템에 서비스를 등록하고 검색하는 기능을 제공. Context 매니저                              와 바인더 IPC를 한다.

Media  Server:
C/C++ 기반으로 작성돼 있는 네이티브 시스템 서비스를 실행하는 역할을 한다.

Zygote:
안드로이드 애플리케이션의 로딩 시간을 단축위한 프로세스, 모든 자바 기반의 안드로이드 app 은 Zygote를 통해서 for된 프로세스 상에서 동작한다.

시스템 서버:
Zygote로 부터 최초로 fork 되어 실행되는 프로세스, 각종 자바 시스템 서비스를 실행하는 역할을 수행한다.
시스템 서버에서 실행하는 자바 시스템 서비스 또한 app이나 framework 내부 모듈에서 이용할 수 있도록 하기위해서는 context manager에 등록되어 있어야한다.

하지만 그림에서 보다시피 자바 시스템 서비스는 java로 구현되어 있고 Context Manager는 C언어 기반으로 구현되어있다. 따라서 java와 C 간의 인터페이스 역할을 하는 JNI를 추가로 이용해야한다.



참초: 인사이드 안드로이드



You Might Also Like

0 개의 댓글