멀티 프로세스와 멀티 쓰레드의 차이

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