멀티태스킹, 멀티프로그래밍, 멀티프로세싱, 멀티스레딩, 멀티코어프로그래밍의 차이



멀티태스킹, 멀티프로그래밍, 멀티프로세싱, 멀티스레딩, 멀티코어프로그래밍의 차이


멀티코어 프로그래밍(Multi-core programming) : 멀티코어 프로그래밍이란 하나의 작업을 위해 여러 개의 CPU 코어를 사용하기 위해 코드를 작성하는 작업을 말한다.
멀티 코어 사용 기법의 종류로는 멀티 프로세스 프로그래밍과 멀티 스레드 프로그래밍이 있다. 



멀티프로세싱(Multi-processing) :  멀티프로세싱은 한 개 이상의 컴퓨터 프로세서들이 협력하여 프로그램들을 처리하는 것이다. 멀티프로세싱은 서로 협력하여 작업을 하고 있는 두 대 이상의 컴퓨터 중 한 대에 프로그램을 동적으로 할당하는 것을 의미하거나, 또는 같은 프로그램을 동시에 병렬로 처리하고 있는 여러 대의 컴퓨터들을 가리키는 일반적인 용어이다.




멀티태스킹(Multi tasking) : 컴퓨터 프로그래밍에서, 태스크란 운영체계가 제어하는 프로그램의 기본 단위를 말한다. 운영체계를 설계할때, 태스크를 어떻게 정의하느냐에 따라, 단위 프로그램이란 전체 프로그램이 될 수도 있고, 또는 계속되는 프로그램의 호출이 될 수도 있다. 한 프로그램이 여러 개의 다른 유틸리티 프로그램들에게 요구를 할 수 있기 때문에, 유틸리티 프로그램들 또한 태스크(또는 서브 태스크)라고 간주할 수 있다. 오늘날 광범위하게 사용되는 대부분의 운영체계들이 멀티태스킹을 지원하는데, 이는 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있게 한다.

++ 태스크란 OS에서 처리하는 작업단위를 의미하는데 그 여러 작업 단위가 빠르게 처리되어 동시에 처리되는것처럼 보이는 것을 의미하며 Concurrent라는 특징을 생각하면 된다. 여기서 말하는 여러 작업 단위란 처리해야하는 여러 프로세스들의 명령어들을 쪼갠거라 생각하면 된다.


멀티스레딩(Multi threading) : 멀티 스레드 프로그래밍은 하나의 작업을 위해서 하나의 프로세스에서 여러 스레드를 생성하여 여러 CPU코어를 사용하기 위해 코드를 작성하는 작업을 말한다. 스레드는 하나의 프로세스의 힙 메모리 공간과 텍스트 메모리 공간을 공유하고 있기 때문에 서로 변수나 객체의 교환이 가능하다.



멀티프로그래밍 (Multi programming) : 멀티프로그래밍은 병렬처리의 초보적인 형태로서, 여러 개의 프로그램들이 단일 프로세서 상에서 동시에 실행되는 것이다. 그러나, 그 컴퓨터에는 오직 단한 개의 프로세서만이 존재하기 때문에, 진정한 의미로는 여러 개의 프로그램이 동시에 수행된다고 볼 수는 없다. 다만, 운영체계의 통제하에, 한 프로그램이 일부 수행되고 나서, 또다른 프로그램이 일부 수행되는 식으로 진행되는 것이다. 그러나, 사용자에게는 모든 프로그램이 마치 동시에 수행되는 것처럼 보인다.



출처