메모리에 올라와 실행되고 있는 프로그램의 인스턴스 = 기억장치에 있던 프로그램이 메모리로 올라와서 실행된 프로그램을 의미
프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
실행 명령을 포함하는 —> Code 영역
static이나 글로벌 변수를 담는 —> Data 영역
지역변수 매개변수 반환 값 등등이 일시적인 데이터를 담는 —> Stack 영역
동적 메모리를 위한 —> Heap 영역
프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
스레드란 프로세스 내에서 실행되는 여러 흐름의 단위 = 프로세스가 할당받은 자원을 이용하는 실행의 단위
아래 사진과 같이 스레드는 프로세스 내에서 Stack만 할당받고, Code, Data, Heap 영역은 공유한다.
같은 프로세스 안에 있는 여러 스레드는 같은 heap 공간을 공유
한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.