[OS] 스레드

SEH00N·2023년 8월 26일
0

프로그래밍

목록 보기
1/3
post-thumbnail

스레드의 정의

스레드의 정의는 '프로세스 내에서 실행되는 흐름의 단위' 이다.

정의 만으로 스레드를 이해하기엔 다소 많은 어려움이 있다. 운영체제의 스케줄링과 프로세스 그리고 CPU의 코어에 대해 알면 스레드를 이해하기 쉽다.


프로세스와 스레드

프로그램을 실행시키면 하나의 프로세스가 생성되어 운영체제는 해당 프로세스를 관리하게 된다. 프로세스는 단지 스레드를 생성하고 관리하는 역할을 한다.

프로세스가 관리하는 스레드들은 실행한 프로그램을 작동시키기 위한 작업들을 실행하는 단위이다. ( 이때 작업이란 우리가 직접 작성한 코드라고 생각하면 쉽다. )

즉 우리가 눈으로 보는 메모장, 그림판과 같은 프로그램들은 프로세스가 관리하는 스레드들의 작업이 모두 수행되었을 때 우리의 눈에 나타나는 것이다.

그렇다고 해서 이 스레드들이 CPU나 그래픽카드처럼 연산을 할 수 있어 직접 작업을 수행하는 것은 아니다. 어쨌거나 저쨌거나 작업을 수행하는 주체는 CPU가 된다.

그럼 스레드는 도대체 무엇을 말하는 걸까?


운영체제의 스케줄링

만약 A 프로세스에 1번 스레드가 있고, B 프로세스 2번 스레드가 있다고 하자.

A 프로세스가 작동되기 위해선 1번 스레드의 작업이 수행되어야 하고, B 프로세스가 작동되기 위해선 2번 스레드의 작업이 수행되어야 한다.

운영체제는 현재 작동시킬 프로세스를 정하는 역할을 한다. 그리고 이를 스케줄링이라 부른다.

운영체제는 프로세스를 작동하기 위한 작업 즉 스레드를 CPU에게 전달한다. 그럼 CPU는 스레드의 작업을 수행하여 프로세스를 작동시킬까?

반은 맞고 반은 틀린 말이라고 할 수 있다.


CPU의 코어

오늘날 CPU에는 여러개의 코어가 있다. 한 개일 땐 싱글, 두 개일 땐 듀얼, 네 개일 땐 쿼드, 여섯 개일 땐 헥사, 여덟 개일 땐 옥타코어라 불린다.

그럼 코어가 무엇일까?

CPU가 기억, 해석, 연산, 제어 이렇게 4가지의 주요 기능을 한다. 이 4가지 기능 중 연산을 담당하는 장치가 바로 '코어'이다. 그리고 코어가 실행하는 작업의 단위가 바로 '스레드'인 것이다.

따라서 CPU는 운영체제로부터 전달받은 스레드를 어떤 코어에게 할당할지 정한다. 스레드를 할당받은 코어는 스레드의 작업을 실행시킨다.


요약

스레드는 프로그램을 작동하기 위해 수행해야 할 작업이다.

프로그램이 작동되는 순서는 다음과 같다

  1. 운영체제는 스케줄링을 통해 작동시킬 프로세스를 정한다.
  2. 정한 프로세스를 작동시키기 위한 작업, 즉 스레드를 CPU에게 전달한다.
  3. 스레드를 전달받은 CPU는 어떤 코어에 스레드를 할당할지 정하고 할당한다.
  4. 스레드를 할당받은 코어는 스레드가 갖고 있는 작업들을 실행시킨다.
  5. 스레드가 갖고 있는 작업이 모두 실행되면 우리가 아는 그림판, 메모장과 같은 프로그램이 작동되는 것이다.
profile
노력할 수 있는 재능을 가진 개발자입니다.

0개의 댓글