스레드는 프로세스를 구성하는 실행 흐름의 단위입니다. 그리고 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다. 스레드를 이용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있습니다.
지금까지는 단순히 "실행 중인 프로그램"이라고 표현했지만, 이 프로그램을 프로세스(Process)라고 합니다. 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 됩니다.

컴퓨터 내의 여러 프로세스는 생성, 준비, 실행, 대기, 종료 상태를 거치며 실행됩니다.

프로세스를 생성 중인 상태입니다. 생성 상태를 거쳐 실행할 준비가 완료된 프로세스는 곧바로 실행되지 않고 준비 상태가 되어 CPU의 할당을 기다립니다.
당장이라도 CPU를 할당받아 실행할 수 있지만, 아직 자신의 차례가 아니라서 기다리고 있는 상태입니다. 준비 상태 프로세스는 차례가 되면 CPU를 할당받아 실행 상태가 됩니다. 준비 상태인 프로세스가 실행 상태로 전환되는 것을 디스패치(dispatch)라고 합니다.
CPU를 할당받아 실행 중인 상태입니다. 실행 상태인 프로세스는 할당된 시간 동안만 CPU를 사용할 수 있습니다. 프로세스가 할당된 시간을 모두 사용하면 타이머 인터럽트가 발생합니다. 타이머 인터럽트가 발생하면 다시 준비 상태가 되고, 실행 도중 입출력장치를 사용하여 입출력장치의 작업이 끝날 때까지 기다려야 한다면 대기 상태가 됩니다.
프로세스는 실행 도중 입출력장치를 사용하는 경우가 있습니다. 입출력장치의 작업을 기다리는 상태를 대기 상태라고 합니다. 입출력 작업이 완료되면 해당 프로세스는 다시 준비 상태가 되어 CPU 할당을 기다립니다.
프로세스가 종료된 상태입니다. 프로세스가 종료되면, 운영체제는 프로세스가 사용한 메모리를 정리합니다.
스레드(Thread)는 프로세스를 구성하는 실행 흐름의 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다. 스레드를 이용하면, 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있습니다. 그리고 스레드는 프로세스의 자원을 공유할 수 있습니다.

컴퓨터는 실행 과정에서 여러 프로세스가 동시에 실행될 수 있고, 그 프로세스를 이루는 스레드는 여러 개 있을 수 있습니다.
프로세스끼리는 기본적으로 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원을 공유합니다. 스레드는 프로세스의 자원을 공유하기 때문에, 메모리를 더 효율적으로 사용할 수 있습니다.

멀티프로세스 환경에서는 하나의 프로세스에 문제가 생겨도 다른 프로세스에는 지장이 적거나 없지만, 멀티스레드 환경에서는 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있습니다. 모든 스레드는 프로세스의 자원을 공유하고, 하나의 스레드에 문제가 생기면 다른 스레드도 영향을 받기 때문입니다.

프로세스란? 프로세스의 상태
멀티 프로세스 vs 멀티 스레드 비교 💯 완전 총정리
혼자 공부하는 컴퓨터구조+운영체제