ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

스레드(Thread)

정의

프로세스의 실행 단위입니다.

컴퓨터에서 프로그램을 실행하면 운영체제가 프로세스를 생성해 관리합니다.

 한 프로세스 내에서 동작하는 여러 실행 흐름으로, 프로세스 내의 주소 공간이나 자원을 공유할 수 있다. 스레드는 스레드 ID, 프로그램 카운터, 레지스터 집합, 그리고 스택으로 구성된다. 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유한다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상하는 것을 멀티스레딩이라고 한다. 이 경우 각각의 스레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택과 PC 레지스터 값을 갖고 있다.

 

THREAD MANAGEMENT

스레드: 프로세스라는 집 안의 부지런한 일꾼들

과거에는 하나의 프로세스가 하나의 작업만 수행했지만, 현대의 복잡한 소프트웨어는 한 번에 여러 일을 처리해야 합니다. 이때 등장하는 개념이 스레드(Thread)입니다. 스레드는 프로세스 내에서 실행되는 흐름의 단위로, 같은 프로세스에 속한 다른 스레드들과 자원을 공유하며 협력합니다.


1. 스레드와 자원 공유

스레드의 가장 큰 특징은 프로세스의 자원을 공유한다는 점입니다. 모든 스레드는 프로세스의 Code, Data, Heap 영역을 공유하지만, 독립적인 실행을 위해 개별적인 Stack 영역과 레지스터 세트를 가집니다.

  • ● 공유 영역: Code(코드), Data(전역 변수), Heap(동적 할당) 영역을 함께 사용하여 통신 비용이 낮습니다.
  • ● 독립 영역: 각자의 실행 흐름(함수 호출 기록)을 관리하기 위해 전용 Stack을 가집니다.

2. 프로세스 vs 스레드 핵심 비교

면접 단골 질문이자 CS의 기초인 두 개념의 차이를 표로 정리했습니다.

구분 프로세스 (Process) 스레드 (Thread)
개념 운영체제로부터 할당받는 자원의 단위 프로세스 내부의 실행 흐름 단위
자원 공유 독립된 메모리를 가짐 (공유 안 함) Code, Data, Heap 영역을 공유함
통신 비용 높음 (IPC 필요) 낮음 (공유 변수 이용)
영향 범위 하나가 죽어도 다른 프로세스에 무해 하나가 죽으면 프로세스 전체가 위험

3. 멀티스레딩의 명과 암

여러 개의 스레드를 사용하면 시스템 성능이 좋아지지만, 그만큼 관리의 책임도 커집니다.

  • ✔ 장점: 응답성이 빠르고, 시스템 자원 소모가 적으며 통신 속도가 빠릅니다.
  • ⚠ 단점: 여러 스레드가 동시에 자원에 접근할 때 동기화(Synchronization) 문제가 발생할 수 있으며, 디버깅이 까다롭습니다.

"효율적인 프로그램을 만든다는 것은 스레드라는 일꾼들을 얼마나 안전하고 조화롭게 부리는지에 달려 있습니다."

728x90