개발자 기술 면접 준비/정리

멀티 프로세스 VS 멀티 쓰레드

ucong 2021. 6. 7. 23:03

멀티 프로세스

- 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 1개의 작업을 처리하도록 하는 것

 

- 한개의 프로세스가 죽어도 자식 프로세스 이외의 다른 프로세스들은 계속 진행된다.

- Context Switching을 위한 오버헤드(캐시 초기화, 인터럽트 등)가 발생한다.

- 프로세스는 각각 독립적인 메모리를 할당받았기 때문에 통신하는 것이 어렵다.

 

멀티쓰레드

- 하나의 프로그램을 여러개의 쓰레드로 구성하여 각 쓰레드가 1개의 작업을 처리하도록 하는 것

 

- 프로세스를 위해 자원을 할당하는 시스템콜이나 Context Switching의 오버헤드를 줄일 수 있다.

- 쓰레드는 메모리를 공유하기 때문에, 통신이 쉽고 자원을 효율적으로 사용 가능하다.

- 하나의 쓰레드에 문제가 생기면 전체 프로세스가 영향을 받는다.

- 여러 쓰레드가 하나의 자원을 동시에 접근하는 경우 자원공유(동기화)의 문제가 발생할 수 있다.

 

멀티쓰레드 프로그래밍 작성 시 유의

- 다수의 쓰레드가 공유 데이터에 동시에 접근하는 경우에 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 교착 상태가 발생하지 않도록 주의해야 한다.

'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글

메모리란?  (0) 2021.06.07
데드락이란?  (0) 2021.06.07
컨텍스트 스위칭이란?  (0) 2021.06.07
프로세스 VS 스레드  (0) 2021.06.07
직렬화란?  (0) 2021.06.07