본문 바로가기

Linux

[Linux] Multi Tasking와 Multi Processing

Multi Tasking

단일 프로그램 실행

예를 들어, 연산을 처리하는 CPU 코어를 하나라고 가정한다. 이때, 음악 프로그램으로 노래를 들으면서 워드 프로그램을 사용하면 어떻게 되나? 음악 프로그램을 종료된 이후에 워드 프로그램으로 문서 작업을 할수 있다.

 

프로그램의 실행은 프로그램을 구성하는 코드를 순서대로 CPU가 연산하는 것이다. 앞서 가정했듯이 CPU 코어가 하나라면, 한번에 하나의 프로그램의 코드를 실행할수 있다. 

 

이러한 문제점을 해결하기 위해서, 하나의 CPU 코어로 여러 프로그램들을 동시에 실행하는 multi tasking 기술이 등장했다.

 

Multi Tasking이란?

컴퓨터 시스템에서 하나의 코어로 동시에 여러 작업(프로그램)을 수행하는 능력을 Multi Tasking이라 한다. 다만, 동시에 여러 작업을 하는 것처럼 보이는 것이다.

 

현대의 CPU는 초당 수십억번 이상의 연산을 수행한다. 이렇게 매우 빠르게 두 프로그램의 코드를 번갈아가면서 연산한다면 사람은 그 차이를 느끼지 못하고 동시에 실행되는지 알것이다. (대략 0.01초 단위로 돌아가면서 실행한다.)

 

이 방식은 CPU 코어로 프로그램 A와 프로그램 B를 실행시킨다면, 프로그램 A의 코드를 0.01초 정도 실행하고 프로그램 B의 코드를 0.01초 정도 실행하는 것을 반복하는 것이다. 이렇게 각 프로그램의 실행 시간을 분할하여 마치 동시에 실행되는 것처럼 하는 기법을 Time Sharing 기법이라 한다. 

 

정확하게는 CPU에 어떤 프로그램이 얼마만큼 실행될지는 OS가 결정하는데 이를 스케줄링(Scheduling)이라 한다. 이때 단순히 시간만으로 작업을 분할하지 않고, CPU를 최대한 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용한다. 자세한 설명은 Scheduling and Context Switching에 기재되어 있다.


Multi Processing

Multi Processing이란?

Multi Processing은 컴퓨터 시스템에서 2개 이상의 CPU 코어를 사용하여, 실제로 여러 작업을 동시에 처리하는것이다. 

 

CPU는 '명령어를 실행하는 부품'이다. CPU 내에는 실제 연산을 처리하는 코어가 있다. 옛날에는 CPU가 코어 자체였지만, 현대 CPU는 '명령어를 실행하는 부품'이 두개 이상이다. 이 부품에는 ALU, Controll Unit, 여러 Register 등이 있다. CPU가 2코어라면, 명령어를 실행하는 부품들을 2배로 늘린것이다. 그래서 2코어는 두 프로그램의 명령어를 정확히 동시에 처리가 가능하다. 

 

물론, 코어 2개로 multi tasking하여 2개보다 더 많은 수의 프로그램을 번갈아가면서 실행이 가능하다. 따라서 Multi Processing를 사용하면 하나의 코어를 사용하는 시스템보다 동시에 더 많은 작업을 처리할수 있다.

 

Multi Tasking과 Multi Processing 차이

Multi Tasking은 운영체제 소프트웨어의 관점이고 Multi Processing은 하드웨어 장비의 관점이다.

  • Multi Tasking
    • 단일 CPU로 여러 작업을 동시에 수행하는 것처럼 보이게 하는 것
    • 소프트웨어 기반으로 OS의 scheduling algorithms를 통해 분할하여 번갈아가며 작업 할당
    • 현대 운영체제에서 애플리케이션이 동싱 실행되는 환경
  • Multi Processing
    • 다중 코어를 사용하여 동시에 여러 작업을 수행
    • 하드웨어 기반으로 성능 향상
    • 다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템

'Linux' 카테고리의 다른 글

[Linux] Host와 Hosting이란?  (1) 2024.09.30
[Linux] Scheduling과 Context Switching  (2) 2024.09.11
[Linux] 리눅스의 파일 I/O 자원 관리  (0) 2024.07.23