[OS] 임계 구역(Critical Section), 상호 배제(Mutual Exclusion)

Jeyeon Kim·2023년 10월 18일
0

운영체제

목록 보기
5/12

임계 구역(Critical Section)이란

다중 프로그래밍 운영체제에서 여러 프로세스가 공유하는 데이터 또는 자원에 대해 한 프로세스만 사용하도록 지정된 공유 자원을 말한다.
임계 구역에는 한 프로세스만 접근이 가능하고 한 프로세스가 자원을 반납한 후에만 다른 프로세스가 접근이 가능하다.
임계 구역은 한 프로세스가 독점해서는 아니하며 임계 구역에서의 작업은 신속하게 진행되어야 한다.
해당 문제를 해결하기 위해 상호 배제(Mutual Exclusion) 기법을 사용한다.

상호 배제(Mutual Exclusion)이란

어떤 프로세스가 공유자원을 액세스할 때 한 순간에 하나의 프로세스만 공유 자원을 사용할 수 있도록 하는 기법이다.
상호 배제는 4가지 요구 조건을 만족해야하며 그 요구 조건은 아래와 같다.
1. 두 개 이상의 프로세스들이 동시에 임계구역에 진입해서는 안된다.
2. 어떤 프로세스도 임계구역 진입이 무한 연기되면 안된다.
3. 임계구역에 진입한 프로세스가 다른 프로세스의 진입을 막을 수 있어야 한다.
4. 프로세스들의 상대적 속도에 대한 가정을 하면 안된다.

상호 배제 문제는 아래와 같은 알고리즘으로 해결이 가능하다.

  • 잠금
    하나의 프로세스가 임계구역을 점유한 후, 다른 프로세스가 접근할 수 없도록 잠금.
  • 인터럽트 봉쇄
    임계구역이 사용 중일 때 모든 인터럽트가 발생하지 않도록 함.
  • 엄격한 교대
    두 개의 프로세스가 하나의 임계구역에 교대로 한 번씩만 접근하는 방법.

하지만 위의 3가지 방법은 바쁜 대기(Busy wait) 문제가 있다. 대기 중인 프로세스가 계속해서 임계 구역에 진입을 시도하여 막히는 과정을 반복하게 되는 것인데, 이 바쁜 대기 현상이 증가하면 운영체제에 부담이 되어 시스템 전체 성능에 영향을 미친다. 이러한 문제를 해결하는 알고리즘으로 세마포어(Semaphore) 가 있다.

세마포어(Semaphore) 알고리즘

세마포어 알고리즘은 다익스트라가 제안하였으며 잠자기와 깨우기 연산을 이용하여 상호배제의 원리를 보장한다.
세마포어는 0과 1의 값을 가지며 한 개의 공유자원 상호 배제를 보장하는 이진형 세마포어,
0고 양의 정수 값을 가지며 여러 개의 공유자원 상호 배제를 보장하는 계수형 세마포어가 있다.

이를 실제로 구현한 프로그램으로 모니터(Monitor)가 있다.

profile
Computer software engineering

0개의 댓글