TIL: Today I Learned 5일차
오늘 한 일
- 노드js 미니프로젝트 발표회
- 특강 CS
오늘 배운 것
- 금요일 CS특강 : 프로세스, 스레드, 비동기
프로세스란?
- 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
(설계된 것을 바탕으로 구현된 구체적인 실체)
(붕어빵 틀(설계된 것, 클래스)과 붕어빵(인스턴스)이 보통 예시로 많이 사용됨)
- 운영체제로부터 시스템 자원*을 할당받은 작업의 단위
스레드란?
- 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위
멀티 프로세스란?
-하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
멀티 스레드란?
-하나의 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것
멀티 프로세스 vs 멀티 스레드, 언제 뭘 사용해야 하는가?
-멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제를 가지고 있다.따라서 대상 시스템의 특징에 따라 오류가 나서 프로세스가 죽었을 때 크리티컬한 이슈가 발생하는지, Context Switching이 발생 빈도가 빈번한지 등을 따져 잘 선택해야 한다.
반면, 멀티 프로세스 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지하고 Context Switching에 많은 비용이 든다는 단점이 존재한다.
이 두 가지는 동시에 여러 작업을 수행한다는 점에서 같지만 적용해야 하는 시스템에 따라 적합/부적합이 구분된다.