운영체제
프로세스와 스레드
kiwi_wiki
2025. 1. 19. 08:00
728x90
반응형
프로세스(Process)
- 메모리에 로드된 실행 중인 프로그램의 인스턴스
- 운영체제로부터 독립적인 메모리 공간을 할당받으며 코드, 데이터, 스택, 힙 메모리를 포함
- 각 프로세스는 서로 독립적이며 하나의 프로세스가 종료되어도 다른 프로세스에는 영향을 주지 않음
스레드(Thread)
- 프로세스 내에서 실제 작업을 수행하는 실행 단위
- 프로세스 내의 다른 스레드와 메로리를 공유하며 스택과 PC(Program Counter)는 개병적으로 관리됨
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며 이를 멀티스레딩(Multi-threading) 이라고 함
프로세스 | 스레드 | |
정의 | 실행 중인 프로그램의 독립적인 인스턴스 | 프로세스 내에서 실행되는 작업 단위 |
메모리 | 프로세스 간에는 메모리를 공유하지 않음 | 동일 프로세스 내에서 메모리를 공유 |
오버헤드 | 프로세스를 생성할 때 더 많은 자원과 시간이 필요 | 스레드는 프로세스보다 가볍고 생성 속도가 빠름 |
독립성 | 프로세스 간에는 독립적 | 동일 프로세스 내 스레드는 서로 영향을 줄 수 있음 |
통신 방식 | 프로세스 간 통신을 통해 데이터 공유 | 같은 프로세스 내에서는 스택을 제외한 메모리 공유 가능 |
멀티 스레딩과 멀티 프로세싱
멀티 스레딩
- 하나의 프로세스 내에서 여러 개의 스레드가 병렬로 실행되는 방식
- 공유 메모리를 통해 스레드 간 데이터 교환이 빠르지만 경합 조건, 데드락 등의 문제를 처리해야 함
- 장점
- 메모리 효율적: 프로세스 내 메모리를 공유하므로 메모리 사용량이 적음
- 빠른 컨텍스트 스위칭: 스레드 간 전환이 빠름
- I/O작업에 유리: 비동기 작업, 네트워크 요청 등에서 성능 향상
- 단점
- 스레드 안전 문제: 공유 자원을 사용할 때 동기화가 필요
- 데드락 위험: 여러 스레드가 자원을 점유하고 대기하는 상황 발생 가능
- 사용 사례: 웹 서버, 게임 서버와 같이 동시에 많은 요청을 처리해야하는 시스템
멀티 프로세싱
- 여러 개의 프로세스를 병렬로 실행하는 방식
- 각 프로세스는 독립적인 메모리 공간을 사용하며 서로 간섭하지 않음
- 장점
- 안정성: 한 프로세스가 실패해도 다른 프로세스에 영향을 주지 않음
- 병렬 처리: 멀티코어 CPU에서 각 프로세스를 병렬로 실행하여 CPU 활용률 극대화
- 단점
- 높은 메모리 사용량: 프로세스마다 메모리를 따로 할당받아야 함
- 느린 프로세스 생성: 프로세스 간 컨텍스트 스위칭이 느림
- 프로세스 간 통신비용(IPC): 프로세스 간 데이터 공유가 복잡하고 비용이 큼
- 사용 사례: 마이크로서비스 아키텍처, 데이터 분석, 대규모 백엔드 시스템 등 독립적인 작업 단위로 나눌 수 있는 경우
멀티 스레딩 | 멀티 프로세싱 | |
메모리 사용 | 메모리를 공유하여 효율적 | 각 프로세스마다 메모리 공간을 할당 |
컨텍스트 스위칭 속도 | 빠름 | 상대적으로 느림 |
안정성 | 한 스레드의 오류가 프로세스 전체에 영향을 줄 수 있음 | 한 프로세스의 오류가 다른 프로세스에 영향을 주지 않음 |
데이터 공유 | 동일 프로세스 내에서 공유 메모리를 사용하여 쉽게 데이터 교환 | 프로세스 간 통신(IPC)을 통해 데이터 공유 필요 |
사용 사례 | 웹 서버, 게임 서버, 비동기 작업 | 마이크로 서비스, 분산 처리 시스템, 시스템 분석 |
728x90
반응형