-
[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로 해결할 수 있는 문제
자원 할당
자원 할당 시나리오 1 자원 R이 사용 가능하고, Monitor 안에 어떠한 프로세스도 존재하지 않는 상태
자원 할당 시나리오 2 프로세스 j가 모니터 안에서 자원 R을 요청한 상태, available 값을 1에서 0으로 바꿈
자원 할당 시나리오 3 자원 R이 j에게 할당되고, 프로세스 k와 m이 차례대로 자원 R을 요청하지만 available 값이 0이므로 R을 현재 할당 받을 수 없기에 조건 큐에서 대기하는 상태
자원 할당 시나리오 4 j가 자신의 일을 끝내고 R을 반납하고 available 값을 1로 바꿈, 신호 제공자 큐로 가서 자원 할당을 기다리는 k 프로세스를 wakeup 하고, k가 자원 R을 할당 받게 되면서 available 값이 다시 0이 됨
자원 할당 시나리오 5 j가 다시 모니터 안에 들어와서 남은 작업을 수행
Monitor → 자원 할당 해결 Producer-Consumer(생산자-소비자)
Producer-Consumer(생산자-소비자) Monitor → Producer-Consumer 해결 Reader-Writer
Monitor → Reader-Writer 해결 Dining Philosopher
Dining Philosopher(철학자의 식탁) - 프로세스 : 5명의 철학자
- 연산 : 철학자들은 '생각하기', '스파게티 먹기' 두개만 반복
- 공유자원 : 스파게티, 포크
- 스파게티를 먹기 위해서 좌우 포크 2개 모두 들어야 함
do forever pickup(i); eating; putdown(i); thinking; end
Monitor → Dining Philosopher 해결 Monitor의 문제점
- 지원하는 언어에서만 사용 가능
- 컴파일러가 OS를 이해하고 있어야 함
- 임계 영역에 접근을 위한 코드 생성
참고
쉽게 배우는 운영체제
명쾌한 비유와 사례로 쉽게 배우는운영체제의 구조와 원리컴퓨터 관련 학과 학생을 대상으로 운영체제의 구조와 원리를 설명한 책이다. 주요 개념은 일상생활의 사례를 통해 쉽게 이해하고, 개
www.yes24.com
[Course] Operating System (CPA310) - 운영체제 강의
[Course] Operating System (CPA310) - 운영체제 강의
o Operating System (운영체제), CPA310, KOREATECH o Instructor: Duksu Kim (김덕수) o Course homepage: https://sites.google.com/view/hpclab/courses/operating-system 운...
www.youtube.com
'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