[프로세스와 스레드의 차이점]
"같이 일하느냐, 따로 일하느냐"의 이야기 이 중 어떻게 일하는 구조인가 에 대해 알아보자
[1. 프로세스란 무엇인가?]
프로세스란 "실행 중인 프로그램 하나"를 명칭한다.
중요한 특징은 다음과 같다.
📌프로세스는 자기만의 독립 공간을 가진다.
프로세스 A
├─ 코드
├─ 힙 메모리
├─ 스택
└─ 데이터 영역
다른 프로세스는 이 메모리에 직접 접근 불가한다.
그래서 프로세스를 "서로 완전히 분리된 세계"라고 느껴진다.
[2. 그럼 스레드는 무엇인가?]
스레드란 프로세스 안에서 실제로 일하는 실행의 흐름이다.
그러므로 하나의 프로세스 안에는 여러개의 스레드가 있을 수 있다.
프로세스
├─ 스레드 1
├─ 스레드 2
└─ 스레드 3
스레드의 핵심 특징은 같은 프로세스 안에서 힙, 데이터 영역을 공유하지만 스택만 각자 따라로 가지는 것이다.
비유하자면 같은 사무실에서 책상만 따로 쓰는 직원들 같은거다.
[3. 왜 굳이 스레드를 쓸까?]
1. 자원 효율
프로세스의 생성은 무겁고 비싸지만 스레드의 생성은 가볍고 빠르다.
2. 동시에 여러 일을 처리
또한 동시에 A요청을 처리 중 B, C요청 또한 동시에 처리할 수 있다.
만약 서버에서 스레드가 없다면 요청이 하나 끝날 때 까지 전부 대기를 하고 있었을 것이다.
[4. 대신 스레드는 위험하다]
스레드는 편하지만 그에 상응하는 대가가 존재한다.
1. 공유 메모리 문제
같은 힙 메모리를 사용하기 때문에 다음과 같은 일이 생길 수 있다.
- 동시에 값이 변경됨
- 데이터의 꼬임
- 재현 안 되는 버그
그래서 등장한 개념들이 sychronized, lock, 등이 있다.
[5. 오늘의 요약]
프로그램 실행
└─ 프로세스 생성
└─ 스레드들이 실제 작업 수행
1. 프로세스는 독립된 실행 환경이다.
2. 스레드는 같은 메모리를 공유하며 일한다.
3. 스레드는 빠르지만, 동기화가 필요하다.
'백엔드개발지식' 카테고리의 다른 글
| GET과 POST의 차이점은 무엇일까? (0) | 2026.01.27 |
|---|---|
| [네트워크] https://www.google.com을 입력하면 무슨일이 일어날까? (0) | 2026.01.25 |
| [네트워크] Snappy에 대해 알아보자 (0) | 2026.01.10 |