본문 바로가기

과학기술

병렬처리를 위한 멀티 프로그래밍, 멀티 태스킹, 멀티쓰레드

✔️ 멀티 프로세싱 (Multi-processing)

멀티 프로세싱은 다수의 프로세서가 서로 협력적으로 일을 처리하는 것을 의미한다.
컴퓨터는 1대인데 프로세서(CPU)는 2개 이상이다. 보통, 멀티코어시스템(multi-core system)을 포함한다.


✔️ 멀티 프로그래밍 (Multi-programming)

초기의 컴퓨터에서는 하나의 프로그램이 메모리에 올라가면 하나의 프로그램만 CPU가 처리를 진행할 수 있었다. 이 과정에서 프로세서의 처리 속도와 입출력 속도 간의 차이로 인해, 입출력이 완료될 때까지 프로세서는 idle한 상태가 된다. 따라서 이는 프로세서의 자원 낭비로 이루어진다.

프로세서가 입출력 작업의 종료를 대기할 동안 하나의 프로세서에서 다른 프로그램을 수행할 수 있도록 하는 것이 멀티프로그래밍이다.


✔️ 멀티 태스킹 (Multi-tasking)

Task란 운영체제에서 처리하는 작업의 단위 또는 정해진 일을 수행하기 위한 명령어 집합을 뜻하는데 (process 보다 확장된 개념), 멀티 태스킹은 task를 OS의 스케쥴링에 의해 task를 번갈아가며 수행하는 것을 의미한다.
여러개의 task를 자주 번갈아가며 수행하다보니 사용자는 동시에 여러 task가 수행되고 있다고 느끼게 된다.


🔼 CPU scheduler 열일

❓ 멀티프로그래밍 vs 멀티태스킹

앞에서 말한 멀티 프로그래밍은 프로세서의 자원낭비를 막기 위함이고, 멀티태스킹은 정해진 시간동안 각각의 task를 번갈아가며 수행하는 것을 의미한다.


✔️ 멀티 스레딩 (Multi-threading)

멀티 스레딩은 하나의 프로세스를 여러 개의 실행 단위이며, 여러 개의 스레드끼리 자원을 공유하는 것을 뜻한다.

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

프로세스와 스레드의 개념을 잘 이해하면 쉽게 차이점을 알 수 있다.
- 프로세스: 실행될 때 OS로부터 자원을 할당받아 실행되는 프로그램
- 스레드: 한 프로세스 내에서 동작되는 여러 실행의 흐름

멀티프로세싱은 fork를 통해 프로세스를 다수개로 늘려 여러 개의 프로그램들을 병렬로 처리하며, 멀티스레딩은 하나의 프로그램 안에서 병렬 처리를 한다.
멀티 스레딩은 멀티 프로세싱보다 훨씬 적은 자원을 소모하기 때문에 더 효율적이나 안정성 측면에서는 멀티 프로세싱이 안정적이다.


❓ 멀티 스레딩 vs 멀티 태스킹
멀티 스레딩은 스레드들끼리의 자원 공유가 가능하며, 프로그래밍을 통해 구현 가능하나, 멀티 태스킹은 OS에서 지원하는 것으로 독립된 메모리를 가지며, 서로 간의 자원 공유가 이루어지지 않는다.
자원 공유를 위해 별도의 IPC (Inter-Process Communication)을 구현해야 하여, 멀테 스레딩에 비해 운영체제에게 부담을 줄 수 있다.

❓그럼 멀티 스레딩이 더 좋은 것이 아닌가?
꼭 그렇지만은 않다. 멀티 태스킹은 독립된 메모리를 가지고 있기 때문에 독립된 수행이 가능하다는 이점이 있다. 따라서 각각 적절하게 사용해야 한다.

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

 

[OS] 멀티프로세싱, 멀티프로그래밍, 멀티태스킹, 멀티스레딩

멀티 프로세싱은 다수의 프로세서가 서로 협력적으로 일을 처리하는 것을 의미한다. 컴퓨터는 1대인데 프로세서(CPU)는 2개 이상이다. 보통, 멀티코어시스템(multi-core system)을 포함한다.초기의 컴

velog.io


아직 헷갈리면 다른 사람의 설명을 한 번 더 보자

 

멀티 프로세싱(Multi-processing)

멀티 프로세싱은 다수의 프로세서가 협력적으로 일을 처리하는 것을 의미한다. 여기서 주의해야 할 점은 프로세스가 아니라 프로세서이다.

