2023. 3. 21. 14:35ㆍ운영체제
-교착상태 : 자원을 가지고 있는 일련의 프로세스들이 더 이상 진행하지 못하고 묶인채 가만히 있는 상황
how 해결? : 교착상태 방지, 교착상태 회피, 교착상태 검출 및 복구
1. 교착상태 방지 deadlock prevention
: 교착상태가 일어나기 위한 네 가지 필요조건 중 하나 이상을 결여되게하여 교착상태가 일어나지 않게 하는 것
1) 상호배타 조건 결여
: 프로세스들이 자원을 동시에 함께 사용하도록
but, 불가능
2) 보유 및 대기 조건 결여
: 어떤 자원을 갖고 있으면서 다른 자원을 가지려고 기다리는 행동을 하지 않는 것
but, 성능↓
3) 비선점 조건 결여
: 다른 프로세스가 가지고 있는 자원을 강제로 뺏도록
but, 불가능
4) 환형대기 조건 결여
: 자원할당도에서 자원 할당 및 화살표들이 원을 이루지 못하도록
자원할당자(=운영체제)
2. 교착상태 회피 deadlock avoidance
: 정해진 분량 내에서만 자원을 할당하게 하여 교착상태가 일어나는 것을 피함
즉, 자원이 고갈될 경우...
ex)
총 8개의 자원이 있다고 가정하자. 이 때 P1~P3가 현재필요한 자원은 각각 2개씩이므로 먼저 나눠준다. 그러면 2개의 자원이 남게된다.
① P1은 6개의 자원을 더 필요로 하는데 현재 남은 자원은 2개이므로 기다린다.
② P2는 2개의 자원을 더 필요하는데 현재 남은 자원2개를 나눠준다. 현재남은 자원이 0이 되므로 P1과 P3에게 못 나눠준다.
③ 따라서 P2가 끝나기까지 기다렸다가 끝나면 가지고 있던 자원 모두 4개를 반납한다. 그러면 현재 남은 자원은 총 4개이다.
④ 자원 4개로 P1에게 나눠줄 수 없다. 따라서 P3는 3개의 자원을 더 필요로 하므로 나눠주면 현재 남은 자원은 1개가 된다.
⑤ P3가 종료되면 총 5개의 자원을 반납하여 현재 남은 자원은 총6개가 된다.
⑥ 남은 자원 모두를 P1에게 나눠준다.
⑦ P1이 종료되면 다시 남은 자원은 총8개가 된다.
ex)
총 8개의 자원이 있다고 가정하자. 이 때 P1~P3가 현재필요한 자원은 각각 2,2,3개씩이므로 먼저 나눠준다. 그러면 1개의 자원이 남게된다.
① P1은 6개의 자원을 더 필요로하는데 남은 자원은 1개이므로 기다린다.
② P2는 2개의 자원을 더 필요로하는데 남은 자원은 1개이므로 기다린다.
③ P3도 2개의 자원을 더 필요로하는데 남은 자원은 1개이므로 기다린다.
따라서 교착상태 발생!
3. 교착상태 검출 및 복구 deadlock detection and recovery
: 교착상태 허용하나 해결한다. 교착상태 되기 전의 상태를 기억한다.
-타임 스템프 time stamp : 주기적으로 현재 상태 기록
-롤백 rollback : 교착상태가 발생되지 않는 상태로 되돌아가는 것
-오버헤드 overhead : 추가부담
4. 교착상태 무시
: 컴퓨터를 재시동