상호배제는 공유가 불가능한 자원을 동시에 사용하는 현상을 피하기 위해서 사용하는 알고리즘으로 하나의 프로세스가 작업을 완료되기 전까지 다른 프로세스가 접근을 허용하는 것을 막는 것을 말한다.
임계 구역
- 동시에 공유되서는 안되는 자원을 임계 구역(Critical Section)이라고 한다.
- 계산이 느리다는 단점이 있으나 높은 정확성을 보장한다.
- 데드락 상태를 유발한다는 단점이 있다.
상호배제 해결 알고리즘으로는
데커 알고리즘, 피터슨 알고리즘, 베이커리 알고리즘이 있다.
데커 알고리즘
- 공유 메모리를 사용하여 두 프로세스가 하나의 자원을 혼란없이 사용할 수 있게 하는 알고리즘이며 두 프로세스가 동시에 임계 영역에 진입할려 고 할 때 하나만 들어가도록 하는 기법이다. 한 프로세스가 이미 임계 영역에 있다면 다른 프로세스는 이미 들어간 프로세스의 작업이 마칠 때까지 기다린다.
피터슨 알고리즘
- 두 개의 프로세스를 기준으로 구현한 알고리즘이며 이전에 진입한 프로세스가 다음에 진입할 프로세스에게 양보를 해주는 알고리즘이다.
베이커리 알고리즘
- 프로세스 별로 우선순위를 부여해서 각 프로세스별 자기 차례가 오기까지를 기다리게 하는 알고리즘이다. 이 알고리즘에 특징은 프로세스 개수에 제한이 없다.
'CS' 카테고리의 다른 글
임계 구역 (Critical Section) (0) | 2024.05.19 |
---|---|
문맥교환 오버헤드 (Context Switch Overhead) (0) | 2024.05.17 |
인터럽트(Interrupt) (0) | 2024.05.15 |
데드락(DeadLock) (0) | 2024.05.14 |
애자일(Agile) (0) | 2024.05.07 |