-
쓰레드란 프로그램(프로세스) 실행의 단위이며
하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다. -
하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다.
-
프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며
실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다. -
각 쓰레드별로 자신만의 스택과 레지스터를 가진다.
- 한순간에 하나의 쓰레드만이 실행 가능하다.
프로세스와 쓰레드의 차이
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고
쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
-
프로세스는 실행 중인 프로그램으로
디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. -
하지만 프로세스 생성은 많은 시간과 자원을 소비한다.
-
쓰레드는 프로세스의 실행 단위라고 할 수 있다.
-
한 프로세스 내에서 동작되는 여러 실행 흐름으로
프로세스 내의 주소 공간이나 자원을 공유할 수 있다. -
이 경우 각각의 쓰레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택과 PC 레지스터 값을 갖고 있다.
스택을 쓰레드마다 독립적으로 할당하는 이유
-
스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을
저장하기 위해 사용되는 메모리 공간이므로
스택 메모리 공간이 독립적이라는 것은
독립적인 함수 호출이 가능하다는 것이고
이는 독립적인 실행 흐름이 가능하게 한다. -
따라서 독립적인 실행 흐름을 위한 최소 조건으로 독립된 스택을 할당한다.
PC Resister를 쓰레드마다 독립적으로 할당하는 이유
-
PC 값은 쓰레드가 명령어의 어디까지 수행하였는지를 나타나게 된다.
-
쓰레드는 CPU를 할당받았다가 스케줄러에 의해 다시 선점당한다.
그렇기 때문에 명령어가 연속적으로 수행되지 못하고
어느 부분까지 수행했는지 기억할 필요가 있다. -
따라서 PC 레지스터를 독립적으로 할당한다.
쓰레드(Thread)의 장점
-
쓰레드는 프로세스보다 생성 및 종료시간, 쓰레드간 전환시간이 짧다.
-
쓰레드는 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호간에 통신이 가능하다.
'Computer Science' 카테고리의 다른 글
쓰레드 동기화 방법의 종류 (0) | 2021.02.24 |
---|---|
운영 체제 개요 (0) | 2021.02.23 |