CS

멀티프로세스(Multi Process) & 멀티스레드(Multi Thread)

Sehe_e 2023. 11. 6. 17:04

프로세스 (Process) : 프로그램을 메모리 상에서 실행 중인 작업

스레드 (Thread) : 프로세스 안에서 실행되는 여러 흐름 단위

하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드가 같이 생성된다.

 


멀티 프로세스와 멀티 스레드의 차이

 

프로세스

  : 자신만의 고유 공간과 자원을 할당받아 사용

  각 프로세스가 서로 영향을 주지 않지만 멀티 스레드보다 메모리 공간과 CPU 시간을 차지한다.

 

스레드

  : 다른 스레드와 공간, 자원을 공유하면서 사용

  멀티 프로세스보다 적은 메모리 공간, Context Switching이 빠르지만 하나의 스레드 장애로 전체가 종료 될 위험이 있다.

 

 

+ Context Switching

    : 프로세스의 상태 정보를 저장하고 복원하는 과정

    동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관,

    대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정

 


멀티 프로세스 (Multi Process)

: 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것

  각각 독립된 메모리 영역으로 작업량 많을 수록 오버헤드 발생. Context Switching으로 인한 성능 저하

 

멀티 스레드 (Multi Thread)

: 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것

  안전성에 대한 단점은 Critical Section 기법으로 대비

 

+ Critical Section (임계 영역)

  : 둘 이상의 스레드가 동시에 접근해서는 안 되는 공유 자원에 접근하는 코드의 일부