[CS] 프로세스(Process)와 스레드(Thread)

프로세스와 스레드는 운영체제에서 작업을 관리하는 기본 단위로, 각각 다른 특성과 역할을 가지고 있다.


프로세스(Process)

프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스다. 운영체제로부터 자원을 할당받은 작업의 단위로 정의되며, 각 프로세스는 독립적인 메모리 공간을 가지고 있고, 다른 프로세스와 메모리를 직접적으로 공유하지 않는다.

프로세스의 특징:

  • 독립된 메모리 공간(Code, Data, Stack, Heap)을 할당받음
  • 다른 프로세스의 메모리에 직접 접근할 수 없음
  • 프로세스 간 통신(IPC)을 위해 파이프, 소켓, 공유 메모리 등의 방법이 필요함
  • 새로운 프로세스 생성 시 운영체제가 자원을 새로 할당하므로 오버헤드가 큼

예시:

크롬의 탭 하나하나가 독립된 프로세스로 실행되어, 하나의 탭이 오류를 일으켜도 전체 브라우저가 죽지 않는다.

스레드(Thread)

스레드는 프로세스 내에서 실행되는 작업의 흐름 단위다. 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위로, 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.

스레드의 특징:

  • 같은 프로세스 내의 스레드들은 Code, Data, Heap 영역을 공유함
  • 각 스레드는 독립적인 Stack 영역만 따로 할당받음
  • 스레드 간 통신이 간단하고 빠름(공유 메모리 사용)
  • 스레드 생성은 프로세스 생성보다 오버헤드가 적음

예시:

웹 서버가 요청을 처리할 때, 각 요청을 독립적인 스레드로 처리하여 병렬성을 높임

프로세스와 스레드의 차이점

항목 프로세스(Process) 스레드(Thread)
메모리 독립적인 메모리 공간 스택을 제외한 메모리 영역 공유
자원 할당 운영체제로부터 직접 자원 할당 프로세스의 자원 공유
실행 속도 프로세스 간 전환 비용이 큼 스레드 간 전환이 빠름
통신 방법 IPC 필요(복잡) 공유 메모리 사용(간단)
안정성 한 프로세스의 문제가 다른 프로세스에 영향 없음 한 스레드의 문제가 전체 프로세스에 영향
오버헤드 생성 및 컨텍스트 스위칭 비용이 큼 생성 및 컨텍스트 스위칭 비용이 적음

멀티프로세스와 멀티스레드

멀티프로세스

여러 개의 프로세스를 사용하여 병렬로 작업을 처리하는 방법이다. 각 프로세스는 독립적인 메모리 공간을 가지고 있어 안정성이 높지만, 프로세스 간 통신이 복잡하고 비용이 많이 든다.

멀티스레드

하나의 프로세스 내에서 여러 스레드를 사용하여 병렬로 작업을 처리하는 방법이다. 스레드 간 통신이 쉽고 빠르지만, 공유 메모리를 사용하므로 동기화 문제가 발생할 수 있다.


멀티스레드의 장점:

  • 메모리 낭비를 줄일 수 있음(자원 공유)
  • 통신 부담이 적어 응답속도가 빠름

멀티스레드의 단점:

  • 동기화 문제에 대응해야 함
  • 한 스레드에 문제가 발생하면 전체 프로세스가 중단될 수 있음
  • 스레드의 스케줄링은 운영체제가 처리하지 못함

'Deep Dive > CS' 카테고리의 다른 글

[CS] CPU 스케줄링 기법  (0) 2025.05.15
[CS] TCP/IP 4계층 모델  (0) 2025.05.06
[CS] CGI / WebServer / MIME Type  (1) 2025.05.06
[CS] Datagram Socket vs Stream Socket  (1) 2025.05.06
[CS] 소켓(socket, bind, listen, accept, connect, close)  (0) 2025.05.06