카테고리 없음

멀티태스킹과 멀티프로세싱

JUNGKEUNG 2024. 8. 3. 21:23
반응형

멀티태스킹과 멀티프로세싱


멀티스레드에 대해서 제대로 이해하려면 먼저 멀티태스킹과 프로레스 같은 운영체제의 기념 개념들에 대해서 알아야한다. 멀티스레드를 이해하기 위한 목적으로 최대한 단순한 핵심만 알아보자.

 

 

단일 프로그램 실행


만약 프로그램을 2개 이상 동시에 실행한다고 가정했을때. 예를 들어서 음악 프로그램을 통해 음악을 들으면서, 동시에 워드 프로그램을 통해 문서를 작성하는 것이다. 여기서 연산을 처리할 수 있는 CPU 코어가 1개만 있다고 가정 해보자

 

위의 그림 처럼 프로그램의 실행이란 프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)하는 일이다. CPU코어는 하나로 가정하므로, 한 번에 하나의 프로그램 코드만 실행할 수 있다. 이때, 하나의 프로그램 안에 있는 코드를 모두 후에야 다른 프로그램의 코드를 실행할 수 있다면?? 실제로 초창기의 컴퓨터는 이 처럼 한 번에 하나의 프로글매나 실행했다. 

이를 해결하기 위해 하나의 CPU 코어로 여러 프로그램을 동시에 실행하는 '멀티 태스킹' 기술이 등장했다.

 

 

멀티태스킹


순서대로 촬영한 연속된 사진을 빠르게 교차해서 보여줄 경우 사람은 이를 움직이는 영상으로 인지한다. 애니메이션이 바로 이 원리를 이용한다. 예를 들어 우리가 애니메이션을 볼 때 1초에 30 ~ 60장의 사진이 지나간다. 이 정도 속도면 사람은 사진이 아니라 연속해서 움직이는 영상으로 인지한다. 현대의 CPU는 초당 수십억 번 이상의 연산을 수행한다. 쉽게 이야기해서 초당 수십억 장의 사진이 빠르게 교차되는 것이다. 만약 CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행한다면, 사람이 느낄 때 두 프로그램이 동시에 실행되는 것 처럼 느껴질 것이다. (대략 0.01초(10ms) 단위로 돌아가며 실행한다.)

 

이 방식은 CPU 코어가 프로그램A의 코드를 0.001초 정도 수행하다가 잠시 멈추고, 프로그램B의 코드를 0.01초 정도 수행한다. 그리고 다시 프로그램A의 이전에 실행중인 코드로 돌아가서 0.01초 정도 코드를 수행하는 방식으로 반복 동작한다.

각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할(Time Sharing, 시간 공유) 기법이라 한다. 이런 방식을 사용하면 CPU 코어가 하나만 잇어도 여러 프로그램이 동시에 실행되는 것 처럼 느낄 수 있다.

 

 

더보기

참고 : CPU에 어떤 프로그램이 얼마만큼 실행될지는 운영체제가 결정하는데 이것을 스케줄링(Scheduling)이라 한다. 이때 단순히 시간으로만 작업을 분할하지 않고, CPU르 최대한 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용한다. 우리는 운영체제가 스케줄링을 수행하고, CPU를 최대한 사용하면서 작어비 골고루 수행될 수 있게 최적화한다는 정도로 이해하면 충분하다.

 

 

멀티 프로세싱


멀티 프로세싱은 프로그램은 A, B, C 3가지이고, CPU 코언느 2개이다.

 

더보기

참고 : CPU 안에는 실제 연산을 처리할 수 있는 코어라는 것이 있다. 과거에는 하나의 CPU 안에 보통 하나의 코어만 들어있었다. 그래서 CPU와 코어를 따로 분리해서 이야기하지 않았다. 최근에는 하나의 CPU안에 보통 2개이상의 코어가 들어 있다.

 

  • CPU 코어가 2개이므로 물리적으로 도잇에 2개의 프로그램을 처리할 수 있다.
  • 여기서 CPU 코어가 먼저 프로그램A 와 프로그램B를 실행한다.

 

  • CPU 코어들이 프로그램A 와 프로그램B를 실행하다가 잠시 멈추고, 프로그램C와 프로그램 A를 수행한다. 이런식으로 코어가 2개이여도 2개보다 더 많은 프로그램을 실행할 수 있다.

 

멀티프로세싱(Multiprocessing)은 컴퓨터 시스템에서 둘 이상의 프로세서(CPU 코어)를 사용하여 여러 작업을 동시 에 처리하는 기술을 의미한다. 멀티프로세싱 시스템은 하나의 CPU 코어만을 사용하는 시스템보다 동시에 더 많은 작업 을 처리할 수 있다.

 

 

멀티프로세싱 vs. 멀티태스킹


  • 둘 다 시분할 시스템 방식으로 CPU 자원을 짦은 텀으로 받아 수행하는 방식이다.
  • 멀티 태스킹은 단일 CPU 단위로 이루어져 있다.
  • 멀티 프로세싱은 다중 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화시킨다는 차이가 있다. 물론 CPU마다 여러 프로세스를 수행하게 할 수 있다.

 

 

Sciprt


 

멀티 태스킹은 단일 CPU로 시분할 시스템 방식으로 프로그램을 동작하는 방식이지만, 

멀티프로세싱은 다중 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화 시킨다. 

 

 

 

참고자료


https://www.inflearn.com/course/lecture?courseSlug=%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B3%A0%EA%B8%89-1&unitId=232313&tab=curriculum