오늘의 질문
동시성과 병렬성에 대해서 설명해주세요.
👩🏻💻 정답 확인
동시성 (Concurrency) : 하나의 코어에서 여러 스레드가 번갈아가며 실행. 논리적으로 동시에 실행되는 것처럼 보이게 만드는 개념.
단일 코어를 기준으로 시간 분할을 통해 여러 스레드를 번갈아 가며 작업을 수행함으로써 마치 동시에 여러 작업이 처리되는 것처럼 보이게 한다.
특징
- 동시성의 핵심 목표는 유휴 시간을 최소화 하는 것.
사용자의 입력을 기다리거나, I/O 작업 시간, 네트워크 요청 등의 작업 시에는 CPU 가 유휴 상태로 대기하게 된다.
이때 CPU 가 아무 일도 하지 않고 대기하는 대신 컨텍스트 스위칭을 통해 다른 스레드의 작업을 처리할 수 있다.
주의점
구현하는 것도 디버그하는 것도 어렵다.
동시성 환경을 신중하게 고려하지 않으면 문제가 발생할 수 있다.
1. Deadlock
여러 프로세스가 하나의 자원에 접근해 서로의 실행 결과에 영향을 주는 현상
2. Race Condition
여러 프로세스가 서로 상대방의 작업이 끝나기를 무한히 기다리는 현상
3. Starvation
특정 프로세스가 우선순위가 낮아 원하는 자원을 계속 할당받지 못하는 현상
병렬성 (Parallelism) : 멀티 코어에서 여러 스레드를 동시에 실행.
여러 개의 코어가 각각 독립된 스레드의 작업을 동시에 처리한다.
특징
- 여러 작업을 다른 코어, 다른 프로세스, 다른 컴퓨터 등에서 동시에 실행시킬 수 있기에, 병렬 처리는 성능 향상에 필수적이다.
EX) 분산 컴퓨팅 시스템
단일 시스템으로 실행하는 여러 대의 컴퓨터 시스템들로 구성되어 있고, 네트워크로 연결될 수 있다.
🔖 참고자료