멀티 프로세싱, 멀티 스레딩, 멀티 프로그래밍

지명근·2021년 2월 14일
0

전공공부

목록 보기
7/9
post-thumbnail

개요

이번 글에서는 멀티 프로세싱, 멀티 스레딩, 멀티 프로그래밍에 대해 알아보고,
멀티 프로세싱과 스레딩을 비교해보았다.

멀티 프로세싱

멀티 프로세싱은 다수의 프로세서가 서로 협력적으로 일을 처리하는 것을 의미한다.
멀티 프로세싱에서, 시스템의 속도를 향상시키기 위해서는 CPU를 추가하여야 한다.
멀티 프로세싱은 하나 이상의 프로세서가 서로 협력하여 병렬적으로 일을 동시에 처리하는 것이다.

자원 공유

멀티 프로세싱에서는, 부모-자식 관계라도 프로세스는 자신만의 고유한 메모리 영역을 가지게 된다.

분류

멀티 프로세싱은 대칭과 비대칭으로 분류된다.

대칭 멀티 프로세싱(Symmetric Multiprocessing)

마스터-슬레이브 관계가 없으며, 모든 프로세서는 공유 메모리를 사용하여 통신한다.
공통 준비 대기열에서 프로세스를 실행하기 시작하며, 스케쥴러는 두 프로세서가 동일한 프로세스를 실행하지 않도록 한다.

장점

적절한 로드 밸런싱, 뛰어난 내결함성 및 CPU 병목 현상을 줄여준다.

단점

메모리가 모든 프로세서에서 공유되므로 복잡하며, 프로세서에 장애가 발생하면 시스템의 컴퓨팅 용량이 감소할 수 있다.

비대칭 멀티 프로세싱(Asymmetric Multiprocessing)

프로세스 간에 마스터-슬레이브 관계를 가진다.
시스템의 데이터 구조를 제어하는 마스터 프로세서가 존재하며, 나머지 슬레이브 프로세서를 제어한다.
마스터 프로세서는 프로세스를 슬레이브 프로세서에 할당하거나, 미리 정의된 작업을 수행할 수 있다.
마스터 프로세서는 데이터 구조를 제어한다. 프로세스 스케쥴링, I/O 처리 및 기타 시스템 활동은 마스터 프로세서에 의해 제어된다.

만약 마스터 프로세서에 문제가 발생하면, 슬레이브 프로세서 중 하나를 마스터 프로세서로 만들어 실행을 계속한다.

장점

데이터 구조와 시스템의 모든 활동을 제어하는 프로세서가 하나 뿐이므로, 대칭 멀티 프로세싱에 비해 간단하다.

대칭 멀티 프로세싱 vs 비대칭 멀티 프로세싱

둘의 차이점으로는, 대칭 멀티 프로세싱에서는 모든 프로세서가 OS에서 작업을 실행하는 것이라는 점이다.
비대칭 멀티 프로세싱에서는 마스터 프로세서만 OS에서 작업을 실행한다.

다중 프로세서는 여러 프로세스를 동시에 실행시킬 수 있으므로 시스템의 속도를 향상시킨다.
대칭 멀티 프로세싱은 복잡하지만, 모든 프로세서간에 데이터 구조가 공유되므로 동기화 작업이 필요하다.
비대칭 멀티 프로세싱은 간단하며, 마스터 프로세스만이 데이터 구조에 엑세스할 수 있다.

멀티 스레딩

멀티 스레딩은 시스템의 속도를 향상시키기 위해 프로세스가 여러 스레드를 생성하는 것을 의미한다.
멀티 스레딩에서, 프로세스의 여러 스레드가 동시에 실행되며, 스레드의 생성은 경제적으로 수행된다.

자원 공유

생성된 여러 스레드는 하나의 공유 메모리를 가지게 된다. 때문에 스레드간 정보를 주고 받는데 오버헤드가 많이 없는 편이다.

멀티 프로세싱 vs 멀티 스레딩

  • 성능 향상
    멀티 프로세싱은 CPU를 추가하여 컴퓨팅 성능을 향상
    멀티 스레딩은 프로세스의 스레드를 여러 개 만들어 컴퓨팅 성능을 향상

  • 실행
    멀티 프로세싱은 여러 프로세스가 동시에 실행
    멀티 스레딩은 단일 프로세스의 여러 스레드가 동시에 실행

  • 생성
    멀티 프로세싱에서 프로세스 생성은 시간-소모적(time-consuming)
    멀티 스레딩의 스레드 생성은 경제적

  • 자원
    멀티 프로세싱에서, 모든 프로세스는 분리된 주소 공간을 가짐
    멀티 스레딩에서, 모든 스레드는 일반 주소 공간을 공유

멀티 프로그래밍

멀티 프로그래밍은 프로세서가 입/출력 작업의 응답을 대기할 동안 다른 프로세스를 수행할 수 있도록 하는 것을 의미한다.

컴퓨터에서 입출력은 프로세서에 비해 아주 느리다. 초기의 컴퓨터는 프로세서의 처리속도와 입출력 속도의 차이가 커서 입출력이 완료되기 까지 프로세서가 대기하여야 했다. 이는 곧 자원 낭비로 이어지게 된다.

이후 모든 운영체제에서 멀티 프로그래밍을 지원하게 되어 잘 쓰이지 않는 용어가 되었다.

참고

https://www.geeksforgeeks.org/difference-between-multiprocessing-and-multithreading/
https://jwprogramming.tistory.com/19
https://you9010.tistory.com/136
https://ko.gadget-info.com/difference-between-symmetric
https://velog.io/@chy0428/OS-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1

profile
백엔드 지향

0개의 댓글