티스토리 뷰

반응형

임계구역 해결 방법

임계구역 문제를 해결하는 단순한 방법은 잠금을 이용하는 것이다.

잠금을 이용하여 프로세스의 대기를 결정해 프로세스의 통신을 조절할 수 있다.

 

  1. 임계구역 해결 조건을 고려한 코드 설계
  2. 피터슨 알고리즘
  3. 데커 알고리즘
  4. 세마포어
  5. 모니터

 


 

 

1. 임계구역 해결 조건을 고려한 코드 설계

 1-(1) 상호 배제 문제

*상호 배제 : 임계구역 안에는 하나의 프로세스만 있어야 한다.

 

- 잠금을 건다.

- 잠금이 걸렸을 경우 무한 대기

- 잠금이 풀리면 임계구역에 진입 후 작업

 

- 동시 진입 문제

  1. 잠금이 걸리기 전에 강티 진입할 경우
  2. 상호 배제 조건 보장 X

 

1-(2) 한정 대기 문제

 

- 상호 배제 문제의 보완

- 잠금을 2개 건다

 

- 무한 루프 문제가 발생할 수 있다 (교착 상태)

*교착 상태 : 프로세스가 살아 있으나 작업이 진행되지 못하는 상태

 

1-(3) 진행의 융통성 문제

- 임계구역 안에는 하나만 존재 (상호 배제)

- 서로 다른 두 프로세스 중 하나가 임계구역에 진입하면 남은 프로세스는 나올 때까지 기다려야 하므로 진행을 방해한다

 

2 피터슨 알고리즘

turn이라는 공유 변수를 사용

 

- turn은 두 프로세스가 동시에 잠금을 설정하여 임계구역에 못 들어가는 상황에 대비하여 만들었다

- 2개의 프로세스에서만 사용할 수 있는 한계가 있다

 

3 데커 알고리즘

하드웨어 도움 없이 임계구역 문제를 해결할 수 있다

 

- 그동안 중간에 타임아웃이 발생하지 않도록 하드웨어적으로 막아야 임계구역 문제가 해결되었다

- 데커 알고리즘은 하드웨어 없이 임계구역 문제 해결 가능

- 세 가지 조건을 만족해야 한다

- 변수가 많고 알고리즘도 복잡하다는 단점이 있다

 

4 세마포어

세마포어는 임계구역에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 진입한다

 

- 구현하기 비교적 간단하다

- 임계구역 진입 전 스위치 on으로 변경 후 진입

- 뒤에 임계구역 들어가야 하는 프로세스는 대기

- 임계구역 진입 프로세스가 작업이 끝나면 동기화 신호 전송

 

5 모니터

공유자원을 내부적으로 숨기고 공유자원에 접근하기 위한 인터페이스만 제공함으로써 자원을 보호하고 프로세스 간 동기화를 시킨다

 

- 임계구역으로 지정된 변수나 자원에 접근하고자 하는 프로세스는 직접 모니터에 작업 요청

- 모니터는 요청받은 작업을 모니터 큐에 저장한 순서대로 처리하고 그 결과만 해당 프로세스에 알려준다

 

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함