IT/OS

[OS] Thread & Process - 3

wakelight23 2025. 1. 17. 20:25

Multi Processing

● 한 컴퓨터 내 2개 이상의 프로세서(=CPU)들이 같은 작업 내 2개 이상의 서로 다른 부분을
   동시(Parallel)에 처리할 수 있는 프로그램

 

멀티 프로그래밍, 멀티 태스킹과는 다른건가?

  ○ 멀티 프로그래밍(multi-programming) : 

     - 한 CPU는 한 시점에 하나의 프로그램 수행하는 것

     - 메인 메모리에 여러 프로그램 유지

     - 수행 중인 프로그램 입출력 작업을 수행하면 CPU는 입출력 종료될 때까지
       기다리지 않고 다른 프로그램을 수행하는 것

 

  ○ 멀티 태스킹(multi-tasking) :

     - 작은 time quantum(시분할)을 사용하여 여러 메모리에 올라와 있는
       여러 작업들을 번갈아가며 수행하는 것

     - 매우 빠르게 수행되기 때문에 사용자가 동시에 수행된다고 느껴짐

 

 

● 멀티 프로세싱을 표현하자면 ▼

Multi-Processing

 

Multi Threading

● 한 프로세스(Process) 내에서 여러 스레드(Thread)를 생성할 수 있는 프로그램

 

● 여러 스레드들은 독립적으로 수행되지만 프로세스의 자원을 공유하며
   동시(Concurrently)에 함께 수행

Single Thread와 Multi Thread의 처리 방식

 

 

동시 처리, Concurrency & Parallelism

Concurrency :

  - 같은 시간에 많은 작업을 처리하는 것

  - 대기 시간을 숨기며 동시적에 작업이 처리되는 것처럼 보이도록 함 (연막작전! Illusion!)

  - 한 시점에 오직 한 가지의 작업만 처리하지만 여러 작업이 동시에
    수행되게끔 착각을 주는 것

 

Parallelism

  - 실제로 같은 시간에 여러 작업을 동시에 처리하는 것

 

이런 느낌?

 

정리!

  멀티 프로세싱(Multi-processing) 멀티 스레딩(Multi-Threading)
동시 처리 Parallelism Concurrency
목적 속도(performance)의 증가 여러 작업이 동시에 실행되게끔 착각하게 하는 것
효율 여러 연산 작업(Computations) IO 작업