[Android] 프로세스(Process)와 쓰레드(Thread)

Twaun·2022년 7월 18일
1

Android

목록 보기
12/24

프로세스(Process) 란?

프로세스란 작업의 단위다. 컴퓨터 OS 에서는 한 프로그램의 인스턴스이고, 모바일 OS 에서는 한 어플리케이션 인스턴스이다.
프로그램은 사용자 눈에 보이는 클릭하면 실행이 되는 것이다. 프로세스는 메모리에 적재되고 자원을 할당받아 실행되는 프로그램의 인스턴스이다. 프로그램이 실행 중인 것은 해당 프로세스가 작업 중인 상태라고 할 수 있다.

프로세스 메모리 영역

프로세스는 각자의 메모리 영역을 할당받는다. 영역은 4가지 코드(Code), 데이터(Data), 스택(Stack), 힙(Heap)로 구성된다.

- 코드
코드 영역은 실행할 프로그램의 코드 및 매크로 상수가 기계어 형태로 저장되는 영역이다. CPU는 코드 영역에 저장된 명령어를 하나씩 처리한다.

- 데이터
데이터 영역은 코드 영역에서 선언한 전역변수와 정적변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되어 프로그램이 종료될 때 소멸된다.

- 스택
스택 영역은 함수 안에서 선언된 지역변수, 매개변수, 리턴값, 등이 저장되고 함수 호출시 기록하고 종료되면 제거한다.

흔히 재귀함수를 통해 너무 많은 함수를 호출하게 되는 경우 스택 영역이 초과하면서 Stack Overflow(스택오버플로우)에러가 발생한다.

- 힙
힙 영역은 관리가 가능한 데이터 이외의 다른 형태의 데이터를 관리하기 위한 공간(Free Space)이다. 이 공간은 동적 메모리 할당 공간이므로 사용이 끝나면 운영체제가 쓸수 있도록 반납해야 한다. 프로그램이 실행하는 순간 프로그램이 사용할 메모리 크기를 고려하여 메모리의 할당이 이루어지는 데이터 또는 스택과 같은 정적 메모리 할당과는 대조적이다. 동적 메모리 할당은 어느 시점에 어느 정도의 공간을 할당할 수 있을지 정확히게 예측할 수 없으므로, 런타임에 확인가능하다.


쓰레드(Thread) 란?

스레드란 프로그래밍 된 명령어의 가장 작은 시퀀스인 하나의 실행 단위이다. 프로세스는 하나 이상의 쓰레드를 가지고 있다. 하나의 작업이 하나 이상의 실행 목록을 가지고 있다고 생각하면 된다!!

쓰레드는 하나의 프로세스 안에서 생성되어 Code, Data, Heap 영역은 서로 공유를 하고 Stack 영역만 별도로 할당을 받게 된다.

프로세스끼리는 서로 공유하는 것이 없지만 쓰레드는 부모 프로세스의 주소 공간이나 자원들을 공유할 수 있다.

이어서 [멀티 태스킹의 원리] 에 대해서 알아보자!!


출처
https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37


profile
Android Developer

0개의 댓글