솜은 코튼

[OS] 모니터 본문

OS

[OS] 모니터

솜.코 2023. 5. 29. 12:10

2023.05.23 - [OS] - [OS] Mutex, 세마포어, 모니터

 

[OS] Mutex, 세마포어, 모니터

Mutex Locks . 임계구역을 보호하기 위해 mutex 락을 사용한다. 즉, 프로세스는 임계구역에 들어가기 전에 반드시 락을 획득해야 하고, 빠져나올 때 락을 반환해야 한다. acquire() 함수가 락을 획득하고

sommda.tistory.com

 

 

모니터

.

 

 

이전 글에서 모니터에 대해 설명하였는데 좀 더 자세히 알아보려 합니다.

 

 

먼저 동기화 하는 여러 방법들이 있었는데

예로 Mutex락, 세마포 등이 있었죠?

 

하지만 타이밍 오류나 잘못된 사용으로 임계구역을 보호받지 못하는 상황이 생기게 되어

이 오류를 처리하기 위해 간단한 동기화 도구를 통합한 고급 언어 구조물인 모니터 형이 있습니다.

 

 

모니터 형은 모니터 내부에서 상호 배제가 보장된 프로그래머가 정의한

일련의 연산자 집합을 포함하는 ADT입니다.

 

여기서 ADT는 데이터와 데이터를 조작하는 함수들의 집합을 하나의 단위로 묶은 것인데

 

 

모니터 형은 변수의 선언을 포함하고 변수들을 조작하는 함수도 포함하고 있습니다.

 

중요한 점은 다른 프로세스들이 직접 사용할 수 없습니다.

오직 모니터 내의 정의된 함수만 접근할 수 있습니다.

 

또한 모니터 안에 항상 하나의 프로세스만이 활성화되도록 보장해 줍니다.

 

 

한마디로 앞에 설명한 방법은 프로그래머가 직접 구현해야 하므로 여러 문제들이 발생할 수 있는데

모니터는 알아서 처리를 해주기 때문에 문제가 발생할 수 없다! 입니다.

 

 

 

 

 

 

위의 코드는 통장에 돈을 입금하는 상황입니다.

예금은 'balance', 잠금 역할은 'busy', 잠금 해제 역할은 'mon' 변수를 사용하며,

 

increase()라는 예금 데이터를 변경할 수 있는 인터페이스만 공유하고

예금 데이터를 처리하는 변수들은 private 영역으로 접근할 수 없도록 하였습니다.

 

이처럼 모니터는 작업을 처리하고 사용자에겐 인터페이스(금액 증가 함수)만 제공합니다.

 

 

또한 모니터는 임계구역 보호와 동기화를 위해 내부적으로 상태 변수인 wait()와 signal() 기능이 있는데

위의 코드에서는 상태 변수가 mon입니다.