개념

4. 스레드

GenieLove! 2022. 8. 26. 23:34
728x90
반응형

스레드

스레드란

  • 프로세스 내에서 실제로 작업을 수행하는 주체
  • 운영체제 입장에서 작업의 단위 : 프로세스, CPU 입장에서의 작업 단위 : 스레드
  • 모든 프로세스는 한 개 이상의 스레드가 존재
  • 두 개 이상의 스레드를 가지는 프로세스는 멀티 스레드 프로세스(multi-threaded process)

멀티 프로세스와 멀티 스레드 차이 등

멀티 태스킹

  • 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법
  • 여러 스레드에서 시간을 잘게 나누어 주는 시스템 : 시분할 시스템(time-sharing system)
    시분할 시스템에서 운영체제가 CPU에 전달하는 작업은 프로세스가 아니라 스레드

멀티 프로세스

  • 하나의 응용 프로그램을 여러 개 프로세스로 구성하여 각 프로세스가 하나의 작업(Task)을 처리하도록 하는 것이다.
  • 장점
    • 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽고, 다른 영향이 확산되지 않는다.
  • 단점
    • context switching에서의 오버헤드
      • 컨텍스트 스위칭 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생하게 된다.
      • 프로세스는 각각의 독립된 메모리 영역을 할당 받기 때문에 공유 메모리가 없어, 컨텍스트 스위칭이 발생하게 되면 캐시에 있는 모든 데이터를 리셋하고 다시 캐시 정보를 불러와야 된다.
    • 프로세스 사이의 어렵고 복잡한 통신 기법
      • 각각 독립된 메모리 영역을 할당 받았기 때문에 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.

멀티 스레드

  • 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법
  • 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것
  • 장점
    • 자원의 중복 사용을 피함으로써 낭비를 막는다.(자원 공유)
    • 작업의 효율성 증대(시스템 자원 소모 감소)
    • 응답성 향상
    • 시스템 처리량 증가(처리 비용 감소)
      • 스레드 사이의 작업량이 작아, 컨텍스트 스위칭이 빠르다.
    • 간단한 통신 방법으로 인한 프로그램 응답 시간 단축
      • 프로세스 내의 스택 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.
  • 단점
    • 주의 깊은 설계 필요
    • 디버깅 까다로움
    • 단일 프로세스 시스템인 경우 효과 보기 어려움
    • 단일 프로세스에서 스레드를 제어할 수 없다.
    • 멀티 스레드의 경우 자원 공유 문제 발생 가능성
      동기화 문제(Synchronization issue) : 여러 스레드가 전역 변수를 함께 사용할 경우 발생할 수 있는 충돌
    • 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.

멀티 스레드 모델

사용자 스레드

  • 운영체제가 멀티 스레드를 지원하지 않을 때 사용하는 방법
  • 초기 스레드 시스템에서 이용
  • 커널 입장에선 이 스레드는 하나의 프로세스처럼 보이지만, 커널이 하는 일을 라이브러리가 대신 처리하여 여러 개의 스레드를 작동한다.
  • 커널 스레드 : 사용자 스레드   1 : N
  • 라이브러리가 직접 스케줄링 하고 작업에 필요한 정보를 처리하기 때문에 컨텍스트 스위칭이 필요없다.
  • 단점
    • 여러 개의 스레드가 하나의 커널 스레드와 연결되기 때문에 커널 스레드가 입출력 작업을 위해 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기하게 된다.
    • 한 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 CPU를 동시에 사용할 수 없다.
    • 보안에 취약

커널 스레드

  • 커널이 멀티 스레드를 지원하는 방식
  • 커널 스레드 : 사용자 스레드   1 : 1
  • 독립적 스케줄링이 가능
  • 장점
    • 커널 레벨에서 모든 작업을 지원하기 때문에 멀티 CPU 사용 가능
    • 보안에 강하고 안정적으로 작동
  • 단점
    • 컨텍스트 스위칭 시 오버헤드 때문에 느리게 작동

멀티레벨 스레드

  • 사용자 스레드와 커널 스레드를 혼합한 방식으로 M : N
  • 사용자 스레드보다 커널 스레드 개수가 같거나 적다.
  • 장점
    • 하나의 커널 스레드가 대기 상태에 들어가면 다른 커널 스레드가 대신 작업을 사용하여 사용자 스레드보다 유연하게 작업을 처리할 수 있다.
    • 빠르게 움직여야하는 스레드는 사용자 스레드로 작동, 안정적으로 움직여야 하는 스레드는 커널 스레드로 작동
  • 단점
    • 커널 스레드를 같이 사용하기 때문에 여전히 컨텍스트 스위칭 시 오버헤드가 있어 사용자 스레드만큼 빠르지 않다.
728x90
반응형