용어정리
프로세스
- 프로그램을 구동해, 프로그램의 상태가 메모리상에서 실행되는 작업 단위
- 하나의 프로그램에는 하나의 프로세스 할당
스레드
- 하나의 프로그램에서 여러 개의 작업을 수행하기 위한 더 작은 실행 단위
- 하나의 프로세스에는 여러 개의 스레드
- 스레드끼리는 메모리 공유
코어
- CPU의 부품 중 하나
동기(Synchronous)
- 요청과 결과가 동시에 일어남
- 먼저 요청한 일이 먼저 끝남
비동기(Asynchronous)
- 요청과 결과가 동시에 일어나지 않음
- 작업이 빠른 순으로 끝남
직렬(Serial)
- 순차적으로 진행하는 것
- 직렬 큐 : 단 하나의 스레드로만 작업을 보내는 대기열
동시(Concurrent)
- 동시에 진행하는 것
- 동시 큐 : 여러 개의 다른 스레드로 작업을 보내는 대기열
코어 VS 스레드
- 코어 ⏩️ CPU를 물리적으로 구별한것
- 스레드 ⏩️ CPU를 논리적으로 구별한 것
동시 VS 병렬
- 동시 ⏩️ 싱글 코어에서 멀티 스레드를 동작시키는 방식 / 하나의 코어가 번갈아가면서 작업을 수행
- 병렬 ⏩️ 멀티 코어에서 멀티 스레드를 동작시키는 방식 / 여러 개의 코어가 여러 스레드의 작업을 동시에 수행
동기는 직렬이고 비동기는 동시인가? ❌
- 동기 / 비동기
- 작업을 보내는 스레드에 관련된 개념
- 작업을 보내는 스레드가 보낸 작업이 끝나기를 기다리는지 아닌지
- 직렬 / 동시
- 작업을 받는 스레드에 관련된 개념
- 작업을 받는 스레드가 한 개인지 아닌지
동기는 싱글 스레드에서 일어나고 비동기는 멀티 스레드에서 일어나는가? ❌
싱글 스레드 - 동기
하나의 공간에서 - 순서대로 일을 처리한다.
싱글 스레드 - 비동기
하나의 공간에서 - 순서에 관계없이 일을 처리한다.
멀티 스레드 - 동기
여러 개의 공간에서 - 순서대로 일을 처리한다.
멀티 스레드 - 비동기
여러 개의 공간에서 - 순서에 관계없이 일을 처리한다.