프로세스(Process)
Heap에 메모리 할당
- 어떤 임무를 수행하기 위한 하나의 단위
- 프로그램이 실행되어 메모리에 적재되면 프로세스가 됨
- 한 프로세스 안의 여러 스레드는 리소스를 공유함
스레드(Thread)
Stack에 메모리 할당
- 프로세스의 작업 흐름
- 하나의 프로세스에 대해 여러 스레드가 병렬 작업 가능
- 병렬 작업시 공유하는 Heap 메모리 리소스 관리가 필요함
Thread
- 작업의 단위 : Thread
- Stack 에 메모리 저장
- 동시성 보장을 위해 Blocking 발생
- OS가 관여함
Coroutine
- 작업의 단위 : Coroutine Object
- Heap 에 메모리 저장 ( 언어마다 상이함, JVM 기준 )
- 동시성 보장을 위해 Suspend 사용
- Programmer의 코드를 통해 Switching 시점 판단
- OS가 관여하지 않음
- Process는 어떤 작업의 목표(Mission)을 의미한다.
- Process의 비동기 단일 작업은 Task 라고 부르며, 일반적으로 생각하는 일의 단위이다.
- Process의 실행 흐름은 Thread 라고 부르며 하나 또는 다수의 Task를 실행할 수 있다.
- 단일 Thread에서 Task의 비순차(비동기)적 실행을 위해 Coroutine을 사용한다.