체크리스트
- 프로세스와 스레드 개념 설명 가능?
- 멀티 프로세스와 멀티 스레드 개념 설명하고 각각 장단점 서명 가능?
- 비동기 개념 설명 가능?
- 비동기 왜 필요한지 설명 가능?
CPU는 '요리사', memory는 '도마'
독립된 메모리를 할당 받음
최소 1개의 스레드를 가짐
자원 공유 동기화 문제 발생
Thread-safe
- 멀티스레드 환경에서 여러 스레드가 동시에 사용되도 안전하다는 것
- 여러 스레드가 공유 자원에 접근할 때, 공유 자원의 무결성을 보장하는 것 (자원 동기화가 잘 되지 않는 이슈 없이 의도한 대로 잘 동작하는 것)
프로세스 : 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
스레드 : 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위
멀티 프로세스 : 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
멀티 스레드 : 하나의 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것
멀티 프로세스 vs 멀티 스레드, 언제 뭘 사용해야 하는가?
멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 Context Switching이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제멀티 프로세스 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지하고 Context Switching에 많은 비용이 든다는 단점
따라서 대상 시스템의 특징에 따라 오류가 나서 프로세스가 죽었을 때 크리티컬한 이슈가 발생하는지, Context Switching이 발생 빈도가 빈번한지 등을 따져 잘 선택
비동기가 왜 필요한지
엄청난 용량의 정보를 갖고있는 현대 웹페이지를 보다 유동적으로, 효율적으로 움직이게 하기 위해서