[OS]Thread란?

Hongjun·2022년 12월 28일
0

이전 회차에서 Process가 무엇인지 간단하게 배웠습니다.그렇다면 Thread 란 무엇일까요?

Thread

쓰레드란 간단히 말하면 프로세스 내에서 실제로 작업을 수행하는 주체를 의미합니다.

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

특징

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

그렇다면 Process 와 Thread의 정확한 차이는 무엇일까?

Process 와 Thread의 차이

우선 프로세스는 실행 중일 때, 프로세스끼리 독립적이기 때문에 한 프로세스에서 문제가 발생해도 다른 프로세스에는 영향을 주지 않는다.

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

멀티 프로세스 & 멀티 쓰레드

멀티 프로세스 (Multi-Process)

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

장점

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

단점

  • 프로세스당 메모리가 독립적이라 무거운 작업이 진행되어 문맥 교환 (Context Switch) 시 오버헤드가 발생한다.

  • 자원 공유가 안돼있기 때문에 프로세스 간의 통신 기법(IPC)이 복잡하다.

멀티 쓰레드 (Multi-Thread)

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

장점

  • 프로세스에 비해 생성하는 과정이 가볍기 때문에 자원을 효율적으로 사용할 수 있다.

  • 데이터 공유로 자원 소모가 감소하며 작업량이 작아 문맥교환이 빠르게 이루어져 시스템 처리량이 증가한다.

  • Stack 을 제외하고 저장공간을 공유하기에 사용자에 대한 응답성이 향상된다.

단점

  • 자원을 공유하기 때문에 쓰레드 하나가 프로세스 내 자원을 회손할 경우 모든 프로세스가 종료될 수 있다.

  • 자원을 공유하기 때문에 DeadLock이 발생하지 않도록 주의해야 한다.

profile
실패가 과정인 개발자가 되자

0개의 댓글