
프로세스가 실행되기 위해선 필요한 자원이 메모리에 올라가 있어야 한다.
메모리 영역은 Code영역, Data영역, Heap영역, Stack영역으로 나뉜다.
Code: 실행 명령을 포함하는 코드 영역
Data: static, grobal 변수 영역
Heap: 동적 메모리 영역
Stack: 지역변수, 매개변수 등 일시적인 데이터 영역
Process
실행파일(program)이 memory에 적재되어 CPU를 할당받아 실행되는 것을 process라고 합니다.
하나의 프로세스는 다른 프로세스의 자원에 접근이 불가능.
하나의 프로세스는 최소 하나 이상의 스레드(Thread)를 가짐.
Thread
프로세스 내에서 실행되는 실행 단위이고 독립적인 기능을 수행합니다.
프로세스의 Code, Data, Heap을 영역을 공유하고, Stack만 따로 할당받아 실행.
Multi Process
다수의 프로세스를 동시에 실행시키기 위해, 짧은 텀을 반복하면서 전환해서 실행한다.
이를 context switching이라고 하고, 이 방식으로 Multi-process가 가능해진다.
Multi Thread
한 프로세스 내에서 구분지어진 실행 단위이다.
공유 자원이 많아 서로 긴밀히 연결되어 있어 통신 비용을 절감한다.
메모리를 효율적으로 사용할 수 있다.
컨텍스트 스위칭 비용이 적다.
공유된 자원에 대한 관리가 필요하다.