Computer Science

쓰레드(Thread)란?

종황이 2021. 2. 23. 23:51
  • 쓰레드란 프로그램(프로세스) 실행의 단위이며
    하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다.

  • 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.

  • 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며
    실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다.

  • 각 쓰레드별로 자신만의 스택 레지스터를 가진다.

  • 한순간에 하나의 쓰레드만이 실행 가능하다.

프로세스와 쓰레드의 차이

프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고
쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.

  • 프로세스는 실행 중인 프로그램으로
    디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다.

  • 하지만 프로세스 생성은 많은 시간과 자원을 소비한다.

 

  • 쓰레드는 프로세스 실행 단위라고 할 수 있다.

  • 한 프로세스 내에서 동작되는 여러 실행 흐름으로
    프로세스 내의 주소 공간이나 자원을 공유할 수 있다.

  • 이 경우 각각의 쓰레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택 PC 레지스터 값을 갖고 있다.

스택을 쓰레드마다 독립적으로 할당하는 이유

  • 스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을
    저장하기 위해 사용되는 메모리 공간이므로
    스택 메모리 공간 독립적이라는 것은
    독립적인 함수 호출이 가능하다는 것이고
    이는 독립적인 실행 흐름이 가능하게 한다.

  • 따라서 독립적인 실행 흐름을 위한 최소 조건으로 독립된 스택을 할당한다.


PC Resister를 쓰레드마다 독립적으로 할당하는 이유

  • PC 값은 쓰레드가 명령어의 어디까지 수행하였는지를 나타나게 된다.

  • 쓰레드는 CPU를 할당받았다가 스케줄러에 의해 다시 선점당한다.
    그렇기 때문에 명령어가 연속적으로 수행되지 못하고
    어느 부분까지 수행했는지 기억할 필요가 있다.

  • 따라서 PC 레지스터를 독립적으로 할당한다.


쓰레드(Thread)의 장점

  • 쓰레드는 프로세스보다 생성 및 종료시간, 쓰레드간 전환시간이 짧다.

  • 쓰레드는 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호간에 통신이 가능하다.

'Computer Science' 카테고리의 다른 글

쓰레드 동기화 방법의 종류  (0) 2021.02.24
운영 체제 개요  (0) 2021.02.23