스레드

김우진·2023년 11월 15일
0

CS

목록 보기
4/4

스레드

등장 배경

과거에는 프로그램을 실행할 때 프로세스 하나만을 사용해서 이용했었다. 그러다보니 파일을 다운받으면 실행 시작부터 완료까지 기다려야했다. 그렇다고 동일한 프로그램을 여러 개의 프로세스로 만들게 되면, 그 만큼 메모리를 차지하고 CPU에서 할당받는 자원이 중복되는 문제가 있었다. 이러한 프로세스의 특성 한계를 해결하기 위해

쓰레드(thread)

스레드(thread)는 프로세스를 구성하는 실행 흐름의 단위로 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.

  • 단일 스레드 프로세스 : 프로세스 내의 스레드가 하나인 프로세스
  • 멀티 스레드 프로세스 : 프로세스 내의 스레드가 여러 개인 프로세스 -> 프로세스를 이루고 있는 명령어들을 여러 개 동시에 수행 가능

멀티 스레드 프로세스

하나의 프로세스 안에 스레드가 여러 개라는 것은 무슨 뜻일까?

예를 들어, 우리가 크롬 브라우저를 실행하면 프로세스 하나가 생성된다(크롬 프로그램 실행) 하지만 우리는 크롬에서 파일을 다운 받으면서 영상을 보면서 온라인 쇼핑을 할 수 있다.

이러한 활동은 하나의 크롬 프로세스 내에서 여러가지 작업들이 스레드를 통해 동시에 진행되기 때문에 가능한 것이다.

어떻게 여러 개의 명령어를 동시에 수행할 수 있을까?

쓰레드는 프로세스 내의 자원을 공유하면서 자신만의 스택 영역을 가지고 있다.
각 쓰레드는 자신만의 스레드 ID, 레지스터 값, 스택 등을 가지고 있어 같은 자원을 공유하여 실행 속도가 빠르면서 자신이 실행해야할 명령어의 주소 값이 달라 병렬 수행하는 것과 같은 효과를 보인다.

스레드의 구성 요소

  • 스레드 ID, 프로그램 카운터 (PC), 스택, ...

※참고※
멀티 프로세스 vs 멀티 스레드

참고 자료

0개의 댓글