Process Synchronization 2
Monitor 1
Semaphore의 문제점
정확성(correctness)의 입증이 어렵다.
한 번의 실수가 모든 시스템에 치명적 영향
- P와 V 순서 잘못될때(왼쪽)
- P연산후 V를 안해줬을 때(오른쪽)
monitor는 특별히 프로그래밍 언어 차원에서 Synchronization 문제를 해결하기 때문에 high-level synchronization construct라고 한다.
공유데이터를 접근하기 위해서는 내부의 procedure를 통해서만 접근가능하게 만듬
Monitor 2
프로그래머 입장에서는 뭐가 편할까?
- lock을 걸 필요가 없다.
- 기본적으로 monitor에 대한 동시접근을 허용하지 않는다. 나머지 프로세스는 기다려야 함(monitor가 자동으로 해결해서 프로그래머의 부담 줄여줌)
lock을 걸 필요는 없지만 자원의 개수를 세는건 필요하다. → condition variable
프로세스가 모니터 안에서 기다릴 수 있도록 하게 위해 condition variable 사용
Condition variable
- condition x,y ;
- Condition variable은 wait와 signal 연산에 의해서만 접근 가능
x.wait()
- 어떤 조건을 만족하지 않아서 오래기다려야 할 때, 그 프로세스를 잠들게 하려고 사용
- x라는 condition variable에 가서 줄을서도록 함
- x.wait()을 invoke한 프로세스는 다른 프로세스가 x.signal()을 invoke하기 전까지 suspend됨
x.signal()
- x라는 condition variable 조건을 기다리면서 잠든애들중에 하나를 깨워줘라.
- x.signal()은 정확하게 하나의 suspend된 프로세스를 resume한다.
- suspend된 프로세스가 없으면 아무 일도 일어나지 않음
'sw사관학교정글 > OS 개념정리' 카테고리의 다른 글
[week09] KOCW 운영체제(반효경교수님) - Memory Management 2 (0) | 2022.01.10 |
---|---|
[week09] KOCW 운영체제(반효경교수님) - Memory Management 1 (0) | 2022.01.10 |
[week08] KOCW 운영체제(반효경교수님) - Process Synchronization 1 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - CPU Scheduling 2 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - CPU Scheduling 1 (0) | 2021.12.30 |