Sad Puppy 3 'ComputerSicence/운영체제' 카테고리의 글 목록 :: 개발자 아지트

쓰레드의 등장 배경 및 멀티스레딩과 멀티프로세싱

멀티태스킹(멀티 프로세싱, 멀티 스레딩 포함)
├── 멀티프로세싱
└── 멀티스레딩

멀티 프로세싱

: 여러 개의 프로세스를 동시에 혹은 빠르게 시분할 하여 실행하는 방식

-코어가 여러개인 시스템의 경우, 각 코어가 서로 다른 프로세스를 동시에 독립적으로 실행시킴

-코어가 하나인 시스템에서도, 운영체제가 프로세스 간 컨텍스트 스위칭을 매우 빠르게 수행함으로써 여러 프로세스가 동시에 실행되는 것처럼 동작시킴

멀티 프로세싱의 한계

  1. 하나의 프로세스는 동시에 여러 작업을 수행하지 못한다.
    → 여러 프로세스를 생성해 문제를 해결할 수 있으나, 프로세스가 많아지면 관리나 자원 소모 측면에서 여러 단점이 발생함
  2. 프로세스 간 컨텍스트 스위칭이 무겁다.
    → 컨텍스트 스위칭 작업은 무겁고 비용이 큼
    → 프로세스에서 다른 프로세스로 전환할 때 CPU에서 컨텍스트 스위칭이 발생함.
  3. 프로세스 간 데이터 공유가 어렵다. = IPC를 사용해야함
    → 데이터 공유는 언제 필요한건가?
    ex1) 웹 서버 구조, 프론트 요청을 처리하는 프로세스와 DB에 직접 접근하여 결과를 가공하는 백엔드 프로세스 간 데이터를 공유해야 하는 상황
    ex2) 멀티프로세싱 워커(pool), 대용량 데이터를 병렬 처리하기 위해 여러 워커 프로세스를 띄워놓고, 각 워커가 처리한 결과를 모아 최종 결과를 만들어야 하는 상황
    → 각 프로세스는 독립적인 (가상) 메모리 공간을 사용하기 때문에, 서로 다른 프로세스 간 데이터 공유가 까다로움

    왜 까다로운가?
    : 운영 체제는 한 프로세스가 비정상 종료되거나 엉뚱한 메모리에 접근을 해도 다른 프로세스의 메모리에 직접적인 피해를 주지 않아야함.
    때문에 각 프로세스는 독립적인 메모리 공간을 사용하고, “다른 프로세스 메모리를 막 읽거나 쓰는 행위”를 금지함.

    그렇다면 프로세스 간 데이터 공유는 어떻게?
    : 반드시 운영체제가 제공하는 별도의 통로 IPC를 거쳐야함.
    IPC(Inter-Process Communication)

위와 같은 문제를 해결하기 위해 등장한 것 ⇒ 스레드 (Thread)

스레드(Thread): 한 프로세스 내에서 여러 작업을 동시에 실행하게 해줌

  • 하나의 프로세스 내에 여러 스레드를 보유할 수 있다. ⇒ 멀티 스레딩
    • 각 스레드 당 작업 하나가 할당된다.
  • 요즘 CPU의 실행 단위는 스레드 단위이다.
    • 과거에는 프로세스 단위가 CPU의 실행 단위였다.
  • 컨텍스트 스위칭이 가볍다.
    • 스레드는 같은 프로세스 내에서 메모리 영역(Heap)을 공유함.
    • 따라서 프로세스 간 스위칭 보다 훨씬 가볍다.
    • 다만 모든걸 공유하는건 아님
      • 각 쓰레드는 Stack, 포인터, 프로그램 카운터 등을 고유하게 가지면서 자신의 실행 상태를 유지한다.

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

멀티쓰레딩  (0) 2025.06.04

멀티쓰레딩은 하나의 프로세스 내에서 여러 작업을 여러 쓰레드를 통해 동시에 실행할 수 있도록 하는 방식.

 

특징

1. 경량화된 실행 단위

- 낮은 오버헤드: 스레드는 같은 프로세스 내에서 실행됨 -> 프로세스 간의 컨텍스트 스위칭에 비해 스레드 간 전환은 훨씬 가볍고 빠름

- 빠른 전환: 각 쓰레드는 자신만의 스택과 레지스터(프로그램 카운터)를 갖지만, 코드나 힙 메모리 등은 공유하기 때문에 전환 시 재설정해야 할 데이터의 양이 적어 전환 속도가 빠름

 

2. 효율적인 데이터 공유

- 공유 메모리: 같은 프로세스 내의 스레드들은 힙 영역 등 주요 메모리 공간을 공유함. -> 데이터 전달이 빠르고 간편

-동기화 관리: 스레드 간의 데이터 공유는 IPC와 같은 복잡한 메커니즘 없이도 이루어지지만, 동시에 접근할 경우 동기화 문제는 여전히 존재함

* IPC란 하나의 컴퓨터 안에서 실행 중인 서로 다른 프로세스 간에 발생하는 통신 임 (Inter-process Communication)

* 프로세스는 각자 독립적인 주소 공간을 가지고 수행됨 

 

3. 응답성 및 처리 성능 향상

- 벙렬 처리: 멀티쓰레딩을 통해 I/O작업과 CPU 집약적 작업을 분리해 동시에 처리할 수 있으므로, 시스템 전체의 응답성이 향상됨

-리소스 활용 최적화: CPU의 멀티코어 환경에서 각 스레드를 개별 코어에 할당하여 병렬 처리가 가능해짐, 시스템 자원을 더욱 효율적으로 사용할 수 있음

 

멀티 쓰레딩의 장점 

- 프로세스 기반의 멀티태스킹보다 낮은 비용의 컨텍스트 스위칭 가능

-효율적인 메모리 사용, 빠른 데이터 공유

-I/O작업이나 대기 작업을 별도의 스레드로 처리하여 주 스레드가 차단되지 않고 사용자 입력이나 다른 중요한 작업에 빠르게 대응할 수 있게됨 

 

멀티 쓰레딩의 단점

- 스레드들이 같은 메모리를 공유하니 경쟁 상태, 교착 상태 같은 동기화 문제 발생 가능성이 있고, 해당 문제 해결 과정이 복잡하거나 디버깅이 어려워질 수 있음

- 스레드 관리를 소홀히 할 경우, 시스템 자원이 과하게 사용될 위험 존재 

 

 

https://www.maeil-mail.kr/question/236

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

멀티프로세싱의 한계  (2) 2025.06.05

+ Recent posts