멀티 프로세싱, 멀티 스레딩, 멀티 프로그래밍, 멀티 태스킹에 대해서 알아보자

개발하는 곰댕이·2021년 6월 29일
0

OS

목록 보기
2/5
post-custom-banner

1. 멀티 프로세싱

멀티 프로세싱은 하드웨어 관점으로 본다면 다수의 프로세서(CPU 등)가 동시에 작업을 처리하는 것을 말합니다.
이해하기 쉽게 사진으로 본다면

이런 식으로 두개 이상의 프로세서가 하나 이상의 작업을 동시에 처리하는 걸 멀티 프로세싱이라고 합니다.

그리고 프로세서는 주변 장치, 대용량 저장장치, 전원 공급장치를 서로 공유하기 때문에 여러개의 단일 프로세싱보다 비용이 더 저렴하고 만약 하나의 프로세서가 고장이 나더라도 다른 프로세서에서 해당 작업을 나눠서 처리합니다.
그렇기 때문에 작업이 중지되지 않고 단순히 속도가 느려지기만 하는 장점이 있습니다.

2. 멀티 태스킹

멀티 태스킹은 소프트웨어적으로 본 멀티 프로세싱이며 하나의 작업을 운영체제의 스케쥴링에 따라 번갈아가면서 수행하는 것을 말합니다.
이렇게 실행하고 있는 작업을 바꾸는 걸 Context swiching이라고 합니다.
이 작업은 아주 빠르게 동작되기 때문에 우리는 많은 작업들이 동시에 처리된다고 생각하는 것 입니다.

멀티 태스킹에 사용되는 스케쥴링에는 다음과 같은 방법들이 있습니다.

  • 멀티 프로그래밍 방식
  • 시분할 방식
  • 실시간 시스템 방식

3. 멀티 프로그래밍

멀티 프로그래밍은 멀티 태스킹과 비슷하지만 다릅니다.
멀티 태스킹은 운영체제의 스케쥴링에 따라서 작업을 바꾸게 되지만 멀티 프로그래밍은 특정 작업을 처리하다가 대기를 해야하는 상황이 발생했을 때 낭비되는 자원을 줄이기 위해서 다른 작업을 하는 것을 말합니다.
예를 들어서 A라는 작업을 하고 있는데 입력을 대기받아야하는 상황이 있는데 계속 대기하고 있는다면 자원의 낭비가 심해질테니 입력을 받을 동안 B라는 작업을 하는 것 입니다.

4. 멀티 스레딩

멀티 스레딩은 하나의 프로세스 내에서 두 개 이상의 스레드를 사용하는 방식을 말합니다.
여러개의 프로세스를 이용하는 것 말고 왜 이 방식을 사용할까요?

첫 번째로 스레드는 프로세스 내의 자원을 공유합니다. 그렇기 때문에 여러개의 프로세스를 사용하는 것 보다 자원의 낭비가 적습니다.
두 번째는 스레드가 자원을 공유하기 때문에 별도의 작업 없이 자원을 공유할 수 있습니다.
세 번째는 자원을 교환할 때 캐시 메모리를 비울 필요가 없기 때문에 속도가 빠릅니다.
이런 장점들 때문에 멀티 스레딩을 사용합니다.

하지만 이런 멀티 스레딩에도 치명적인 단점이 있습니다.

하나의 스레드에서 문제가 발생하면 다른 스레드에도 영향을 끼칠 수 있습니다.
그리고 공유 자원에 한꺼번에 접근해서 작업을 하면 문제가 발생할 수 있기 때문에 동기화 작업이 필수적입니다.

post-custom-banner

0개의 댓글