CS/운영체제
데드락
로드존슨
2023. 4. 11. 14:37
728x90
데드락
-리소스 경합, 적덜한 동기화 부족, 잘못된 자원 할당, 순환 대기, 프로그래밍 오류로 인해 데드락이 발생된다.
-
프로세스가 자원을 얻지 못해 다음 작업을 못하는 상태
데드락 발생조건
- 상호배제 : 자원은 한번에 한 프로세스만이 사용할 수 있어야 한다.
- 점유대기 : 하나의 자원을 점유하고 있으면서 자원을 추가로 점유하기 위해 대기하여야 한다.
- 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 뺴앗을 수 없다.
- 순환대기 : 이것들이 순환해서 이뤄진다.
데드락 해결방법
보통 데드락의 발생조건을 기준으로 데드락 해결방법을 찾는다.
- 데드락 발생 가능성을 게속 검사해서 데드락 발생가능성 있다면 회피한다.
- 데드락을 회피하기 위해 사용하는 개념은 Safe State 와 Unsafe State이다.
- 데드락을 회피하려면 Safe State의 프로세스가 Unsafe Stat로 변경되었을 때 state를 바꾸게 한 행동을 찾아 행동을 취소하는 등의 방식으로 다시 safe Stat 로 돌아가게 만들어야 한다.
- safe sequence 가 하나라도 존재한다면 state는 safe state이다.
safe sequence
-데드락이 발생하지 않고 모든 프로세스의 요구를 처리해줄 수 있는 순서를 의미한다.
-프로세스들이 현재 할당받은 자원, 할당받고 싶어하는 자원이 어떻게 되는지 파악한다.
-safe sequence가 하나라도 존재한다면 해당 state 는 safe state 이다.
- safe sequence를 찾는 방법 : 프로세스에 자원을 할당해주는 순서가 safe sequence가 하나라도 존재하면 safe state이다.
뱅커 알고리즘 : 뱅커 알고리즘은 다중 프세스와 다중 자원을 가진 시스템에서 교착 상태를 방지할 수 있는 잘 알려진 교착 상태 회피 알고리즘이다. 이것은 수학적 알고리즘을 사용하여 요청된 리소스 할당이 모든 프로세스가 결국 교착 상태 없이 실행을 완료할 수 있는 안전한 상태가 되는지 확인한다
궁극적으로 데드락를 방지하는 최상의 솔루션은 컴퓨터 시스템에서
교착 상태를 유발할 수 있는 조건을 식별하고 해결하는 것
728x90