관리 메뉴

나만을 위한 블로그

[Manifest-Android] 33. 앱 프로세스, 안드 OS의 관리 방법 본문

스터디

[Manifest-Android] 33. 앱 프로세스, 안드 OS의 관리 방법

참깨빵위에참깨빵_ 2025. 7. 22. 02:03
728x90
반응형
프로세스 작동 방식

 

앱이 시작되면 OS는 리눅스 fork() 시스템 함수를 호출해 해당 앱을 위한 새 프로세스를 만든다. 각 프로세스는 달빅 또는 ART 가상 머신의 고유 인스턴스에서 실행돼 안전하고 독립적인 실행을 보장한다.

안드로이드는 각 프로세스에 고유한 리눅스 사용자 id(UID)를 할당해 권한 제어, 파일 시스템 격리를 포함한 엄격한 보안 경계를 적용한다.

 

앱 컴포넌트와 프로세스 연결

 

기본적으로 앱의 모든 컴포넌트는 같은 프로세스 안에서 실행되며 대부분의 앱은 이 표준을 따른다.

개발자는 매니페스트의 android:process 속성을 써서 프로세스 할당을 커스텀 가능하다. 해당 속성은 액티비티, 서비스, 리시버, 프로바이더 같은 컴포넌트에 적용될 수 있어 컴포넌트가 별도 프로세스에서 실행되거나 선택적으로 프로세스를 공유할 수 있게 한다.

application 요소도 이 속성을 지원해서 모든 컴포넌트의 기본 프로세스를 정의한다.

 

프로세스, 앱 생명주기

 

안드로이드는 앱 현재 상태를 기반으로 프로세스, 앱 생명주기를 관리하고 엄격한 우선순위 계층을 따른다

  1. 포그라운드 프로세스(Foreground Process) : 사용자와 활발하게 상호 작용하며 실행 중인 프로세스. 가장 높은 우선순위의 프로세스이며 거의 종료되지 않음
  2. 보이는 프로세스(Visible Process) : 사용자에게 보이지만 활발하게 상호 작용하지 않는 프로세스 (가령 다이얼로그 뒤의 Activity)
  3. 서비스 프로세스(Service Process) : 데이터 동기화나 음악 재생과 같은 작업을 수행하는 백그라운드 Service를 실행하는 프로세스
  4. 캐시된 프로세스(Cached Process) : 더 빠른 재실행을 위해 메모리에 유지되는 유휴 프로세스. 캐시된 프로세스는 우선순위가 가장 낮으며 메모리가 부족할 때 가장 먼저 종료됨

안드로이드는 메모리를 확보하고 시스템 안정성을 유지하기 위해 우선순위가 낮은 프로세스를 자동 종료한다

반응형
Comments