[CS - 운영체제(OS)] 프로세스(Process)와 스레드(Thread) 관련 개념 정리 (2) - 멀티 프로세싱, 멀티 태스킹, 멀티 스레드, 멀티 프로세스

SUN·2022년 10월 10일
0

Computer Science

목록 보기
7/11

이전 포스팅에 이어서 프로세스와 스레드 관련 개념을 정리하고자 한다.
이번에는 멀티 스레드, 멀티 프로세스 관련 개념을 정리하는데
멀티 프로세싱, 멀티 태스킹도 이것들과 헷갈리기 쉬워서 함께 공부하면서 정리하고자한다.

멀티 프로세싱

다수의 프로세서가 협력적으로 일을 처리하는 것이다.
즉, 여러개의 프로세서가 작업을 병렬적으로 수행하는 것이다.

장점

  1. 단일 프로세싱 보다 비용이 절약된다.

    • 프로세서가 주변장치, 대용량 저장 장치, 전원 공급 장치를 공유하고 있기 때문에
  2. 한 프로세서가 고장 나도 시스템의 속도만 느려진다.

종류

대칭형 멀티 프로세싱 (SMP, Symmetric Multi-processing)

운영체제와 메모리를 공유하는 여러 프로세서가 프로그램을 수행하는 것이다.
프로세서가 메모리 입출력 버스, 데이터 path를 공유하고 하나의 운영체제가 모든 프로세서를 관리한다.
자원들을 서로 공유하기 때문에 동기화가 필요하다.
각 프로세서는 운영 체제에서 작업을 실행한다.

비대칭형 멀티 프로세싱 (AMP, Asymmetric Multi-processing)

주 프로세서가 종속 프로세서들을 스케쥴하고 일을 할당한다.
주 프로세서가 전체 시스템을 통제하고 다른 프로세서들은 명령을 따르거나 미리 정해진 일을 수행한다.

자료 공유의 필요성을 감소시키므로 단순하다는 장점이 있다.
다른 Slave 프로세서들은 Master 프로세서가 작업을 할당할 때까지 기다려야 한다는 단점도 있다.


멀티 태스킹(Multi-tasking)

다수의 작업(Task)을 운영체제의 스케줄링에 의해 번갈아 가며 수행하는 방법이다.

프로세서는 특정 순간에 하나의 작업만 수행할 수 있지만 운영체제가 작업을 번갈아가면서
수행하도록 스케줄링하기 때문에 우리의 눈에는 동시에 수행되는 것처럼 보인다.


멀티 프로세스

여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것
프로세스 간의 통신을 하려면 IPC를 통해야 한다.

장점

  • 독립된 구조를 가져 안정성이 높다.
  • 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않는다.

단점

  • 독립된 메모리 영역을 가지기 때문에 작업량이 많을수록(Context Switching이 자주 일어날수록) 성능 저하가 발생할 수 있다.
  • Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행돼 오버헤드가 발생한다.

멀티 스레드

하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다.

장점

  • 프로세스 내 자원들과 메모리를 공유하기 때문에 통신 비용이 적다.
  • 스레드 사이에 작업량이 작아 Context Switching이 빠르다. (캐시 메모리를 비울 필요가 없다)
  • 힙 영역을 공유하기 때문에 데이터를 주고받을 수 있다.
  • 스레드간 Context Switching은 스택 영역만 처리되기 때문에 응답시간이 단축된다.

단점

  • 자원을 공유하기 때문에 병목현상, 데드락 등의 동기화 문제가 발생할 수 있다.
  • 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다.

멀티 스레드 vs 멀티 프로세스

이전 포스팅 스레드 vs 프로세스 부분 참고

멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠른 장점이 있지만,
동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료 될 위험을 갖고 있다.

멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높지만,
멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지하는 단점이 있다.

왜 Context Switching 시간에 차이가 날까

멀티 스레드 방식은 context switching 시 다른 영역을 다 공유하고 있기 때문에
stack 영역만 처리를 하면 돼서 멀티 프로세스에 비해 작업 부하가 적은 것이다.

반면에 멀티 프로세스 방식은 CPU 레지스터 뿐만 아니라
RAM과 CPU 사이의 캐시 메모리에 대한 데이터까지 초기화를 해야해서 오버헤드가 더 큰 것이다.


여기까지 정리하면 더 소개할 개념은 없을 것 같다!

참고자료

profile
개발자

0개의 댓글