프로세스(process)

컴퓨터에서 실행되고 있는 프로그램을 말하며, CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰입니다.

싱글 스레드 프로세스: 하나의 스레드만 가지고 있는 프로세스 멀티 스레드 프로세스: 여러 개의 스레드를 가지고 있는 프로세스

스레드

프로세스 내 작업의 흐름을 지칭합니다. (실행 가능한 가장 작은 단위입니다.)

프로세스는 코드, 데이터, 스택, 힙 메모리 영역을 기반으로 작업을 하는 반면, 스레드는 프로세스 내의 스택 메모리 영역을 제외한 다른 메모리 영역을 프로세스 내 다른 스레드와 공유합니다.

Untitled

프로세스와 스레드

Untitled

프로세스가 다른 프로세스와 통신을 하기 위해서는 IPC를 사용해야 하지만 스레드는 메모리를 공유하기 때문에 다른 스레드와의 정보공유가 쉽습니다. 그러나 스레드의 경우 동기화 문제 등의 단점도 있습니다.

예를 들어 웹 요청을 처리할 때, 새 프로세스르 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하며, 한 스레드가 중단(blocked)되어도 다른 스레드는 실행(running) 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능합니다. 또한, 동시성에도 큰 장점이 있습니다.

하지만 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있는 단점이 있습니다.

동시성

서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것.

IPC (inter-process communication)

IPC는 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 뜻함. 클라이언트와 서버를 예로 들 수 있는데, 클라이언트는 데이터를 요청하고 서버는 클라이언트 요청에 응답하는 것도 포함 Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용