
여러 작업이 시간적으로 중첩되어 실행될 수 있도록 하는 컴퓨팅 모델
여러 작업이 동시에 실행되는 것이 아니라, CPU가 작업마다 시간을 분할해 적절하게 Context Switching 함으로써 동시에 실행되는 것처럼 보이게 하는 것 - 실질적으로는 한번에 하나의 작업만을 처리한다.

스레딩(Thread)
하나의 프로세스 내에서 여러 개의 스레드를 생성하여 동시에 여러 작업을 수행할 수 있다.
멀티 프로세싱(Multiprocessing)
여러 개의 프로세스를 동시에 실행하여 각 프로세스가 독립적인 작업을 처리하도록 한다.
비동기 프로그래밍(Asynchronous Programming)
작업 완료를 기다리지 않고 다음 작업을 시작할 수 있게 한다. I/O 작업이 많은 어플리케이션에 유용하다.
이벤트 드리븐(Event-Driven)
이벤트가 발생할 때마다 적절한 처리를 활성화하여 리소스의 효율적 사용을 가능하게 한다.
비동기 처리: I/O 작업이 많은 프로그램에서 유용하며, 시스템이 하나의 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있다.
자원의 효율적 사용: 하나의 작업이 대기 상태일 때 다른 작업을 실행함으로써 CPU 시간을 낭비하지 않고 효율적으로 사용할 수 있다.
응답성 향상: 사용자 인터페이스가 멈추지 않고 계속 응답함으로써 더 나은 사용자 경험을 제공한다.
멀티 태스킹
주로 운영 체제가 여러 프로그램을 동시에 실행하도록 관리하는 기술
CPU 시간을 분할하여 하나의 컴퓨터에서 여러 프로세스나 애플리케이션이 동시에 실행되는 것처럼 보이게 한다.
멀티태스킹은 하나의 시스템에서 여러 개의 작업을 동시에 실행하는 것
운영 체제는 이를 위해 여러 개의 프로세스 또는 스레드를 생성하여 동시에 실행한다.
하나의 CPU를 이용하여 여러 작업을 처리하므로 시스템 자원의 효율성을 높인다.
동시성은 하나의 작업 내 여러 개의 서브 태스크를 동시에 처리하는 것
여러 개의 스레드를 생성하여 하나의 작업을 분할하여 처리하거나, 비동기적으로 여러 개의 작업을 처리한다.
멀티태스킹과 마찬가지로 동시에 작업을 수행하지만, 작업이 독립적이지 않고 서로 의존성을 가지는 경우에 적합하다.
멀티태스킹이 동시성보다 상위 인자
프로세스가 스레드를 포함하듯, 멀티태스킹은 프로세스의 동작을, 동시성은 스레드의 동작을 의미할 수 있다.
동시성은 프로그램 내에서 여러 독립된 작업들이 효율적으로 수행될 수 있도록 하며, 멀티태스킹은 이러한 프로그램들이 운영 체제 수준에서 동시에 실행될 수 있도록 지원한다.
독립적으로 동시에 여러 작업을 실행한다.
많은 작업을 병렬 처리함으로써 성능을 향상시킬 수 있지만 적절한 작업 분배가 이루어져야 한다는 전제 조건이 있다.

속도 향상: 여러 프로세서가 동시에 다양한 작업을 수행함으로써 프로그램의 실행 시간을 크게 단축할 수 있다.
대규모 데이터 처리: 대용량 데이터를 빠르게 처리할 수 있으며, 데이터베이스 연산, 과학적 계산, 이미지 처리 등에 유용하다.
성능 최적화: 시스템의 하드웨어 자원을 최대한 활용하여 전체적인 성능을 향상시킬 수 있다.
동기화: 프로세스 간 데이터 일관성과 상태 정보를 유지하기 위한 동기화가 필요하다.
오버헤드: 작업을 분할하고 결과를 합치는 데 추가적인 시간이 발생할 수 있다.
디버깅: 병렬 프로그램은 디버깅이 더 어렵고 복잡하다.
로드밸런싱: 모든 프로세서에서 부하가 치우치지 않고 균등하게 작업을 수행하도록 조정해야 한다.
동시성은 여러 작업이 시작되는 시점을 관리한다. 작업들이 교차로 실행되기 때문에 실제 하나의 작업만이 어느 순간 실행될 수 있다.
병렬성은 여러 작업이 실제로 동시에 수행된다. 여러 데이터 조각을 동시에 처리할 수 있어, 계산이 많이 필요한 작업에서 시간을 절약할 수 있다.
| 동시성 | 병렬성 |
|---|---|
| 동시에 처리하는 것처럼 보이는 것 | 여러 작업을 실제로 동시에 처리하는 것 |
| 싱글 코어에서 멀티 쓰레드를 동작시키는 방식 | 멀티 코어에서 멀티 쓰레드를 동작시키는 방식 |
| 한번에 많은 것을 처리 | 한번에 많은 일을 처리 |
| 논리적인 개념 | 물리적인 개념 |
참고
동시성 (Concurrency) 및 병렬성 (Parallelism)
동시성(Concurrency) vs 병렬성(Parallelism)
동시성과 병렬성의 개념과 차이