![]()
![]()
목차
1. 서론
2. 본론
(1) Lock을 이용한 소프트웨어적 해결 방법
(2) 데커 알고리즘
(3) 하드웨어적 해결방법
(4) 세마포어
(5) 모니터(Monitor)
3. 결론
4. 출처 및 참고문헌
본문내용
임계 영역(Critical Section)이란 임계 자원을 프로그램에서 이용하는 데 있어 공유 메모리가 참조되는 프로그램의 부분으로 한순간에 하나의 프로세스만 사용할 수 있는 영역을 의미한다. 쉽게 말해 공유자원이 함께 있어 교착상태(dead lock)가 발생할 수 있는 영역을 뜻한다. 동시에 접근해 교착상태가 생기지 않도록 각 프로세스의 독점을 보장해 줘야 한다. 임계 영역에 교착상태가 발생했을 시 해결하기 위해서 프로세스들이 서로 협력하여 자원을 사용할 수 있도록 프로토콜을 설계해야 하는데 그러려면 “상호 배제, 진행, 제한된 대기”를 만족시켜야 한다. 각각은 본론에서 자세히 다루도록 하겠다.
임계 영역에 문제가 발생한 경우를 실생활에 대입시키면 수많은 예시가 나오지만 쉽게 와닿는 예시를 하나 들자면 횡단보도에 빗대고 싶다. 횡단보도에서 보행자와 자동차가 동시에 진입해도 좋다는 큐를 받으면 어떻게 되겠는가? 이런 상황을 임계 영역에서 교착상태가 발생한 상황이라고 한다. 이 문제를 해결하려면 보행 신호 시엔 차의 진입을 막아야 하고, 주행 신호일 때는 보행자의 진입을 막아야 하지 않겠는가?
더 쉬운 예를 들어보자. 두 사람이 머리를 빗어야 하는데 거울과 빗이 각각 하나씩 있다. 한 사람은 거울을 점유하고 한 사람은 빗을 점유했다. 하지만 거울을 점유한 사람은 빗이 필요하고 빗을 점유한 사람은 거울이 필요하다. 서로 상대가 점유한 것을 주길 바라고 있는 교착상태에 빠지면 어떻게 해야 하겠는가? 순서를 정해서 한 사람씩 거울과 빗을 점유하고 머리를 빗으면 된다.
이렇게 문제를 해결하는 프로토콜을 대입해서 각 프로세스의 협력으로 문제를 해결할 수 있는데 각각의 프로세스들은 독점상태를 최대한 빠르게 종료하고 다음 프로세스에 독점을 넘겨야 한다.
출처 : 해피캠퍼스
답글 남기기