운영체제 강의- Monitor

이진호·2022년 5월 24일
0

운영체제 이론

목록 보기
5/9

Monitor

  • Language-level constructs
    - 프로그래밍 언어가 상호배제를 서포트 함.
  • Object-Oriented concept와 유사
  • 사용이 쉬움
  • 공유 데이터와 Critical section의 집합
  • Conditional variable
    - wait(), signal() operations

Monitor의 구조

  • Entry queue (진입 큐)
    - 모니터 내의 procedure(= func) 수만큼 존재
  • Mutual exclusion(=lang. 보장)
    - 모니터 내에는 항상 하나의 프로세스만 진입 가능
  • Information hiding (정보 은폐)
    - 공유 데이터는 모니터 내의 프로세스만 접근 가능
  • Condition queue (조건 큐)
    - 모니터 내의 특정 이벤트를 기다리는 프로세스가 대기
  • Signaler queue (신호제공자 큐) (= 조건 큐에 시그널을 전달하기 위함)
    - 모니터에 항상 하나의 신호제공자 큐가 존재
    - signal() 명령을 실행한 프로세스가 임시 대기

자원 할당 문제

procedure requestR(): # 대출
begin
	if (-R_Available) then # 책을 이용가능하지 않으면
    	R_Free.wait(); # 기다림
    R_Available <- false; # 이용가능하면 해당 상태 false
end;

procedure releaseR(): # 반납
begin
	R_Available <- ture; # 이용가능하도록 True
    R_Free.signal(); # 기다리고 있는 쪽에 signal
end;

자원 할당 시나리오

ReleaseR()에서 바로 대기큐에 있는 프로세스에게 시그널을 보내도 바로 모니터로 들어올 수 없음. 모니터엔 한 프로세스만 들어올 수 있도록 되어있기 때문에

남은 작업: resource를 반납한 후 추가적으로 수행해야 하는 작업들이 있는 경우

모니터라는 영역을 lang.가 보장해주기 때문에 간단하게 구현이 가능한 것

producer-consumer problem

procedure, 2가지: 물건을 넣는 것(producer가 호출), 물건을 뺴는 것(consumer가 호출)

conditional queue, 2가지: 물건을 넣을 공간이 없을 경우 기다리는 큐, 가져갈 물건이 없어서 기다리는 큐

위치, 2가지: in(producer가 물건을 넣을 위치), out(consumer가 어디서 물건을 빼갈지)

물건 수: valid bufs

critical data: in, out, valid bufs

Monitor

  • 장점
    - 사용이 쉽다
    - Deadlock 등 error 발생 가능성이 낮음
  • 단점
    - 지원하는 언어에서만 사용 가능
    - 컴파일러가 os를 이해하고 있어야 함
    • Critical section 접근을 위한 코드 생성

0개의 댓글