운영체제 강의 - Thread

이진호·2022년 5월 20일
0

운영체제 이론

목록 보기
2/9

스레드(Thread)

  • Light Weight Process(LWP) -> 자원은 공유하고 제어 부분만 갖고 있으므로 일반적인 프로세스보다 가벼움

  • 프로세서(e.g, CPU) 활용의 기본 단위

  • 구성요소(Thread ID, Register set(PC, SP 등), Stack (i.e. local data)

  • 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유

  • 전통적 프로세스 = 단일 스레드 프로세스

스레드의 장점

  • 사용자 응답성: 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능

  • 자원 공유: 자원을 공유해서 효율성 증가(커널의 개입을 피할 수 있음)

  • 경제성: 프로세스의 생성, context switch에 비해 효율적

  • 멀티 프로세서 활용: 병렬처리를 통해 성능 향상

스레드 사용의 예

  • 세 개 모두 I/O가 발생하면 run에서 block 상태가 되었다가 ready를 거쳐 run이 된다.
  • 스레드가 하나일 경우 한 가지 작업을 하는 동안 다른 작업은 진행되지 않음.

해결책(멀티 쓰레드): 쓰레드 세 개를 만들어서 한 가지 작업씩 맡도록 한다(자원 또한 공유). -> 사용자 응답성이 좋아짐.

스레드의 구현

사용자 수준 스레드(User Thread)

  • 사용자 영역의 스레드 라이브러리로 구현 됨
    - 스레드의 생성, 스케줄링 등
    - POSIX threads, Win 32 threads, Java thread API 등

  • 커널은 스레드의 존재를 모름
    - 커널의 관리(개입)을 받지 않음(라이브러리 단위에서 관리)

    • 생성 및 관리의 부하가 적음, 유연한 관리 가능
    • 이식성(portability)이 높음(라이브러리만 존재하는 플랫폼이면 바로 사용할 수 있음)
  • 커널은 프로세스 단위로 자원 할당(하기 때문)
    - 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기(single-threaded kernel의 경우)

커널 수준 스레드(Kernel Threads)

  • OS(Kernel)가 직접 관리
  • 커널 영역에서 스레드의 생성, 관리 수행
    - Context switching 등 부하(Overhead)가 큼
  • 커널이 각 스레드를 개별적으로 관리
    - 프로세스 내 스레드들이 병행 수행 가능
    • 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능

Multi-Threading Model

혼합형 (n:m) 스레드

  • n개 사용자 수준 스레드 - m개의 커널 스레드 (n>m)
    - 사용자는 원하는 수만큼 스레드 사용
    • 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능
      • 병행 처리 가능

0개의 댓글