프로그램은 컴퓨터에서 실행할 수 있는 파일을 의미한다. 컴퓨터가 프로그램을 메모리에 적재해서 실행한다면 이를 프로세스라고 한다. 프로그램은 그냥 코드 덩어리이고, 프로세스는 코드를 실행한 것이다.
프로세스만 있다면, 여러 개의 프로그램을 실행해야 할 때 프로세스의 무거운 덩어리로만 실행되는 과정에서 데이터를 공유하고 통신하는 과정에서 비용이 크다.
어차피 하나의 메모리를 차지하는 ‘프로세스 안에서 실행의 흐름을 나누면 어떨까?’라는 고민 아래서 태어난게 스레드이다.
하나의 프로세스에서 동시에 진행되는 작업 흐름의 단위다. 소마 멘토님은 프로세스란 Chrome이라는 프로세스 공장이 있고, 그 안에서 Inflearn, Naver 등 창을 실행하는 스레드 일꾼이 있다고 하셨다.
하나의 프로그램은 → 하나 이상의 프로세스가 있으며 하나의 프로세스는 → 하나 이상의 스레드가 있다.