Monitor
등장배경
semaphore 사용 시 타이밍(프로그래밍)에러가 자주 발생
problem 예시
mutex 사용 시, process가 wait->signal 순서로 이루어 지지 않고 critical section에 동시에 접근하는 문제가 대부분
sit 1) signal->wait
sit 2) wait->wait
Monitor란?
high level 데이터 형태로 간단한 동기화 tool
프로세스 동기화에 편리하고 효율적인 매커니즘을 제공하는 고도의 추상화된 데이터 형태
-incorporate simple synchronization tools
Monitor type
- an ADT that includes a set of programmer-defined operations
-a high-level abstraction(language constructs) that provides a convenient and effective mechanism for process synchronization
a thread-safe(java) class, 객체 또는 모듈로, 발생한 절차나 변수에 안전하게 접근이 가능하게끔 하기 위해 안전하게 접근시키기 위해 , 하나 이상의 스레드에 의해 구조화 된 construct의 advantage를 보유하는 동안
프로그램 library로 보충된다.
- 프로세스는 이 절차들 중 하나를 깨우면서 모니터에 도달한다.
- 모니터는 resource에 접근 하는데에 상호배제 facility를 제공한다.
- 모니터는 프로세스가 각각 시그널을 주고받는 것을 허용하기 위해 condition변수를 포함한다.
많은 프로그래밍 언어에서 지원된다.
monitor monitor-name
{
// shared variable (private data)
// external operation (public method)
procedure P1 (…) { …. }
…
procedure Pn (…) {……}
Initialization code ( ….) { … }
…
}
'CS > OS' 카테고리의 다른 글
[OS]Mutex and Semaphore (0) | 2022.10.27 |
---|---|
[OS]Preview (0) | 2022.09.27 |