멀티 프로세스
- 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 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 |