프로세스와 스레드
프로그램이란 파일이 저장 장치에 저장되어 있지만, 메모리에는 올라가 있지 않은 정적인 상태 즉 코드 덩어리 파일을 말한다.
이 프로그램 실행 시 컴퓨터 메모리에 올라가면서 동적인 상태 즉, 실행되고 있는 프로그램을 프로세스라고 한다.
이 프로세스 내에서 실제로 작업을 수행하는 주체를 스레드라고 한다.
- 프로그램(Program) : 컴퓨터 프로그램은 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음
- 프로세스(Process) : 운영체제로부터 자원을 할당받은 작업의 단위.
- 스레드(Thread) : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
프로세스(Process)
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 운영체제는 프로세스마다 각각 Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역을 할당해 준다.
- 각 프로세스는 별도의 주소 공간에서 실행된다. 따라서 한 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다.

스레드(Thread)
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 스레드는 프로세스와 달리 Stack 외 나머지 Code, Data, Heap 형식의 메모리 영역은 공유한다.

프로세스와 스레드의 메모리 영역 차이점을 통해
- 프로세스는 실행 중 오류 발생으로 강제 종료가 된다면 다른 프로세스에 영향을 주지 않는다.
- 스레드는 공유되는 메모리 영역(Code, Data, Heap)으로 인해 스레드 하나에 오류 발생 시 같은 프로세스 내의 다른 스레드에게 영향을 준다.