상호 배제(Mutual Exclusion)
- Busy Waiting
- Sleep and WakeUp
- Semaphore(세마포어)
- Mutex(뮤텍스)
- Monitor
- Message Passing
- Barriers
Busy Waiting
Busy Waiting 은 loop문 을 이용해 공유 자원을 사용할 수 있는지 계속 확인하는 방법이다.
- cpu자원을 계속해서 낭비하기 때문에 무조건 적으로 피해야 한다.
- 기다리는 시간이 매우 작을 때만 사용하는 것이 좋다.
Semaphore(세마포어)
공유된 자원의 데이터에 한번에 여러 프로세스가 접근하지 못하게 하는 알고리즘
공유자원에 따라 몇개의 프로세스를 접근시킬지에 따라서 이진 세마포어 와 계수형 세마포어 로 나뉘게 된다
- 이진 세마포어(binary semaphore)
- 계수형 세마포어(counting semaphore)
뮤텍스
공유된 자원의 데이터에 한번에 여러 쓰레드가 접근하지 못하게 하는 알고리즘
Locking 매커니즘을 사용
모니터
- 주로 고급 언어에서 이 기능을 지원한다.