Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 네트워크
- 웹성능최적화
- 백엔드개발
- devops
- DEVIEW2023
- 캐시
- AbstractAggregateRoot
- 웹개발
- 보안
- 세션
- 클린코드
- 인증
- java
- http
- CS
- 인프라
- 데이터베이스
- spring event
- 백엔드기초
- 프론트엔드
- redis
- JPA
- Spring Boot
- SnowFalke
- db
- 백엔드개발자
- 백엔드
- 성능최적화
- Spring
- interceptor
Archives
- Today
- Total
이것저것 개발기록
프로세스 vs 스레드, 핵심 차이 완벽 정리 본문
"프로그램 실행의 단위, 제대로 구분하고 계신가요?"
운영체제의 기초이자 면접 단골 질문인 프로세스와 스레드의 차이를 메모리 관점에서 분석합니다.
1. 프로세스와 스레드의 정의
- 프로세스(Process): 실행 중인 프로그램의 인스턴스입니다. 운영체제로부터 독립된 메모리 공간(Code, Data, Stack, Heap)을 통째로 할당받습니다.
- 스레드(Thread): 프로세스 내에서 실행되는 여러 흐름의 단위입니다. 같은 프로세스 내의 Stack을 제외한 메모리 영역을 공유합니다.
2. 왜 스레드를 사용할까?
프로세스를 새로 만드는 것보다 스레드를 만드는 것이 자원 소모가 훨씬 적기 때문입니다(Context Switching 비용 감소). 하지만 메모리를 공유하기 때문에 동시성 문제가 발생할 수 있다는 단점이 있습니다.
💡 실무 노트
면접에서 "스레드는 왜 Stack만 따로 갖나요?"라는 질문이 자주 나옵니다. 각 스레드가 독립적인 함수 호출과 로직을 수행하려면 자신만의 실행 이력(Stack)이 반드시 필요하기 때문입니다.
팁: 멀티스레드 환경을 다룰 때는 항상 Thread-Safe한 코드를 고민해야 합니다. 내가 공유 자원(정적 변수 등)을 건드리고 있지는 않은지 늘 체크하는 습관을 가져보세요.
'IT 이야기' 카테고리의 다른 글
| 데이터베이스 트랜잭션과 ACID 원칙 (0) | 2025.12.27 |
|---|---|
| Docker를 왜 쓰나요? 가상머신(VM)과의 결정적 차이 (0) | 2025.12.27 |
| REST API 제대로 설계하기 (멱등성 완벽 이해) (0) | 2025.12.27 |
| "왜 내 DB는 느릴까?" 인덱스(Index)의 기본 원리 (0) | 2025.12.27 |
| HTTP vs HTTPS 차이와 SSL/TLS 동작 원리 (0) | 2025.12.27 |