Parallelism & Concurrency

<이미지 출처> https://seamless.tistory.com/42

<이미지 출처>https://www.codeproject.com/Articles/1267757/Concurrency-vs-Parallelism
Parallelism (병렬성)
- 실제로 동시에 작업이 처리되는 것
- 멀티 코어에서 멀티 쓰레드를 동작시키는 방식
- 한번에 많은 일을 처리
- 물리적인 개념
Concurrency (병행성)
- 동시에 작업이 실행되는 것 처럼 느끼게 해주는 것
- 싱글 코어에서 멀티 쓰레드를 동작시키는 방식
- 한번에 많은 것을 처리할 수 있음
- 논리적인 개념
- 한 개의 CPU가 다수의 프로세스들을 서로 번갈아 가며 수행 ➡
인터리빙(interleaving)
- 빠른 CPU의 처리 속도로 인해 인터리빙이 빠르게 이루어지며 사용자가 여러 프로그램이 동시작동하는 것 처럼 느끼게 해줌
병행성의 문제점
- 컴퓨터에서 자주 쓰이는 변수 또는 함수는 모든 프로세스들이 접근 가능한 전역 메모리에 적재하여 공유
- 하지만 병행성으로 인하여 프로세스간 메모리 공유는 문제를 야기할 수 있음
참고