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

Hα ყҽσɳɠ·2020년 4월 17일
4

Operating system

목록 보기
4/10

✔️ 멀티 프로세싱 (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)을 구현해야 하여, 멀테 스레딩에 비해 운영체제에게 부담을 줄 수 있다.

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

profile
𝑯𝒐𝒏𝒆𝒔𝒕𝒚 𝑰𝒏𝒕𝒆𝒈𝒓𝒊𝒕𝒚 𝑬𝒙𝒄𝒆𝒍𝒍𝒆𝒏𝒄𝒆

0개의 댓글