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 (임계 영역)
: 둘 이상의 스레드가 동시에 접근해서는 안 되는 공유 자원에 접근하는 코드의 일부