[ CS / OS ] 프로세스 (Process) & 쓰레드 (Thread)

황승환·2021년 8월 13일
0

CS

목록 보기
4/60

프로세스 (Process) & 쓰레드 (Thread)

프로그램 (Program)

  • 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 의미한다.

프로세스 (Process)

  • OS로부터 자원을 할당받은 작업의 단위
  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
  • OS 관점에서 최소 작업 단위
  • 실행 중인 프로그램, 즉 동적인 상태

특징

  • 각각 독립된 메모리 영역을 할당 받는다. (Code, Data, Stack, Heap 구조)
  • 기본적으로 프로세스 당 최소 1개의 쓰레드를 가진다. (메인 쓰레드)
  • 각 프로세스는 별도의 주소 공간에서 실행되고, 프로세스간의 메모리는 독립적이다.
  • 프로세스 간의 자원 접근을 위해서는 프로세스 간의 통신을 통해야 한다.
    -> ex) 파이프, 파일, 소켓 ...

쓰레드 (Thread)

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • CPU 관점에서 최소 작업 단위

특징

  • 프로세스 내에서 Code, Data, Heap은 공유하고, Stack만 독립적으로 가진다.
  • 같은 프로세스 내의 쓰레드는 서로 Stack을 제외한 메모리를 공유하며 실행된다.
  • 각각의 쓰레드는 별도의 레지스터와 스택을 가지고 있지만 Heap 메모리는 서로 R/W 가능하다.
  • 하나의 쓰레드가 프로세스 자원을 변경하면, 다른 쓰레드들은 변경된 사항을 즉시 볼 수 있다. (자원을 공유하기 때문에)

차이점

여러 개의 프로세스가 실행 중일 때, 하나의 프로세스에서 문제가 발생해도 다른 프로세스에는 영향을 주지 않는다.

그러나 쓰레드는 메모리를 서로 공유하며 수행되기 때문에 여러 개의 쓰레드가 실행 중일 때, 하나의 쓰레드에서 문제가 발생하면 같은 프로세스 내의 모든 쓰레드는 강제 종료된다.

프로세스를 코드, 쓰레드를 함수로 비유하면 이해가 더 편해진다.

멀티 프로세스 (Multi-Process) & 멀티 쓰레드 (Multi-Thread)

멀티 프로세스 (Multi-Process)

하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 수행하도록 하는 것이다.

장점

  • 여러 개의 자식 프로세스 중 하나에 문제가 발생해도 다른 프로세스에 영향을 주지 않는다.

단점

  • 문맥 교환 (Context Switch) 시 오버헤드가 발생한다.
    -> 캐시 메모리 초기화 등의 무거운 작업이 진행되기 때문에 많은 시간이 소모된다.
    -> 각각의 독립된 메모리 영역을 할당 받았기 때문에 문맥 교환 시에 캐시의 모든 데이터를 비우고 다시 데이터를 불러와야 한다.
  • 프로세스 간의 통신 기법(IPC)이 복잡하다.
    -> 프로세스의 자원은 독립적이므로 프로세스 간의 자원을 공유할 수 없다.

멀티 쓰레드 (Multi-Thread)

하나의 응용 프로그램을 여러 개의 쓰레드로 구성하여 각 쓰레드가 하나의 작업을 수행하도록 하는 것이다. 웹서버가 대표적인 멀티 쓰레드 응용 프로그램이다.

장점

  • 자원을 효율적으로 사용할 수 있다.
    -> 프로세스에 비해 생성하는 과정이 가볍다.
  • 시스템 처리량이 증가한다.
    -> 쓰레드 간의 데이터 공유는 간단하므로 이 덕분에 자원 소모가 감소한다.
    -> 쓰레드 간의 작업량이 작아 문맥 교환 (Context Switch) 이 빠르게 이뤄진다.
  • 사용자에 대한 응답성이 향상된다.
    -> Stack을 제외한 모든 메모리를 공유하기 때문에 통신 부담이 적다.

단점

  • 쓰레드 하나가 프로세스 내 자원을 회손할 경우 모든 프로세스가 종료될 수 있다.
    -> 쓰레드는 자원을 서로 공유하기 때문에 모든 프로세스에 영향을 준다.
  • 자원을 공유하기 때문에 동기화에 주의해야 한다.
  • DeadLock이 발생하지 않도록 주의해야 한다. ( 주의 깊은 설계가 필요하다. )
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글