티스토리 뷰
임계구역 해결 방법
임계구역 문제를 해결하는 단순한 방법은 잠금을 이용하는 것이다.
잠금을 이용하여 프로세스의 대기를 결정해 프로세스의 통신을 조절할 수 있다.
- 임계구역 해결 조건을 고려한 코드 설계
- 피터슨 알고리즘
- 데커 알고리즘
- 세마포어
- 모니터
1. 임계구역 해결 조건을 고려한 코드 설계
1-(1) 상호 배제 문제
*상호 배제 : 임계구역 안에는 하나의 프로세스만 있어야 한다.
- 잠금을 건다.
- 잠금이 걸렸을 경우 무한 대기
- 잠금이 풀리면 임계구역에 진입 후 작업
- 동시 진입 문제
- 잠금이 걸리기 전에 강티 진입할 경우
- 상호 배제 조건 보장 X
1-(2) 한정 대기 문제
- 상호 배제 문제의 보완
- 잠금을 2개 건다
- 무한 루프 문제가 발생할 수 있다 (교착 상태)
*교착 상태 : 프로세스가 살아 있으나 작업이 진행되지 못하는 상태
1-(3) 진행의 융통성 문제
- 임계구역 안에는 하나만 존재 (상호 배제)
- 서로 다른 두 프로세스 중 하나가 임계구역에 진입하면 남은 프로세스는 나올 때까지 기다려야 하므로 진행을 방해한다
2 피터슨 알고리즘
turn이라는 공유 변수를 사용
- turn은 두 프로세스가 동시에 잠금을 설정하여 임계구역에 못 들어가는 상황에 대비하여 만들었다
- 2개의 프로세스에서만 사용할 수 있는 한계가 있다
3 데커 알고리즘
하드웨어 도움 없이 임계구역 문제를 해결할 수 있다
- 그동안 중간에 타임아웃이 발생하지 않도록 하드웨어적으로 막아야 임계구역 문제가 해결되었다
- 데커 알고리즘은 하드웨어 없이 임계구역 문제 해결 가능
- 세 가지 조건을 만족해야 한다
- 변수가 많고 알고리즘도 복잡하다는 단점이 있다
4 세마포어
세마포어는 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 진입한다
- 구현하기 비교적 간단하다
- 임계구역 진입 전 스위치 on으로 변경 후 진입
- 뒤에 임계구역 들어가야 하는 프로세스는 대기
- 임계구역 진입 프로세스가 작업이 끝나면 동기화 신호 전송
5 모니터
공유자원을 내부적으로 숨기고 공유자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간 동기화를 시킨다
- 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 모니터에 작업 요청
- 모니터는 요청받은 작업을 모니터 큐에 저장한 순서대로 처리하고 그 결과만 해당 프로세스에 알려준다
좋아요는 로그인하지 않아도 누를 수 있습니다!
'운영체제' 카테고리의 다른 글
[쉽게 배우는 운영체제] 6장 : 교착 상태 (1/2) [OS] (0) | 2021.09.05 |
---|---|
[쉽게 배우는 운영체제] 5장 연습문제(심화문제) 정답 [OS] (0) | 2021.09.03 |
[쉽게 배우는 운영체제] 5장 : 프로세스 동기화 (1/2) [OS] (0) | 2021.09.02 |
[쉽게 배우는 운영체제] 4장 연습문제(심화문제) 정답 [OS] (0) | 2021.08.30 |
[쉽게 배우는 운영체제] 4장 : CPU 스케줄링 (2/2) [OS] (0) | 2021.08.30 |
- Total
- Today
- Yesterday
- 백준
- 프로그래머스
- 알고리즘
- 쉽게 배우는 자바 프로그래밍
- 운영체제
- 해답
- Python
- 풀이
- C++
- 문자열
- 답
- Web
- BFS
- 자바
- 쉽게배우는자바프로그래밍
- JS
- 파이썬
- py
- 자바스크립트
- 정리
- 연습문제
- java
- 구현
- 그리디
- 쉽게배우는
- OS
- 우종정
- 정답
- CPP
- 정렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |