본문 바로가기
CS/운영체제

[OS] 스레드

by yoon_seon 2023. 9. 8.

스레드

프로세스 내에서 실행되는 실행 흐름의 단위

각각 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택을 가질 수 있다.

 

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

멀티프로세스와 멀티스레드에 가장 주된 차이점은 자원 공유 여부이다.

  • 프로세스간에는 기본적으로 자원을 공유하지 않음
  • 스레드 간에는 프로세스의 자원(입출력장치, 열린 파일 등)을 공유

스레드 간에는 프로세스의 자원을 공유하기 때문에 문제가 발생했을 경우 모든 스레드에 문제가 발생한다.

 

멀티 프로세스와 멀티 스레드의 차이 예

웹브라우저의 새 탭 생성을 통해 만든 탭이 모두 개별 프로세스로 만들어졌다면 탭에서 문제가 생겼을 때 다른 탭에는 영향을 주지 않는다.

하지만 각 탭을 프로세스가 아니라 스레드로 만들어졌다면 하나의 탭에 문제가 생긴다면 모든 탭이 영향에 영향을 주게 될 것이다.

 

멀티 프로세스가 멀티 스레드보다 항상 좋은 것은 아니다.

멀티 프로세스는 기본적으로 자원을 공유하지 않기 때문에 각 프로세스를 메모리에 할당해야해서 멀티 스레드에 비해 메모리 소요가 크다.

 

프로세스 간 자원을 공유할 수 있는 방법이 있다.

 

프로세스간 통신(IPC) 

  • 공유 메모리를 통한 통신
  • 파이프를 통한 통신
  • 네트워크 소켓을 통한 통신

정리

  • 스레드란 프로세스 내에서 실행되는 실행 흐름의 단위로 각각의 스레드ID, 레지스터, 프로그램 카운터, 스택을 가질 수 있다.
  • 멀티프로세스와 멀티스레드의 가장 큰 차이는 자원 공유 여부이다. 프로세스는 기본적으로 자원을 공유하지 않고 스레드는 프로세스의 자원을 공유한다.
  • 스레드는 프로세스의 자원을 공유하기 때문에 한 스레드에서 문제가 발생할 경우 다른 스레드에도 영향이 발생한다.
  • 멀티프로세스는 기본적으로 자원을 공유하지 않기 때문에 각 프로세스를 메모리에 할당해야해서 스레드보다 메모리소요가 크다.
  • IPC(프로세스간 통신)를 통해서 프로세스 간 자원을 공유할 수 있는 방법도 있다.

 

댓글