동시성(Concurrency)
동시성은 하나의 시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 하는 것
실제로는 한 번에 하나의 작업만 처리합니다. 동시성은 여러 작업을 번갈아가며 처리함으로써 작업을 빠르게 완료하는 데 유리합니다. 예를 들어, 웹 서버는 여러 클라이언트의 요청을 동시에 처리하는 것처럼 보이게 하면서 각 요청을 번갈아 처리할 수 있습니다.
이와 유사한 개념으로 멀티태스킹이 있습니다. 많은 자료에서 멀티태스킹과 동시성을 같은 개념으로 설명하지만, 일부는 두 개념 간의 차이점을 강조합니다!
멀티태스킹(Multitasking)
멀티태스킹은 하나의 시스템이 여러 작업을 동시에 처리하는 기능입니다. 운영 체제는 CPU 시간을 분할하여 여러 프로그램이 동시에 실행되는 것처럼 보이게 합니다. 멀티태스킹은 여러 프로세스나 스레드를 생성하여 실행하며, CPU 시간을 조절하고 프로세스나 스레드 간의 우선 순위를 관리하여 여러 작업을 동시에 실행할 수 있도록 합니다.
동시성과 멀티태스킹의 차이점
동시성과 멀티태스킹은 비슷한 개념처럼 보이지만 약간의 차이가 있습니다. 멀티태스킹은 여러 개의 작업(task)을 동시에 실행하는 것으로, 운영 체제가 여러 프로세스나 스레드를 생성하여 이를 관리합니다. 반면, 동시성은 하나의 작업 내에서 여러 서브 태스크(subtask)를 동시에 처리하는 것입니다. 이는 여러 스레드를 생성하여 하나의 작업을 분할하거나, 비동기적으로 여러 작업을 처리하는 것을 포함합니다. 동시성은 작업들 간에 의존성이 있을 때 유용합니다.
하드웨어 관점에서 보면 멀티태스킹은 동시성보다 상위 개념입니다. 멀티태스킹은 여러 프로세스를 관리하는 반면, 동시성은 하나의 프로세스 내에서 여러 스레드를 관리합니다.
병렬성(Parallelism)
여러 작업을 실제로 동시에 처리하는 것
여러 CPU나 코어를 사용하여 작업을 병렬로 처리합니다. 예를 들어, 대용량 데이터 처리나 과학 계산 작업에서 여러 계산을 병렬로 수행할 수 있습니다.
병렬 처리 작업은 여러 개의 CPU 또는 코어에서 각각의 작업이 별도의 프로세스나 스레드로 실행됩니다. 병렬성은 멀티코어 컴퓨터에서 주로 사용되며, 실행 시간을 단축하거나 처리량을 증가시키는 데 사용됩니다. 예를 들어, 이미지나 비디오 인코딩, 대규모 데이터 처리 작업을 효율적으로 수행할 수 있습니다.
이 그림에서는 여러 작업(Task1, Task2, Task3)이 동시에 진행되고 있지만, 실제로는 각 작업이 시간을 나누어 수행되는 모습을 보여줍니다.
- 작업들이 서로에게 영향을 미치지 않고 독립적으로 진행되지만, 어떤 시점에서는 한 작업이 완료된 후 다음 작업이 시작되는 형태입니다.
- 예를 들어, Task1의 일부와 Task2의 일부가 겹쳐서 실행되는 모습이 보입니다. 이는 시스템이 자원을 효율적으로 사용하기 위해 여러 작업을 동시에 관리하는 방식을 보여줍니다.
이 그림에서는 여러 작업이 동시에 실행되고 있는 모습을 보여줍니다. 각 작업이 독립적으로 실행되며, 모든 작업이 동시에 시작되고 동시에 끝납니다.
- Task1과 Task2가 각각의 작업을 동시에 처리하는 모습이 명확하게 나타납니다.
- 이 방식은 멀티코어 프로세서와 같은 하드웨어의 이점을 활용하여 작업을 병렬로 수행함으로써 성능을 극대화합니다.
동시성 VS 병렬성
구분 | 동시성 (Concurrency) | 병렬성 (Parallelism) |
개념 | 동시에 처리하는 것처럼 보이게 하는 것 | 여러 작업을 실제로 동시에 처리하는 것 |
사용 코어 수 | 싱글 코어 | 멀티 코어 |
동작 방식 | 싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식 | 멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식 |
개념적 차이 | 논리적인 개념 | 물리적인 개념 |
요약
- 동시성은 여러 작업이 시간적으로 겹쳐서 진행되지만, 반드시 동시에 실행되는 것은 아닙니다.
- 병렬성은 여러 작업이 실제로 동시에 실행되는 것을 의미합니다.
Referense
'CS' 카테고리의 다른 글
세션 vs JWT: 세션을 선택하며 얻은 고찰 (1) | 2024.12.19 |
---|---|
HTTP와 HTTPS의 차이 (0) | 2024.08.26 |
프로세스와 스레드의 기본 개념과 멀티스레딩 및 멀티프로세싱 비교 (0) | 2024.07.20 |
HTTP 상태 코드 (0) | 2024.07.19 |
Web Server와 WAS의 차이점 (0) | 2024.07.19 |