--목차--
1. Multi Process?
2. Multi Thread?
3. Multi Process vs Multi Thread
--------
1. Multi Process?
1) 정의 : 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)을 처리하도록 하는 것.
2) 장점
- 자식 프로세스 중 하나에 문제가 발생하는 경우, 해당 프로세스만 죽는다. (다른 영향이 확산되지 않음.)
3) 단점
- Context Switching Overhead
- Context Switching 과정에서 오버헤드 발생. (캐쉬 메모리 초기화 필요. 다시 캐쉬 정보를 불러와야 함.)
- IPC 통신 기법
- 프로세스는 독립된 메모리 영역을 할당받아서 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.
4) Context Switching?
4-1) 정의 : CPU에서 여러 프로세스를 돌아가면서 사용해 작업을 처리하는 과정.
= 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태(Context)를 보관, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태 복구.
2. Multi Thread
1) 정의 : 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것. (ex: 웹 서버)
2) 장점
시스템 자원 소모 감소(자원의 효율성 증대)
- System Call 감소(프로세스를 생성하여 자원을 할당하는 과정 감소)
시스템 처리량 증가(처리 비용 감소)
- 스레드 사이 작업량이 작아 Context Switching이 빠름. (데이터 주고 받는 것이 간소화 + 자원 소모 감소)
간단한 통신 방법으로 프로그램 응답 시간 단축
- 스레드는 프로세스 내 Stack 제외 모든 메모리를 공유해 통신의 부담이 적음.
3) 단점
- 설계가 중요.
- 디버깅 까다로움
- 단일 프로세스 시스템의 경우 효과를 기대하기 어려움.
- 다른 프로세스에서 스레드 제어 불가.(프로세스 밖에서 스레드 각각 제어 불가)
- 자원 공유 문제 발생(동기화)
- 하나의 스레드 문제 발생시 전체 프로세스가 영향 받음.
3. Multi Process vs Multi Thread
1) 요약 : 프로그램 여러 개 실행 vs 하나 프로그램 안에서 여러개의 작업
2) 이유 (Why Multi Threading?)
자원의 효율성 증대
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리 가능.
- (Context Switching이 CPU레지스터 교체를 비롯해 RAM-CPU 사이 캐쉬 메모리 데이터까지 초기화되므로 오버헤드가 크다.)
- 스레드는 프로세스 내 메모리를 공유해 독립적인 프로세스와 달리 스레드 간 데이터를 주고받는 것이 간단해지고 시스템 자원 소모 감소.
처리 비용 감소 및 응답 시간 단축
- IPC보다 스레드 간 통신 비용이 적으므로 작업간 통신 부담 감소.
(Thread = Stack 제외 모든 메모리 공유)
- 프로세스 간 전환 속도 < 스레드 전환 속도(Stack만 처리해서)
3) 주의점
동기화 문제
- 스레드 간 자원 공유는 전역 변수(Data Segment)를 이용하므로 함께 상용할 때 충돌 발생.
'이론 공부 내용 정리' 카테고리의 다른 글
| [CS스터디] 스케줄러 (0) | 2022.11.07 |
|---|---|
| [CS 스터디] DNS Round Robin (0) | 2022.10.31 |
| [CS 스터디] 프로세스와 스레드 차이 (0) | 2022.10.30 |
| c# 단위테스트 진행하기(xUnit) (0) | 2022.07.28 |
| OS-가상메모리2(요구 페이징, 페이지 부재) (0) | 2021.07.25 |