프로세스 교착상태
지난주 복습
- 컴퓨팅 시스템의
처리 효율을 높이기 위해서 여러 프로세스를 동시에 실행하는 것처럼병행으로 동작시킨다. -
다른 프로세스와 상호작용하면서 동작하는 협력 프로세스의 경우 동시에 동일한 자원이나 데이터에 접근하면서 비정상적인 결과를 생성할 수 있다.
- 협력 프로세스가 공유 자원에 접근하고 있는 상황에서 다른 프로세스가 동일한 공유 자원에 접근하지 목하도록 하는 것을
상호배제라고 한다. -
프로세스간에 진행 순서를 맞추는 제어 행위를
동기화라고 한다. -
임계영역은 프로세스 코드의 일부분으로서 다른 프로세스와 공유하는 데이터를 변경시키는 부분을 말한다. 한 프로세스가 임계영역에서 동작하는 동안에는 다른 프로세스가 동일한 임계영역에 들어가지 못하도록 함으로서 상호 배제를 보장한다. - 상호배제를 구현하기 위하여 소프트웨어적으로
데커 알고리즘,피터슨 알고리즘등이 있으며 하드웨어적으로TestAndSet,compareAndSwap방법등이 있다. - 다익스크라의 제안으로 도입된 동기화 도구인
세마포를 이용하여 상호배제를 이룰 수 있다. - 프로그래머의 오류 가능성을 감소시키기 위한 고급 병행 제어 구조로서
모니터의 개념이 도입되었으며, 객체구조로 공유데이터, 초기화 코드, 프로시저로 구성된다.
학습목표
- 교착 상태의 개념과 발생 원인을 설명할 수 있다.
- 교착 상태를 해결하는 방법을 제안할 수 있다.
학습내용
퀴즈로 확인하기
정리하기
- 다중 프로그래밍 환경에서 프로세스가 결코 발생하지 않을 사건을 기다리는 상태가 되면
교착상태라고 한다. - 교착상태는 상호 배제, 점유와 대기, 비선점 조건, 순환 대기를 만족할때 발생한다.
- 교착상태를 해결하는 방법으로는
- 교착 상태가 발생하지 않도록 예방하거나
- 교착 상태의 발생 가능성을 인정하지만 발생시점에 적절히 회피하거나
- 교착상태가 발생하였는지 감지하여 제거하거나
- 아예 무시하고 개발자으 몫으로 넘기는 방법이 있다.
- 높은 우선순위의 프로세스가 낮은 우선순위의 프로세스로 인하여 우선순위가 낮은 것처럼 대기하고 있는 상태를 우선순위 역전이라고 한다. 이를 해결하기 위하여 우선순위 계층 프로토콜을 이용한다.