멀티 프로세스와 멀티 쓰레드의 차이
2021. 3. 8. 22:18ㆍ운영체제
다중 처리 시스템 (Multi-Processing System)
- CPU(=프로세스) 가 여러 개
- 여러 프로세스를 동시에 실행하는 것
- 프로세스간 통신을 하려면 (IPC:Inter Process Communication; 세마포어, 큐, 공유메모리)를 사용해야한다.
- 프로세서를 다른 프로세스로 전환하려면 문맥교환(Context Switching)을 해야한다.
문맥교환 (Context Switching)
- 이전 프로세스의 상태 레지스터의 내용을 보관하고 다음 프로세스의 레지스터들을 적재하는 과정
- 단순히 CPU 레지스터 교체 뿐 아니라 RAM과 CPU 사이의 캐시 메모리에 대한 데이터 까지 초기화 된다.
- 문맥교환은 모두 과부하(overhead)가 발생한다.
임계구역 (Critical Section)
- 둘 이상의 프로세스들이 동시에 접근할 수 없는 공유 자원을 이용하는 부분
- 임계구역에서는 한 순간 반드시 단 하나의 프로세스만 허용된다. (동시성제어)
- 읽기만 할 경우 - 여러 개가 동시에 접근 가능
- 읽기/쓰기 - 한 개의 프로세스만 접근 가능
상호배제 (Mutual Exclusion)
임계구역에서 프로세스가 수행중일 때, 달느 어떤 프로세스도 임계구역에 진입할 수 없다.
세마포어 (Semaphore)
- 다익스트라에 의해 제안됨
- 상호배제의 해결을 위한 동기 도구
- 세마포어는 플래그(0 또는 1)로 사용되는 음이 아닌 정수값을 갖는 변수
- P(Proberen) : 검사 (입구)
- V(Verhogen) : 증가 (출구)
- 2진 세마포어 : 0일 때 임계구역 내 프로세스 존재 / 1일 때 임계구역 비어있음
- 계수형 세마포어 : 세마포어 값에 의한 교착상태 발생할 수 있음 (ex. 식사하는 철학자 문제)
다중 쓰레드 시스템 (Multi Thread System)
- 쓰레드가 여러 개
- 단일 프로세스를 여러 쓰레드(실행단위)로 나누어 동시에 실행
- 쓰레드 별도 각각의 스택 영역을 갖고 스택을 제외한 모든 메모리(코드, 데이터, 힙 영역)을 공유한다.
멀티 프로세스와 멀티 쓰레드의 차이
멀티 프로세스 | 멀티 쓰레드 | |
장점 | 하나의 프로세스가 비정상 종료되더라도 다른 프로세스에 영향이 없음 멀티 쓰레드처럼 동기화 작업이 필요 없음 |
문맥교환에 소비되는 시간을 줄일 수 있음 (스택 영역만 문맥교환이 일어남) 자원을 공유하기 때문에 메모리 낭비를 줄임 |
단점 | 자원 소모, 메모리 낭비, 문맥교환으로 인한 비표율성 IPC 통신으로 인한 비용 발생 |
동기화 작업 필요 하나의 쓰레드가 비정상 종료될 경우, 다른 쓰레드도 종료될 수 있음 |
멀티 쓰레드를 지향하는 이유
(1) 자원의 효율성
- 프로세스 간 문맥교환시 오버헤드가 큼
(2) 처리비용 감소 및 응답시간 단축
- 별도의 IPC 통신에 대한 비용부담 감소
- 쓰레드간 문맥교환은 스택 영역만 처리되기 때문에 응답시간 단축
'운영체제' 카테고리의 다른 글
IPC의 종류와 특징 (0) | 2021.03.09 |
---|---|
세마포어와 뮤텍스 (0) | 2021.03.08 |
쓰레드 (Thread) (0) | 2021.03.08 |
운영체제 유형별 특징 (0) | 2021.03.08 |