동시성, Concurrency
- 동시성은 여러 작업이 겹치는 기간에 실행될 수 있음
- 동시에 실행하는 것이 아니라 CPU가 작업마다 시간을 분할해 적절하게 context switching을 해서 동시에 실행되는 것처럼 보이게 함
- 유휴 시간을 최소화하기 위함
- 같은 시간에 같은 자원에 접근하는 상황에 대비해 해당 자원에 write 권한으로 접근하는 경우 데이터의 무결성 유지가 중요함
병렬성, Parallelism
- 병렬성은 동일한 시간에 독립적인 작업을 실행할 수 있음
- 동시성과는 달리 여러 작업을 다른 코어, 다른 프로세스, 별도의 컴퓨터 등에서 동시에 실행
비교
Core 1,2 와 Task 1,2가 있을때
- 동시성의 경우
Core1에서만 Task 1과 2를 번갈아가면서 실행
- 병렬성의 경우
Core 1과 2에서 Task 1,2를 독립적으로 실행
발생가능한 문제
- 동시성
Race Condition: 여러 프로세스가 하나의 자원에 접근해 서로의 실행 결과에 영향을 주는 현상
Deadlock: 여러 프로세스가 서로 상대방의 작업이 끝나기를 무한히 기다리는 현상
Starvation: 특정 프로세스가 우선순위가 낮아 원하는 자원을 계속 할당 받지 못하는 현상
- 병렬성
메모리 손상, 누수 등