다중 프로그래밍 시스템
- 여러 개의 프로세스들이 존재
- 프로세스들은 서로 독립적으로 동작
- 공유 자원 또는 데이터가 있을 때, 문제 발생 가능
동기화 (Synchronization)
- 프로세스들이 서로 동작을 맞추는 것
- 프로세스들이 서로 정보를 공유하는 것
비동기적 (Asynchronous)
- 프로세스들이 서로에 대해 모름
병행적 (Concureent)
- 여러 개의 프로세스들이 동시에 시스템에 존재
병행 수행중인 비동기적 프로세스들이 공유 자원에 동시 접근 할 때 문제가 발생 할 수 있음
- Race Condition : 순서에 따라 결과가 달라짐 -> 해결책 : 상호배제
Mutual exclusion primitives (Primitive = 기본 연산)
1. enterCS() primitive
- Critical section 진입 전 검사
- 다른 프로세스가 critical section 안에 있는지 검사
2. exitCS() primitive
- Critical section을 벗어날 때의 후처리 과정
- Critical section을 벗어남을 시스템이 알림
- Two Process Mutual Exclusion
- Dijkstra 알고리즘의 flag[] 변수
flag[]의 값 의미 idel 프로세스가 임계 지역 진입을 시도하고 있지 않을 때 want-in 프로세스의 임계 지역 진입 시도 1단계일 때 in_CS 프로세스의 임계 지역 진입시도 2단계 및 임계 지역 내에 있을 때