📌 개념 요약
- 프로세스(Process)
- 운영체제로부터 자원을 할당받아 실행 중인 프로그램 단위
- 독립된 메모리 영역을 가짐 (코드, 데이터, 힙, 스택 전부 별도)
- 다른 프로세스와 메모리 공유 불가 → 통신 위해 IPC 사용
- 스레드(Thread)
- 하나의 프로세스 내에서 실행되는 작은 단위의 작업 흐름
- 힙/데이터 영역 공유, 스택은 독립적으로 사용
- 컨텍스트 스위칭 비용이 낮아 빠른 전환 가능
📊 차이점 요약
항목 | 프로세스 | 스레드 |
메모리 구조 | 완전 독립 | 힙/데이터 공유, 스택은 개별 |
생성/종료 비용 | 큼 (무겁다) | 작음 (가볍다) |
통신 방식 | IPC 사용 | 공유 자원 접근 |
안정성 | 하나 죽어도 영향 없음 | 하나 죽으면 전체 영향 |
💡 실무에서의 예시
- Java 웹 서버 (예: Tomcat)
- 하나의 프로세스가 실행됨
- 각 사용자 요청마다 새로운 스레드가 할당됨
- 성능 최적화를 위해 스레드 풀(Thread Pool) 사용
🧠 내가 이해한 방식
“프로세스는 도시, 스레드는 도시 안의 사람들”
- 각 도시는 완전히 독립된 행정 체계 = 프로세스
- 사람들은 도시 내 자원을 함께 사용 = 스레드
- 도시 간 협업은 절차 복잡 (IPC), 사람들끼리 협업은 빠름 (공유 메모리)
✍️ 회고
- 프로세스와 스레드는 운영체제 구조의 기본 중 기본
- Java 백엔드 개발자로서 스레드 풀 구조 이해가 실무에 크게 연결됨
- 블로그에 정리하면서 정확히 이해하려고 노력하니 훨씬 오래 기억에 남음
'컴퓨터 과학 > 운영체제' 카테고리의 다른 글
💻 [운영체제] 스레드 동기화 - 세마포어와 뮤텍스 완벽 이해 (0) | 2025.04.26 |
---|---|
💻 [운영체제] 가상 메모리와 스와핑 - RAM이 부족하면 왜 느려질까? (0) | 2025.04.25 |
💻 [운영체제] 메모리 관리 (페이징 vs 세그멘테이션) (0) | 2025.04.25 |
💻 [운영체제] CPU 스케줄링 알고리즘 정리 (FCFS, SJF, Priority, RR) (0) | 2025.04.24 |
💻 [운영체제] 멀티태스킹 & 컨텍스트 스위칭 정리 (0) | 2025.04.24 |