Process
- 운영체제 위에서 연속적으로 실행되고 있는 프로그램

- 각각의 프로세스는 메모리 위에서 실행된다.
- 모든 프로세스는 서로 독립적으로 실행되기 때문에 한 프로세스에 문제가 생기면 해당 프로세스만 죽어버림
- 저마다 자원(resource)이 정해져 있다.
code - 프로그램 실행을 위한 코드
stack - 함수의 실행 순서나 함수 종료 후 어디로 돌아가야 하는지 등에 대한 정보를 담고 있음
heap - 오브젝트나 데이터 생성 시 저장되는 공간. 동적으로 할당된 변수를 저장함
data - 전역변수나 정적변수가 할당됨
Thread
- 스레드는 한 프로세스 안에서 여러 개가 동작할 수 있다.

- 프로세스 안에서 동작하는 일꾼 같은 개념
- 저마다 해야하는 업무를 배정받아서 동작한다.
- 수행해야 하는 함수의 호출을 기억해야 하기 때문에 모든 스레드는
stack이 할당되어 있다.
- 결국 한 프로그램을 위해 일해야 하기 때문에 코드, 힙, 데이터에 공통으로 접근하여 공통으로 업데이트된다.
- 스레드는 동시다발적으로 발생할 수 있기 때문에 프로세스의 효율을 높여준다.
스레드의 포인트?
일을 수행할 때 일의 흐름을 기억하는 고유 스택이 지정되어 있지만 공통 데이터 리소스(code, heap, data)는 프로세스에 있기 때문에 이러한 리소스에 동시다발적 접근과 업데이트를 해야하므로 서로 공유하며 사용한다.