Chapter Objectives

4. 1 Overview

프로세스가 운영체제의 스케쥴링 단위라면, 스레드는 처리 단위이다.(= CPU 이용의 기본 단위) 스레드는 스레드 ID, PC, 레지스터 모음, 그리고 스택으로 구성된다.

스레드는 프로세스와 달리 같은 프로세스 내에서 자원을 공유한다. (프로세스는 프로텍션 도메인(프로세스에 할당되는 메모리 영역)이 지원되어 메모리 독립성을 유지한다.)

전통적인 프로세스는 단일 스레드를 가지고 있다. 하지만 프로세스가 다수의 제어 스레드(다중 스레드)를 가진다면, 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다.

https://user-images.githubusercontent.com/46529663/163508057-ee80d3b8-7ce8-43dc-bf79-3ffbdb7ddfdb.png

4. 1. 1 Motivation

현대에 작동되는 대부분의 어플리케이션은 독립적인 프로세스로 실행되며 여러 개의 실행 흐름을 가진다.

이러한 어플리케이션을 다중 스레드를 이용한다고 하며, 다중 코어 시스템에서 여러 개의 코어를 사용하여 작업을 병렬적으로 수행하여 처리능력을 향상 시킬 수 있다.

예를 들어, 비슷한 작업 여러 개를 수행해야 할 때 단일 스레드 프로세스로 동작을 한다면 모든 작업을 순차적으로 진행되며 이는 작업 효율을 저하시킨다.

과거에는 이를 해결하기 위해 프로세스를 별도로 생성하여 해당 프로세스에 필요한 작업을 할당하는 방식이 보편적으로 사용되었지만, 유사한 작업을 수행하는데 큰 오버헤드가 발생하였다.

이와 달리 응용 프로그램이 다중 스레드화 되면 프로세스를 생성하는 것보다 효율적이며 처리능력이 향상된다.