-
[OS] 프로세스 동기화와 상호배제 (Process Synchronization and Mutual Exclusion) - ③Computer Science/운영체제 2020. 12. 19. 20:42
Language Level Solutions
Monitor(모니터)
공유데이터와 임계 영역의 집합
wait(), signal() 연산 존재
사용이 쉽고, Deadlock(교착상태) 등 에러 발생 가능성이 낮음
Monitor의 구조
- Entry Queue(진입 큐) : 모니터 내의 procedure(function) 수 만큼 존재
- Mutual Exclusion(상호 배제) : 모니터 내에는 항상 하나의 프로세스만 진입 가능
- Information Hiding(정보 은폐) : 공유 데이터는 모니터 내의 프로세스만 접근 가능
- Condition Queue(조건 큐) : 모니터 내의 특정 이벤트를 기다리는 프로세스가 대기
- Signaler Queue(신호 제공자 큐) : 모니터에 항상 하나의 신호 제공자 큐가 존재, signal() 명령을 실행한 프로세스가 임시 대기
Monitor로 해결할 수 있는 문제
자원 할당
자원 R이 사용 가능하고, Monitor 안에 어떠한 프로세스도 존재하지 않는 상태
프로세스 j가 모니터 안에서 자원 R을 요청한 상태, available 값을 1에서 0으로 바꿈
자원 R이 j에게 할당되고, 프로세스 k와 m이 차례대로 자원 R을 요청하지만 available 값이 0이므로 R을 현재 할당 받을 수 없기에 조건 큐에서 대기하는 상태
j가 자신의 일을 끝내고 R을 반납하고 available 값을 1로 바꿈, 신호 제공자 큐로 가서 자원 할당을 기다리는 k 프로세스를 wakeup 하고, k가 자원 R을 할당 받게 되면서 available 값이 다시 0이 됨
j가 다시 모니터 안에 들어와서 남은 작업을 수행
Producer-Consumer(생산자-소비자)
Reader-Writer
Dining Philosopher
- 프로세스 : 5명의 철학자
- 연산 : 철학자들은 '생각하기', '스파게티 먹기' 두개만 반복
- 공유자원 : 스파게티, 포크
- 스파게티를 먹기 위해서 좌우 포크 2개 모두 들어야 함
do forever pickup(i); eating; putdown(i); thinking; end
Monitor의 문제점
- 지원하는 언어에서만 사용 가능
- 컴파일러가 OS를 이해하고 있어야 함
- 임계 영역에 접근을 위한 코드 생성
참고
[Course] Operating System (CPA310) - 운영체제 강의
'Computer Science > 운영체제' 카테고리의 다른 글
[OS] 교착 상태 (Deadlock) (0) 2021.01.11 [OS] 프로세스 동기화와 상호배제 (Process Synchronization and Mutual Exclusion) - ② (0) 2020.12.19 [OS] 프로세스 동기화와 상호배제 (Process Synchronization and Mutual Exclusion) - ① (0) 2020.12.19 [OS] 프로세스 스케줄링 (Process Scheduling) (0) 2020.11.06 [OS] 스레드 관리 (Thread Management) (0) 2020.10.21