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

멀티 태스킹과 멀티 프로세싱은 멀티 스레드를 이해하기 위해 필요한 기초 지식이다.
이에 대해 정리해보면서 앞으로 공부하게 될 자바의 스레드 고급 지식을 이해해보자.

CPU, 코어, 프로세서

CPU는 중앙처리장치라고 하며, 컴퓨터의 연산을 담당하는 핵심 부품이다.
코어는 이 CPU 안에 들어가있는 하드웨어 부품 중 하나로, 우리가 흔히 CPU가 연산을 처리한다고 했을 때, 실제 연산을 담당하는 녀석이다.

프로세서는 명령어를 처리하는 논리 회로를 뜻한다. 컴퓨터가 하는 모든 일을 총괄하는 CPU를
보조하는 역할이다. 하지만 현재는 CPU와 프로세서를 동일한 수준으로 언급하고 있다.
즉, CPU랑 프로세서를 같은 뜻으로 간주하자.

참고) https://whxogus215.tistory.com/82

멀티 태스킹

앞서, 코어는 하나의 CPU 안에 들어가 있는 작은 부품으로 실제 컴퓨터 연산을 처리하는
장치라고 하였다. 그렇다면 하나의 코어는 하나의 프로그램 명령어만 실행할 수 있는걸까?

만약, 우리가 유튜브 뮤직으로 음악을 들으면서 코딩을 한다면, 하나의 코어만으로 과연 가능할까?
프로그램을 실행한다는 것은 코어가 특정 프로그램의 코드를 실행하는 것을 의미한다.
논리적으로 연산을 수행하는 주체는 코어인데, 이것이 고작 한 개 뿐이므로 우리는 유튜브 뮤직과 코딩 에디터 중 하나의 프로그램만 실행할 수 있을 것이다.

HuL4d31.png|529

etc-image-1

etc-image-2

해당 그림처럼 코어는 각 프로그램의 코드를 번갈아가면서 실행하게 된다.
그러나 CPU(코어)의 좋은 성능으로 인해 코드를 번갈아 수행하는 간격이 매우 짧다. (약 0.01초)
따라서 우리는 하나의 코어 만으로 여러 작업을 동시에 실행하는 것처럼 느낄 수 있다.

각 프로그램(유튜브 뮤직, 인텔리제이)에 할당된 한 개의 코드 블럭의 소요 시간을 1초라고 한다면,
각 프로그램의 실행시간은 각각 4초이다(블럭이 4개이므로). 이 때, 코어는 각 프로그램의
코드를 번갈아가면서 수행하게 되는데, 이는 프로그램의 시간을 분할하여 여러 프로그램을
동시에 실행하는 것처럼 만든다. 이를 시분할 기법이라고 하며, 동시에 여러 작업을 수행하는 것처럼 보이게 만드는 위와 같은 프로세스 처리 능력을 멀티 태스킹이라고 한다.

멀티 태스킹은 소프트웨어 관점에서 바라본 개념이다. 즉, 하나의 코어만으로
여러 프로그램을 실행할 수 있도록 하는 멀티 태스킹을 구현하기 위한 운영체제라는 소프트웨어의
역할이 크기 때문이다. 다시 말하면, 1개의 코어라는 하드웨어 자원을 활용해 여러 프로그램을
실행하게 하는 것은 하드웨어의 역량이 아닌 소프트웨어의 역량인 것이다.

멀티 프로세싱

그렇다면, 멀티 프로세싱은 멀티 태스킹과 뭐가 다른 걸까?
앞서, 멀티 태스킹은 소프트웨어 관점에서 바라본 개념이라고 했다. 멀티 프로세싱은
하드웨어 관점에서 바라본 개념이다. 이번에 나올 그림은 하나의 코어가 아닌 두 개의 코어가 활용된다. 현대 컴퓨터에서는 싱글 코어가 아니며, 다중 코어를 활용한다.

9GGLTKQ.png|560

vK2SjTO.png|557

이번엔 두 개의 코어가 각각 다른 프로그램의 코드를 동시에 실행하고 있다.
이는 앞서 살펴본 멀티 태스킹처럼 사용자에게 눈속임하는 것이 아니라
물리적으로 동시에 실행되고 있는 것이다.

물론, 각 코어는 다른 프로그램의 소스코드를 이어서 실행할 수 있다.
그림을 통해 알 수 있듯이, 멀티 프로세싱은 하나의 코어만을 사용할 때보다 더 많은
작업을 빠르게 처리할 수 있다.

이제 멀티 프로세싱이 하드웨어 관점에서 바라본 개념인 이유를 알 수 있을 것이다.
앞서, 멀티 태스킹은 하나의 코어로 여러 프로그램을 실행하게끔 보일 수 있도록
소프트웨어를 활용하였다.

하지만 멀티 프로세싱은 동시에 프로그램을 실행할 수 있도록 하드웨어(코어)를 활용하였다.

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

  1. 여러 프로그램의 코드(시간)를 분할한 뒤, 각각의 단일 코어에 할당하여 수행한다
    -> 멀티 태스킹
  2. 여러 코어를 활용하여 여러 프로그램의 코드를 동시해 실행한다 -> 멀티 프로세싱

참고 자료

  1. 인프런 김영한 자바 고급 1편

'CS > 운영체제' 카테고리의 다른 글

컨텍스트 스위칭  (0) 2024.08.17
프로세스와 스레드  (0) 2024.08.13
주기억장치 관리  (0) 2022.04.26
프로세스(Process) 관리  (0) 2022.04.26
운영체제(Operating System)란  (0) 2022.04.25