본문 바로가기
백엔드개발지식

프로세스와 스레드의 차이

by 세류오 2026. 1. 29.

[프로세스와 스레드의 차이점]

"같이 일하느냐, 따로 일하느냐"의 이야기 이 중 어떻게 일하는 구조인가 에 대해 알아보자


 

[1. 프로세스란 무엇인가?]

프로세스란 "실행 중인 프로그램 하나"를 명칭한다.

중요한 특징은 다음과 같다.

📌프로세스는 자기만의 독립 공간을 가진다.

프로세스 A
 ├─ 코드
 ├─ 힙 메모리
 ├─ 스택
 └─ 데이터 영역

다른 프로세스는 이 메모리에 직접 접근 불가한다.

그래서 프로세스를 "서로 완전히 분리된 세계"라고 느껴진다.

 

[2. 그럼 스레드는 무엇인가?]

스레드란 프로세스 안에서 실제로 일하는 실행의 흐름이다.

그러므로 하나의 프로세스 안에는 여러개의 스레드가 있을 수 있다.

프로세스
 ├─ 스레드 1
 ├─ 스레드 2
 └─ 스레드 3

스레드의 핵심 특징은 같은 프로세스 안에서 힙, 데이터 영역을 공유하지만 스택만 각자 따라로 가지는 것이다.

비유하자면 같은 사무실에서 책상만 따로 쓰는 직원들 같은거다.

[3. 왜 굳이 스레드를 쓸까?]

1. 자원 효율

프로세스의 생성은 무겁고 비싸지만 스레드의 생성은 가볍고 빠르다.

2. 동시에 여러 일을 처리

또한 동시에 A요청을 처리 중 B, C요청 또한 동시에 처리할 수 있다.

만약 서버에서 스레드가 없다면 요청이 하나 끝날 때 까지 전부 대기를 하고 있었을 것이다.

[4. 대신 스레드는 위험하다]

스레드는 편하지만 그에 상응하는 대가가 존재한다.

 1. 공유 메모리 문제

같은 힙 메모리를 사용하기 때문에 다음과 같은 일이 생길 수 있다.

- 동시에 값이 변경됨

- 데이터의 꼬임

- 재현 안 되는 버그

그래서 등장한 개념들이 sychronized, lock, 등이 있다.

[5. 오늘의 요약]

프로그램 실행
 └─ 프로세스 생성
     └─ 스레드들이 실제 작업 수행

1. 프로세스는 독립된 실행 환경이다.

2. 스레드는 같은 메모리를 공유하며 일한다.

3. 스레드는 빠르지만, 동기화가 필요하다.