CS/운영체제

임계구역(critical section)문제와 뮤텍스(mutex), 세마포어(semaphores)

씩씩한 IT블로그 2023. 3. 10. 01:26
반응형

임계구역 문제(the critical section problem)

멀티 프로세스가 공유자원을 사용하는 과정에서 발생하는 문제들. 다양한 프로세스가 공유자원(공통변수)를 건들이면서 데이터의 정합성이 깨지는 현상

* 임계구역 : 공유자원에 접근하는 코드 영역

 

임계구역 문제의 해결 조건

임계구역 문제를 해결하기 위해선 다음의 조건을 만족해야 한다.

1. 상호배제(mutual exclusion) : 특정 임계구역에서 프로세스가 실행되고 있으면, 다른 프로세스는 해당 임계구역에서 실행될 수 없음

2. 진행(progress) : 임계구역이 비어있을 때 프로세스는 무한정 기다리지 않고 순서에 맞게 진행된다.

3. 한정된 대기(bounded waiting) : 프로세스가 임계구역에 진입하려는 요청을 한 후 그 요청이 허용될 때 까지 다른 프로세스들의 진입 허용 횟수를 제한한다.

 

해결 방법

1. MUTEX

- 하나의 공유자원에 대하여 공유자원을 사용할 수 있게 하는 키를 두고, 프로세스가 키를 이용하여 공유자원에 접근

- 프로세스가 키를 가지고 있어야 공유자원에 접근하고 통제

- 화장실(공유자원)을 사용하기 위해 화장실을 사용할 수 있는 화장실키를 만들고 사람들(프로세스)가 키의 유무를 통해 화장실을 사용할 수 있는지 확인하고, 키를 이용하여 화장실을 사용

- 예) 데커, 피터슨 알고리즘 등

 

2. SEMAPHORES

- 여러개의 공유자원에 대하여 가용한 공유자원의 수를 나타내는 변수를 두고, 프로세스가 변수를 이용하여 공유자원들에 잡근

- 프로세스가 특별한 장치(키와 같은)없이도 공유자원 사용가능

- 이진 세마포(공유자원 1개)는 뮤텍스와 비슷하게 동작함

- 여러 화장실(공유자원)을 사용하기 위해 비어있는 화장실 칸의 개수를 표시하는 전광판(변수)를 만들고, 사람들(프로세스)이 전광판을 보고 화장실을 사용

 

* 아래의 잘 정리된 블로그 참고

https://worthpreading.tistory.com/90

반응형