프로세스는 운영체제로부터 자원을 할당받아 실행하는 독립적인 작업 단위입니다. 각 프로세스는 독립된 메모리 공간(Stack, Heap, Data, Code)을 가지며, 다른 프로세스와 자원을 공유하지 않습니다. 이로 인해 프로세스 간의 통신을 위해서는 별도의 기법인 IPC(Inter Process Communication)가 필요합니다.
반면에, 스레드는 프로세스가 할당받은 자원을 이용하여 실행되는 더 작은 단위입니다.
하나의 프로세스 안에서 생성된 스레드들은 프로세스의 메모리 공간(Heap, Data, Code)을 공유하지만, 각 스레드는 고유한 Stack을 가지고 동작합니다. 이 공유된 자원 구조 때문에, 같은 프로세스 안에 있는 스레드들 간에는 데이터 공유가 가능합니다.