컴퓨터에서 실행되고 있는 프로그램을 말하며, CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰입니다.
싱글 스레드 프로세스: 하나의 스레드만 가지고 있는 프로세스
멀티 스레드 프로세스: 여러 개의 스레드를 가지고 있는 프로세스
프로세스 내 작업의 흐름을 지칭합니다. (실행 가능한 가장 작은 단위입니다.)
프로세스는 코드, 데이터, 스택, 힙 메모리 영역을 기반으로 작업을 하는 반면, 스레드는 프로세스 내의 스택 메모리 영역을 제외한 다른 메모리 영역을 프로세스 내 다른 스레드와 공유합니다.


프로세스가 다른 프로세스와 통신을 하기 위해서는 IPC를 사용해야 하지만 스레드는 메모리를 공유하기 때문에 다른 스레드와의 정보공유가 쉽습니다. 그러나 스레드의 경우 동기화 문제 등의 단점도 있습니다.
예를 들어 웹 요청을 처리할 때, 새 프로세스르 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하며, 한 스레드가 중단(blocked)되어도 다른 스레드는 실행(running) 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능합니다. 또한, 동시성에도 큰 장점이 있습니다.
하지만 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있는 단점이 있습니다.
동시성
서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것.
IPC (inter-process communication)
IPC는 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 뜻함. 클라이언트와 서버를 예로 들 수 있는데, 클라이언트는 데이터를 요청하고 서버는 클라이언트 요청에 응답하는 것도 포함 Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용