본문 바로가기

운영체제(OS)

스레드란?

스레드

스레드란?

정의

  • 하나의 프로세스 내에서, 더 작은 단위들로 각각 독립적으로 실행되며, 각각 제어가 가능한 흐름
  • CPU 이용의 기본 단위
  • 하나의 프로세스 내에서는 반드시 하나 이상의 스레드가 존재한다. 이 스레드를 메인 스레드라고 한다.

역할

  • 여러개의 작업단위로 구성된 프로그램에서 요청을 동시에 처리하기 위해 필요하다.
    • ex) 1개의 프로세스 내에 2개의 스레드가 존재한다면 이는 2개의 프로세스와 같은 처리속도를 낸다.
      모든 스레드는 프로세스의 메모리 공간을 공유하기에 빠름
  • 프로세스보다 경량(lightweight)이어서 프로세스보다 생성과 제거가 용이하다.
    • 프로세스를 생성할 때 메모리 할당에 많은 자원이 필요

구조


  • 스레드는 프로세스 내의 Code, Data, Heap 영역을 다른 스레드와 공유하고, Stack영역은 따로 할당 받는다.
  • 여러 스레드는 한 프로세스 내의 Code, Data, Heap 영역을 공유하지만, 프로세스간에는 서로 메모리에 접근할 수 없다
  • 스레드는 별도의 Register와 Stack을 가지고, 그외의 다른영역은 공유한다. 한 스레드가 프로세스 자원을 변경하면 다른스레드도 그 변경 결과를 가져올 수 있다

장점

  • 응답성 (responsiveness) ; 사용자의 응답성 증가
  • 자원 공유 (resource sharing) ; 같은 주소 공간에서의 공유
  • 경제성 (economy) ; 메모리와 자원
  • 효율성 (utilization) ; 동시 실행


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

멀티 프로세스

  • 정의
    • 여러 개의 프로세스가 서로 협력적으로 일을 처리하는 것
    • 각 프로세스가 하나의 task를 맡아서 수행
    • 여러 개의 프로세스가 작업을 병렬처리 하는 것
    • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용
  • 장점
    • 독립된 구조이기 떄문에 안정성이 높다
    • 여러 프로세스가 같이 작업하고 있기 때문에 하나의 프로세스가 죽어도 문제가 확산되지는 않는다.
  • 단점
    • 멀티 스레드보다 많은 메모리 공간과 CPU시간을 차지
    • 독립된 메모리 영역이기 때문에 문맥교환이 발생 즉 오버헤드가 발생

멀티 스레드

  • 정의
    • 하나의 프로세스를 여러개의 스레드로 구성
    • 하나의 스레드가 하나의 task를 수행
  • 장점
    • 프로세스를 생성하기 위한 프로세스에 자원을 할당하는 작업 (시스템호출)이 줄어들어 자원의 효율성이 증가
    • 스레드는 프로세스 메모리의 코드/데이터/힙 영역은 공유하므로 문맥교환이 발생할때, 스택영역만 처리하면 되어 문맥교환 처리비용이 감소
    • 스레드는 프로세스 메모리의 코드/데이터/힙 영역은 공유하므로 프로세스간의 통신보다 스레드간의 통신이 응답속도가 빠름
  • 단점
    • 하나의 스레드가 문제가 생기면 , 모든 프로세스가 종료
    • 자원을 공유하기 때문에 필연적으로 동기화 문제가 발생

'운영체제(OS)' 카테고리의 다른 글

동기화 문제  (0) 2023.02.15
인터럽트  (0) 2023.02.09
스케줄링  (0) 2023.02.08
프로세스  (0) 2023.02.03
운영체제란?  (1) 2023.02.03