영상 내용 정리
해당 단원에서는 용어의 늪에 빠지지 말고 단어들을 혼동해서 사용하지 않도록 주의한다.
ex) 동시, 병렬, 병행
동시성
동시성: 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것
짧은 순간에 CPU의 시간을 분할해서 동시에 하는 것처럼 보이게 한다.
프로그램과 프로세스 비유 예시
-> 프로그램은 피자 레시피, 프로세스는 피자
멀티 프로세스 vs 멀티 스레드
멀티 프로세스
- 각 프로세스는 독립적
- 프로세스간 통신은 IPC를 사용
- 자원 소모적, 개별 메모리 차지
- Context Switching 비용이 큼
- 동기화 작업이 필요하지 않음
멀티 스레드
- 스레드 끼리 긴밀하게 연결되어 있음
- 공유된 자원으로 통신 비용 절감
- Context Switching 비용이 적음
- 공유 자원 관리를 해야함
멀티 코어
스레드, 프로세스는 소프트웨어 관점이라면, 멀티 코어는 하드웨어 관점이다.
멀티코어와 관련된 키워드는 동시성
과 병렬처리
이다.
동시성(싱글 코어)
- 하나의 코어에서 하나 이상의 프로세스(or 스레드)가 번갈아가면서 진행되지만 동시에 진행되는 것처럼 보이는 것
병렬처리(멀티 코어)
- 둘 이상의 코어에서 동시에 하나 이상의 프로세스(or 스레드)가 한꺼번에 진행되는 것
요약 정리
- 프로세스는 프로그램이 실행된 것
- 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위
- 한 어플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티 프로세스, 멀티 스레드)가 있다.
- 동시에 실행이 되는 것처럼 보이기 위해서 실행 단위는 시분할고 cpu를 점유하며 Context Switching을 한다.
- 멀티 프로세스는 독립적인 메모리를 가지고 있지만, 멀티 스레드는 자원을 공유한다. 그것에 따른 각각의 장단점이 있다.
- 멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다.