본문 바로가기

Computer Science/운영체제

반효경 운영체제 - 2.2 쓰레드

쓰레드의 정의


  • “A thread (opr lightweight process) is a baic unit of CPU utilization.”

 

 

  • Thread의 구성
    • program counter - 작업 위치
    • register set - CPU의 작업 공간
    • stack space - 작업 위치에 따른 함수 호출 순서
  • Thread가 동료 thread와 공유하는 부분(task)
    • code section
    • data section
    • OS resources
  • 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
  • 쓰레드는 하나의 프로세스에서 CPU가 실행하는 곳을 여러개, 프로그램 카운터를 여러개 두어 CPU 수행 단위를 여러 개로 두는 것을 멀티 쓰레드라고 함.
  • 동일한 일을 하는 프로세스가 여러 개일 때, 프로세스마다 별도의 주소공간을 생성하면 메모리 공간이 불필요하게 낭비된다.


멀티쓰레드의 장점


  • Responsiveness(응답성) : 다중 스레드로 구성된 테스크 구조에서는 하나의 서버 스레드가 blocked 상태인 동안에도 동일한 테스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다. 일종의 비동기식 입출력이 구현된다.
  • Resource Sharing : 독자적으로 가져야하는 정보만 thread마다 별도로 가진다.
  • Economy
    • Creating & CPU Switching thread는 프로세스 생성 및 문맥 교환보다 훨씬 경제적이다.
    • 같은 일을 하는 작업이라면 프로세스를 여러 개 두기보다 thread를 여러개 두는 것이 효율적
  • Utilization of Multi-Processor Architectures
    • 쓰레드가 다른 CPU에서 병렬적으로 일할 수 있음.
    • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.

쓰레드의 구현


  • Kernel Threads : 운영체제의 지원을 받는 쓰레드
    • 멀티쓰레드인 것을 커널이 알고 있음
  • User Threads : 라이브러리의 지원을 받는 쓰레드
    • 프로세스 안에 멀티 쓰레드인지는 커널이 모른다. 프로세스가 내부에서 CPU 단위를 여러개 두어 쓰레드를 관리함.