멀티 태스킹 시스템의 한계에 대해서 설명해주세요.
백엔드와 관련된 질문이에요.
멀티 태스킹 시스템을 사용하더라도 아래와 같은 문제점이 남아 있습니다.
- 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
- 여러 프로세스를 생성하여 문제를 해결할 수는 있으나, 프로세스가 많아지면 관리와 자원 소모 측면에서 여러 가지 단점이 발생합니다.
- 무거운 프로세스 간 컨텍스트 스위칭
- 컨텍스트 스위칭은 CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하며, 이 작업은 상대적으로 무겁고 비용이 큽니다.
- 프로세스 간 데이터 공유의 어려움
- 각 프로세스는 독립적인 메모리 공간을 사용하기 때문에, 서로 다른 프로세스 간에 데이터를 공유하는 것이 까다롭습니다.
스레드(Thread)의 등장과 특징
이러한 문제점을 해결하기 위해 등장한 것이 스레드입니다. 스레드는 한 프로세스 내에서 여러 작업을 동시에 실행할 수 있도록 도와줍니다.
- 프로세스 내 여러 스레드 보유
- 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 각 스레드가 하나의 작업을 담당합니다. 이는 여러 작업을 동시에 실행할 수 있도록 하는 핵심 요소입니다.
- CPU 실행 단위
- 과거에는 프로세스가 CPU에서 실행되는 단위였다면, 현재는 스레드가 CPU에서 실행되는 최소 단위가 되었습니다.
- 기본적으로 프로세스는 하나의 스레드를 가지고 있으며, 필요에 따라 추가적인 스레드를 생성할 수 있습니다.
- 가벼운 스레드 간 컨텍스트 스위칭
- 스레드는 동일 프로세스 내에서 메모리 영역(특히 Heap)을 공유하므로, 스레드 간의 컨텍스트 스위칭은 프로세스 간 스위칭보다 훨씬 가볍습니다.
- 다만, 각 스레드는 고유한 Stack, 포인터, 프로그램 카운터 등을 가지고 있어, 자신만의 실행 상태를 유지합니다. 같은 프로세스 내의 스레드들은 메모리 영역은 공유하지만, 각 스레드만의 고유한 정보(스택, 프로그램 카운터 등)를 보유합니다.
멀티스레딩과 멀티프로세싱
- 멀티스레딩 (Multi-threading):
하나의 프로세스 내에서 여러 스레드를 통해 동시에 여러 작업을 실행하는 기법입니다. - 확장된 멀티태스킹 개념:
과거에는 프로세스 간 아주 짧은 시간의 스위칭으로만 작업을 나누었다면,
이제는 여러 프로세스와 스레드가 아주 짧게 쪼개진 CPU 타임을 나눠가져 실행됩니다. - 멀티프로세싱 (Multi-processing):
두 개 이상의 프로세서나 코어를 활용하여, 여러 프로세스가 동시에 실행되는 시스템입니다.
공유하기
컨텐츠 피드백