반효경 교수님의 운영체제 강의를 듣고 정리하였습니다.

Thread란

  • "A thread(or lightweight process) is a basic unit of CPU utilization".
    • 프로세스 내에서 실행되는 여러 흐름의 단위
    • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  • Thread의 구성
    • program counter
    • register set
    • stack space
  • Thread가 동료 thread와 공유하는 부분(=task)
    • code section
    • data section
    • OS resources
  • 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.

 

(사진 출처: KOCW)

 

 

Thread의 장점

  • 응답성(Responsiveness)
    • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
    • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
    • 스레드 간 통신이 필요한 경우에도 쉽게 데이터를 주고 받을 수 있어 응답 시간이 단축된다.
  • 자원 공유(Resource Sharing)
    • 프로세스 내 자원들을 공유하기 때문에 시스템 자원 소모가 줄어든다.
  • 경제성(Economy)
    • Context Switching의 오버헤드를 줄인다.
      • 프로세스의 Cntext Switching과 달리, 캐시 메모리를 초기화할 필요가 없고, Code, Data, Heap 영역을 공유하므로 Stack 영역만 처리를 하면 되기 때문이다.
  • 멀티프로세서 아키텍처에서의 이용성(Utilization of MP Architectures)
    • 멀티프로세서 환경에서 스레드를 사용하면 병렬성을 높일 수 있다.

 

Thread의 단점

  • 자원의 공유로 인한 동기화 문제
  • 디버깅이 까다로워진다.
    • 버그 생성될 가능성 증가

 

Thread의 구현

  • Some are supported by kernel
    • Kernel Threads (커널 스레드)
      • Windows 95, 98, NT
      • Solaris
      • Digital UNIX, Mach
  • Others are supported by library
    • User Threads (유저 레벨 스레드)
      • POSIX Pthreads
      • Mach C-threads
      • Solaris threads
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기