동시성과 병렬성

김명수·2025년 9월 18일

매일메일

목록 보기
12/127
post-thumbnail

동시성과 병렬성

●동시성

  • 동시성이란 이름처럼 실제로 여러 작업을 동시에 수행하는 것이 아니라, 논리적으로 동시에 실행되는 것처럼 보이게 만드는 개념

  • 단일 코어를 기준으로 시간 분할을 통해 여러 스레드를 번갈아 가며 작업을 수행함으로써, 마치 동시에 여러 작업이 처리되는 것처럼 보이게 함

  • 사용자의 입력을 기다리거나, 네트워크 요청, 파일 입출력 등의 I/O 작업 시에는 CPU가 유휴 상태로 대기하게 되며, 이때 CPU가 아무 일도 하지 않고 대기하는 대신, 컨텍스트 스위칭을 통해 다른 스레드의 작업을 처리할 수 있으며 이러한 특성 덕분에 서버는 여러 클라이언트의 요청을 동시에 처리할 수 있어 효율적

  • 다만, 동시성 환경을 신중하게 고려하지 않으면 여러 스레드를 사용하면서 Deadlock, Race Condition, Starvation 등의 문제가 발생할 수 있음

●병렬성

  • 병렬성이란 물리적으로 동일한 시간에 여러 작업을 독립적으로 수행하는 것을 의미
  • 여러 개의 코어가 각각 독립된 스레드의 작업을 동시에 처리함으로써, 실제로 여러 작업이 동시에 실행
  • 동시성과는 달리, 하나의 코어가 여러 스레드를 번갈아 가며 처리할 필요 없이, 각 코어에서 독립적으로 작업을 실행
  • 독립적인 하위 작업으로 나눌 수 있는 계산과 같은 작업을 여러 코어에 분산함으로써, 작업 완료 시간을 최소화할 수 있어 고성능 컴퓨팅에 이상적이지만, 병렬 처리는 데이터나 리소스를 공유할 때 작업 간 동기화가 필요할 경우가 많아, 이러한 동기화로 인해 상당한 오버헤드가 발생할 수 있음
profile
신입개발자

0개의 댓글