운영체제 강의 - Thread

요즘 하나씩 듣고 있는 반효경 교수님, 2014년-1학기 운영체제 강의.
구매한 교재 안에 필기하고 있기 때문에, 블로그에 따로 정리하고 있지는 않다.
하지만 교재 <5장 프로세스 관리>에서 Thread 관련 설명은 없어서 블로그에 정리해둔다.

Thread

개념

Thread란? 프로세스 내부에 CPU 수행 단위

보통 프로세스가 생기면 프로세스 마다 주소 공간(stack, data, code)이 생기고, CPU 안에는 프로세스 마다 PCB가 생김. (PCB 안에는 현재 메모리의 어떤 instruction을 실행 중인지 가리키는 Program Counter가 있음.)
같은 프로그램을 여러 개 실행한다고 했을 때, 프로세스 마다 주소 공간이 메번 생기면? 너무 비효율적. Thread는 이러한 문제를 해결하기 위한 방안. 메모리에 data, code는 하나만 띄워 놓고, 프로세스 속 각 Thread 마다 다른 코드를 실행할 수 있도록 하면 됨.
즉, 공유할 부분은 공유하고, CPU 사용과 관련된 부분(stack: 각 프로세스가 어느 함수를 호출했는지, PCBPC, Register set 등)을 각자 두면 됨.

Thread 구성(CPU 사용과 관련된 부분)

  • Program Counter
  • Register Set
  • Stack space

Thread가 동료 thread와 공유하는 부분(=task)

  • Code section
  • Data section
  • OS resources

다중 Thread 장점

  • 하나의 서버 스레드가 blocked인 상태인 동안 다른 스레드가 실행되어 빠른 처리 가능.

    예시) 웹 서버에서 컨텐츠를 가져 올 때 시간이 오래 걸리는 이미지를 가져오는 동안 다른 스레드는 텍스트를 먼저 띄워줄 수 있는. 사용자 입장에서 답답함이 좀 줄어들 수 있게.

  • 동일한 프로세스가 여러 주소 공간을 갖지 않고 공유할 수 있는 부분은 공유하니까 메모리 낭비가 줄어듦.
  • 동일한 일을 수행하는 다중 스레드가 서로 협력, 높은 처리율(throughput)과 성능 향상
  • CPU가 여러 개 있는 컴퓨터의 경우, 병렬성을 높일 수 있음.

참고자료

본문 속 링크 참조