한 프로세스가 다른 프로세스에게 영향을 받거나 주는 프로세스
logical address space를 공유하거나, data를 공유(share memory or message-passing)
shared data에 cuncurrent하게 접근할 때 data inconsistency 를 고려해야 한다.
concurrent하게 실행되는 프로세스들이 정해진 순서로 실행(orderly execution)되도록 보장해주어야 데이터의 consistency 가 유지된다.
Concurrent execution : 실행 중인 프로세스가 interrupt를 받고, 다른 프로그램이 실행된다.
→ Shared data가 존재한다면 데이터 동기화에 문제가 발생함
Parallel execution : 여러 개의 프로세스가 여러 개의 CPU에서 실행되면 마찬가지로 동기화 문제가 발생함
두 프로세스는 data를 공유하고 비동기적(asynchronously)으로 실행된다.
buffer에 item이 몇 개 존재하는지 체크하기 위해서 정수 형 변수 count를 추가한다.

두 프로세스가 개별적으로 잘 작동해도 Data inconsistency 발생
→ 간단한 예제를 통해 확인해보자
