반응형
Monitors
동기화 문제를 상위 수준에서 해결하기 위해 나온 것이 Monitors이다. 클래스와 같은 구조로 지원해준다.
즉, 직접 접근이 어렵고 monitors를 통해서만 접근할 수 있다는 의미로, 공유자원을 보호할 수 있다.
각 언어마다 다 다르지만, 공통적인 부분은 여러 프로세스들에 의해 공유될 수 있다.
Monitors는 한순간에 하나의 프로세스만 사용 가능하고 모니터를 누군가 사용하고 있다면 다른 프로세스들은 대기해야 하며, 공유 자원은 Monitors가 지원하는 동작으로만 접근할 수 있다.
Liveness
Progress와 bounded-waitiing이 모두 만족하는 상황을 Livenss라고 부른다. 이 liveness를 저해하는 요소가 3가지 있다.
1. Deadlock
- 두 개 이상의 프로세스가 이러지도 저러지도 못하는 상황을 의미한다. 꼬이는 상황이다.
2. Starvation
- 특정 프로세스가 semaphore를 얻지 못하게 계속 기다리게 되는 상황이다.
3. Priority-inversion
- 낮은 우선순위를 가진 프로세스가 lock을 가지고 있을 때, 더 높은 우선순위임에도 불구하고 lock이 없기 때문에 기다려야 하는 상황이다.
반응형
댓글