운영체제

모니터와 고전적 동기화 문제

세마포어는 강력하지만 위험합니다. wait과 signal의 순서를 프로그래머가 직접 관리해야 하며, 순서가 틀리면 데드락이 발생하고, signal을 빠뜨리면 영원히 대기하고, wait을 빠뜨리면 상호 배제가 깨집니다.

while을 써야 하는 이유와 C의 pthread 조건 변수를 중심으로 모니터와 고전적 동기화 문제의 판단 흐름을 읽습니다.

1

모니터의 개념

모니터는 상호 배제가 내장된 추상 데이터 타입입니다.

모니터(Monitor)
2

Java의 synchronized — 모니터 구현

Java에서 모든 객체는 내장 모니터를 가지고 있습니다.

언어 또는 라이브러리 차원
3

Python의 Condition — 모니터 구현

Python에서는 threading.Condition이 모니터 역할을 합니다.

상호 배제가 내장된 추상 데이터 타입