프로세스와 스레드의 차이점
프로세스는 애플리케이션이 실행될 때 운영체제로부터 자원을 할당받고,
스레드는 한 프로세스 내에서 동작되는 실행의 흐름 단위로써 프로세스가 할당받은 자원을 같은 프로세스 내의 스레드끼리 공유하면서 실행된다.
안드로이드는 한 프로세스당 최소 하나의 메인 스레드를 기본으로 가지고, 서브 스레드를 추가할 수 있다.
여기서 말하는 자원은 CPU 시간, 주소 공간, Stack, Heap, Data, Text의 구조로 되어있는 메모리 영역이다.
스레드는 왜 쓰는걸까
운영체제 입장에서 시스템의 자원을 효율적으로 관리하기 위해 스레드를 사용한다.
멀티 프로세스로 실행되는 것보다 하나의 프로세스에 필요한 자원을 할당하고 실행할 작업을 더 작은 실행 흐름 단위인 스레드로 쪼개는 게 시스템 콜(call)의 빈도가 줄어들어 자원을 더 효율적으로 관리하게 된다.
또한 멀티 프로세스 환경에서의 프로세스 간의 통신 비용보다 한 프로세스 내부의 멀티 스레드끼리의 통신 비용이 더 적다.
하지만 멀티 스레드 간의 자원 공유는 전역으로 사용되므로 동기화로 발생할 수 있는 오류에 주의해야 한다.
'Android' 카테고리의 다른 글
[안드로이드] Room (0) | 2021.03.17 |
---|---|
[안드로이드] MVC, MVP, MVVM 아키텍처 패턴 (0) | 2021.03.17 |
[안드로이드] Androidx에서 File 공유하기 (0) | 2020.12.15 |
[안드로이드] Invoke-customs are only supported starting with Android O (--min-api 26) 에러 해결 방법 (0) | 2020.12.04 |
[안드로이드] 안드로이드 4대 컴포넌트 (0) | 2019.04.15 |