스터디/운영체제

[인프런 CS 전공지식 스터디 3기_운영체제] 5. 데드락

왹져박사 2025. 3. 16. 11:04

데드락(교착상태)

여러 프로세스가 서로의 작업 종료를 기다리다 모두 작업을 진행하지 못하는 상태 : 교착상태

공유자원이 원인

 

교착상태의 필요조건

1. 상호배제

프로세스가 한 리소스를 점유한 상태에서 다른 프로세스에게 공유 불가한 상태

2. 비선점

다른 프로세스가 점유한 공유자원을 빼앗을 수 없는 상태

3. 점유와 대기

공유자원을 점유한 상태에서 다른 공유자원을 점유하고 싶어 하는 상태

4. 원형 대기

점유와 대기 상태의 프로세스들이 원형을 이룬 상태

 

교착상태의 예방은 제약이 많고 비효율적.

이 대신 교착상태에 빠졌을 때 해결하는 방법을 연구. 

 

 

데드락 해결

교착상태 회피 (예방)

프로세스들에게 어느 정도 자원을 할당해야 교착상태가 발생하는지 파악

교착상태가 발생하지 않는 수준의 자원 할당

 

전체 자원의 수 & 할당된 자원의 수

안정 상태 / 불안정 상태

 

OS는 최대한 안정상태를 유지하려고 자원할당.

불안정 상태는 교착상태에 빠질 확률이 높아지는 것.

 

은행원 알고리즘

안정상태 : 상환 능력

 

OS는 자신의 전체 자원의 수를 인식 : 시스템의 총 자원

각 프로세스는 필요한 자원의 최대숫자 OS에 알림 : 최대 요구 자원

 

불안정상태 :

시스템의 사용 가능한 자원보다 모든 프로세스의 요청 예상 자원의 수가 더 많은 경우

 

비용이 비싸고 비효율적

 

 

교착상태 해결

1. 가벼운 교착상태 검출

타이머를 이용

프로세스가 일정시간동안 작업을 진행하지 않으면 교착상태 발생으로 간주

교착상태를 해결하기 위해 마지막 저장 체크포인트로 롤백

 

교착상태가 아닌 프로세스를 종료시킬 수 있음

 

2. 무거운 교착상태 검출

자원 할당 그래프 이용

OS가 프로세스의 자원 사용을 지켜본 후, 교착상태 발생 시 해결

교착상태를 해결하기 위하여

교착상태를 일으킨 프로세스 강제 종료, 다시 실행 시 체크포인트로 롤백

 

OS가 지속적으로 자원할당 그래프 유지, 검사 필요 → 오버헤드 발생

하지만, 가벼운 교착상태 검출에서 일어나는 교착상태가 아닌 프로세스의 종료 발생 X