본문 바로가기

CS/OS

[OS]Process Synchronization - Monitor

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