[운영체제] 스레드

Updated: Categories:

스레드에 대해 알아보자

스레드란?

정의

  • 프로세스의 실행 단위
  • 프로세스는 최소 한 개 이상의 스레드를 가지며, 이를 메인 스레드라 함

역할

  • 프로세스보다 가벼워서 생성 및 제거가 용이함
    • 프로세스를 생성할 때 메모리 할당에 많은 자원이 필요함.
  • 프로세스의 처리 속도를 높이기 위해 하나의 프로세스가 수행해야 할 작업을 스레드가 나누어 수행할 수 있도록 한다.
    • ex) 1개의 프로세스 내에 2개의 스레드가 존재한다면 이는 2개의 프로세스와 같은 처리속도를 낸다.
    • 모든 스레드는 프로세스의 메모리 공간을 공유하기에 빠름

구조

  • 스레드는 프로세스 내에서 코드, 데이터, 힙 영역을 공유한다.
  • 스택 영역과 레지스터은 각 스레드마다 따로 할당 받는다.


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

멀티 프로세스

  • 정의
    • 하나의 프로그램을 여러개의 프로세스로 구성
    • 각 프로세스가 하나의 task를 맡아서 수행
  • 장점
    • 자식 프로세스에 문제가 생겨도 다른 프로세스에 영향이 가지 않음
  • 단점
    • 프로세스간 메모리를 공유할 수 없기에 문맥교환이 발생 -> 오버헤드 발생
    • 프로세스간 통신 비용이 큼

멀티 스레드

  • 정의
    • 하나의 프로세스를 여러개의 스레드로 구성
    • 각 스레드가 하나의 task를 맡아서 수행
  • 장점
    • 프로세스 메모리를 공유하므로 자원 소모가 줄어듬
    • 스레드간 통신 비용이 적어 문맥교환에 용이 (스택 영역만 변경하면 됨)
  • 단점
    • 하나의 스레드에 문제가 생기면 프로세스 전체가 영향 받음
    • 메모리를 공유함에 있어 동기화 문제가 발생할 수 있음