보통 하나의 프로세서(CPU)가 하나의 작업을 맡지만 멀티 프로세싱은 다수의 프로세서가 다수의 작업을 함께 처리하는 것을 의미한다.

멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프로세서가 진행 중인 작업은 다른 프로세서에서 수행하고 있기 때문에 작업이 정지되지 않는다.

또한, 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용한다면 각 데이터를 각 프로세서에게 할당할 필요 없이 하나의 공간에 데이터를 저장한 후 이를 공유하여 사용하도록 한다면 비용을 절약할 수 있다.

 

 

멀티 프로그래밍(Multi-programming)

멀티 프로그래밍은 하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법을 의미한다.

초기 컴퓨터는 하나의 프로세서가 하나의 프로세스만 처리할 수 있도록 설계되었다. 하지만 하나의 프로세스를 처리하는 과정에서 프로세서의 처리 속도와 입출력 속도 간의 차이로 인해 입출력 처리가 완료될 때까지 기다리는 비효율적인 상황이 발생하게 된다.

멀티 프로그래밍은 입출력이 완료될 때까지 기다리는 시간을 버리지 말고 다른 프로세스를 처리할 수 있도록 해주는 것이다.

 

멀티 태스킹(Multi-tasking)

멀티 태스킹은 다수의 작업(Task)을 운영체제의 스케줄링에 의해 번갈아 가며 수행되도록 해주는 것을 의미한다.

프로세서는 특정 순간에 하나의 작업만 수행할 수 있다. 하지만 우리는 컴퓨터를 사용할 때 인터넷도 사용하고 카카오톡도 사용하고 게임도 하는 등 다양한 작업을 동시에 사용할 수 있다.

이는 운영체제가 다수의 작업을 스케줄링하여 우리가 느끼지 못하는 시간마다 작업을 번갈아가며 수행하여 우리 눈에는 동시에 수행되는 것처럼 보이게 해주기 때문이다.

멀티 태스킹의 스케줄링 방식은 멀티 프로그래밍 방식(Multi-programming), 시분할 방식(Time-sharing), 실시간 시스템 방식(Real-time)을 사용하여 수행된다.

멀티 프로그래밍은 위에서 언급하였고 시분할 방식은 CPU의 전체 사용 시간을 작은 작업 시간량으로 분할하여 그 시간량 동안 작업에게 번갈아가며 CPU를 할당해 주는 방식을 의미한다.

실시간 시스템 방식은 말 그대로 실시간으로 처리해 주는 것을 의미한다.

멀티 스레딩(Multi-threading)

멀티 스레딩은 하나의 프로세스를 다수의 스레드로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 의미한다.

즉, 하나의 프로세스가 동시에 여러 개의 스레드를 수행할 수 있도록 해주는 것이다.

하나의 프로세스에는 하나 이상의 스레드가 존재할 수 있다. 프로세스를 생성하는 비용보다 스레드를 생성하는 비용이 더 저렴하기 때문에 프로세스에 다수의 스레드를 생성하여 병렬처리하는 것이다.

또한, 프로세스는 데이터, 힙, 스택 영역을 서로 공유하지 않지만 스레드는 스택 영역을 제외한 데이터, 힙 영역을 서로 공유하기 때문에 메모리 부분에서도 훨씬 효율적이다.

[ Reference ]

· https://doorbw.tistory.com/26

 

운영체제 #1_ 스레드와 프로세스, 멀티프로그래밍,멀티태스킹,멀티스레딩,멀티프로세싱

안녕하세요. 문범우입니다. 이번 포스팅에서는 스레드(Thread) 와 프로세스(Process) 에 대해서 알아보겠습니다. 스레드에 대해 좀 더 명확히 이해하기 위해서는 먼저 프로세스에 대한 개념이 필요

doorbw.tistory.com

https://sorjfkrh5078.tistory.com/56

 

멀티 프로세싱 vs 멀티 프로그래밍 vs 멀티 태스킹 vs 멀티 스레딩

운영체제를 공부하다 보면 멀티(Multi)가 붙은 용어들이 많다는 것을 알 수 있다. ​대표적으로 멀티 프로세싱(Multi-processing), 멀티 프로그래밍(Multi-programming), 멀티 태스킹(Multi-tasking), 멀티 스레딩

sorjfkrh5078.tistory.com