1. 교착 상태 개념
가. 개념
다중 프로그래밍 시스템에서 프로세스가 결코 일어나지 않을 사건(event)을 기다리는 상태
프로세스가 교착 상태에 빠지면 작업 정지되어 명령 진행 불가
운영체제가 교착 상태를 해결하지 못할 경우 시스템 운영자나 사용자는 작업 교체, 종료하는 외부 간섭으로 해결
하나 이상의 작업에 영향을 주어 무한 대기, 기아 상태보다 더 심각한 문제 야기
두 프로세스가 사용하는 자원(비공유) 서로 기다리고 있을 때 발생
자원 해제 요청 받아들일 때까지 프로세스들은 작업 진행 불가
자원 해제 수신 때까지 현재 보유 자원도 해제 불가
https://ko.wikipedia.org/wiki/교착_상태
나. 프로세스의 자원 사용 순서
1) 자원 요청
프로세스가 필요한 자원 요청하며, 해당 자원의 다른 프로세스가 사용 중이면 요청을 수락 때까지 대기
2) 자원 사용
프로세스가 요청한 자원 획득하여 사용
3) 자원 해제
프로세스가 자원 사용 마친 후 해당 자원을 되돌려(해제) 줌.
2. 교착 상태 발생
가. 컴퓨터 시스템에서 교착 상태의 발생
1) 스풀링 시스템에서 발생하는 교착 상태
스풀링 시스템은 쉽게 교착 상태에 빠짐.
디스크에 할당된 스풀 공간의 출력을 완료하지 않은 상태에서 다른 작업이 스풀 공간을 모두 차지하면 교착 상태 발생
스풀링 처리부에 공간이 넉넉하면 교착 상태 발생률은 감소하나 비용 많이 듦.
스풀링 파일의 일정 포화 임계치(Saturation Threshold)를 설정하여 교착 상태 예방 가능
2) 디스크를 공유할 때 발생하는 교착 상태
디스크 사용에 제어가 없으면 프로세스들이 서로 충돌하는 명령
디스크 제어기가 프로세서와 독립적으로 작동할 때 발생하는 교착 상태
나. 네트워크에서 발생하는 교착 상태
1) 교착 상태가 발생하는 경우
네트워크가 붐빌 경우
입출력(I/O) 버퍼 공간이 부족한 네트워크 시스템에 메시지 흐름 제어하는 적절한 프로토콜이 없는 경우
3. 교착 상태 발생 조건
가. 교착 상태 발생의 4가지 조건
1) 상호 배제
최소 하나 이상의 자원 비공유
한 번에 프로세스 하나만 해당 자원 사용할 수 있어야 함.
사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원 해제될 때까지 대기
2) 점유와 대기
최소 하나 정도의 자원 보유
다른 프로세스에 할당된 자원 얻으려고 대기하는 프로세스가 있어야 함.
3) 비선점
자원 선점 불가
강제로 빼앗을 수 없고, 점유하고 있는 프로세스가 끝나야 해제
4) 순환 대기
나. 교착 상태의 표현
1) 시스템 자원 할당 그래프인 방향 그래프 표현
2) 자원 할당 그래프
G= (V, E)로 구성
정점 집합 V
프로세스 집합 P= {P1, P2, ..., Pn}
자원 집합 R= {R1, R2, ..., Rn}
간선 집합 E
원소 (Pi, Rj)나 (Rj, Pi)와 같은 순서쌍으로 표현
3) 사이클이 있어 교착 상태인 자원 할당 그래프
4) 자원 할당 그래프의 예
5) 교착 상태의 할당 그래프와 사이클
6) 사이클이 있으나 교착 상태가 아닌 할당 그래프