순차 처리 VS 병렬 처리 (동기적 실행 VS 순차적 실행 / 비동기적 실행 VS 병렬 실행)
순차 처리(sequential processing)와 병렬 처리(parallel processing)는 데이터나 작업을 처리하는 두 가지 기본적인 방식이다.
1. 순차 처리(Sequential Processing)
: 순차 처리는 작업이나 데이터가 순서대로 하나씩 처리되는 방식이다. 각 작업이 완료되어야 다음 작업이 실행된다.
1-1. 순차 처리의 특징 :
- 단일 흐름 : 하나의 작업이 끝나야 다음 작업이 시작되므로, 단일 흐름으로 진행된다.
- 블로킹 : 이전 작업이 완료될 때까지 다음 작업이 대기하므로, 블로킹이 발생한다.
- 단순성 : 구현이 간단하므로, 코드가 직관적이다.
- 메모리 사용 : 메모리 관리가 상대적으로 간단하다.
1-2. 순차 처리의 장점과 단점
<장점>
- 코드가 직관적이고 이해하기 쉽다.
- 디버깅과 유지보수가 용이하다.
<단점>
- 많은 작업을 처리할 때, 속도가 느릴 수 있다.
- CPU 자원을 효율적으로 사용하지 못할 수 있다.
2. 병렬 처리(Parallel Processing)
: 병렬 처리는 여러 작업을 동시에 수행하는 방식으로, 멀티코어 CPU와 같은 하드웨어 자원을 활용하여 성능을 극대화한다.
2-1. 병렬 처리의 특징 :
- 다중 흐름 : 여러 작업이 동시에 진행되며, 각 작업은 독립적으로 실행된다.
- 비블로킹 : 하나의 작업이 완료되지 않아도 다른 작업이 진행되므로, 비블로킹 방식이다.
- 복잡성 : 동기화 및 자원 관리가 필요하여, 구현이 복잡하다.
- 자원 활용 : CPU 자원을 최대한 활용하여 처리 속도를 높인다.
2-2. 병렬 처리의 장단점
<장점>
- 처리 속도가 빠르며, 많은 작업을 동시에 처리할 수 있다.
- CPU 및 메모리 자원을 효율적으로 사용한다.
<단점>
- 코드가 복잡해지고, 디버깅이 어려울 수 있다.
- 동기화 문제나 교착 상태와 같은 문제 발생 가능성이 있다.
- 동기화 문제(Synchronization Issues) : 여러 쓰레드가 공유 자원에 접근할 때 발생하는 문제로, 데이터의 일관성을 유지하기 어려워지는 상황을 말한다.
- 교착 상태(Deadlock) : 교착 상태는 두 개 이상의 쓰레드 또는 프로세스가 서로 자원을 기다리며 무한 대기 상태에 빠지는 상황을 말한다. 이는 프로그램이 더 이상 진행되지 않는 상태로 이어진다.
3. 동기적 실행 VS 순차적 실행
동기적 실행은 작업이 완료될 때까지 대기하는 방식으로, 작업 사이의 대기가 필수적이다. 반면에 순차적 실행은 순서가 중요한 개념으로, 작업이 순서대로 진행되지만 각 작업이 반드시 동기적일 필요는 없다.
동기적 실행은 블로킹이 발생하고, 순차적 실행은 비동기적일 수도 있고 동기적일 수도 있다. 따라서 순차적 실행에서는 비동기적 방식으로 처리하면서도 작업 순서를 유지할 수 있다.
4. 비동기적 실행 VS 병렬 실행
비동기적 실행은 하나의 스레드에서 작업 간 대기 시간을 최소화하면서 처리하고, 병렬 실행은 여러 스레드나 프로세스를 사용하여 물리적으로 동시에 처리한다.
비동기적 실행은 I/O 작업과 같은 대기 시간이 많은 작업에 효율적이고, 병렬 실행은 CPU 성능을 최대한 활용해 여러 작업을 동시에 처리하는 데 적합하다.