QUESTION #0234
백엔드

멀티 태스킹 시스템의 한계에 대해서 설명해주세요.

멀티 태스킹 시스템의 한계에 대해서 설명해주세요.

분야: 백엔드


멀티 태스킹 시스템을 사용하더라도 아래와 같은 문제점이 남아 있습니다.

  1. 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
  2. 여러 프로세스를 생성하여 문제를 해결할 수는 있으나, 프로세스가 많아지면 관리와 자원 소모 측면에서 여러 가지 단점이 발생합니다.
  3. 무거운 프로세스 간 컨텍스트 스위칭
  4. 컨텍스트 스위칭은 CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하며, 이 작업은 상대적으로 무겁고 비용이 큽니다.
  5. 프로세스 간 데이터 공유의 어려움
  6. 각 프로세스는 독립적인 메모리 공간을 사용하기 때문에, 서로 다른 프로세스 간에 데이터를 공유하는 것이 까다롭습니다.

스레드(Thread)의 등장과 특징

이러한 문제점을 해결하기 위해 등장한 것이 스레드입니다. 스레드는 한 프로세스 내에서 여러 작업을 동시에 실행할 수 있도록 도와줍니다.

  1. 프로세스 내 여러 스레드 보유
  2. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 각 스레드가 하나의 작업을 담당합니다. 이는 여러 작업을 동시에 실행할 수 있도록 하는 핵심 요소입니다.
  3. CPU 실행 단위
  4. 과거에는 프로세스가 CPU에서 실행되는 단위였다면, 현재는 스레드가 CPU에서 실행되는 최소 단위가 되었습니다.
  5. 기본적으로 프로세스는 하나의 스레드를 가지고 있으며, 필요에 따라 추가적인 스레드를 생성할 수 있습니다.
  6. 가벼운 스레드 간 컨텍스트 스위칭
  7. 스레드는 동일 프로세스 내에서 메모리 영역(특히 Heap)을 공유하므로, 스레드 간의 컨텍스트 스위칭은 프로세스 간 스위칭보다 훨씬 가볍습니다.
  8. 다만, 각 스레드는 고유한 Stack, 포인터, 프로그램 카운터 등을 가지고 있어, 자신만의 실행 상태를 유지합니다. 같은 프로세스 내의 스레드들은 메모리 영역은 공유하지만, 각 스레드만의 고유한 정보(스택, 프로그램 카운터 등)를 보유합니다.

멀티스레딩과 멀티프로세싱

  • 멀티스레딩 (Multi-threading):
    하나의 프로세스 내에서 여러 스레드를 통해 동시에 여러 작업을 실행하는 기법입니다.
  • 확장된 멀티태스킹 개념:
    과거에는 프로세스 간 아주 짧은 시간의 스위칭으로만 작업을 나누었다면,
    이제는 여러 프로세스와 스레드가 아주 짧게 쪼개진 CPU 타임을 나눠가져 실행됩니다.
  • 멀티프로세싱 (Multi-processing):
    두 개 이상의 프로세서나 코어를 활용하여, 여러 프로세스가 동시에 실행되는 시스템입니다.