2021-10-30 운영체제 (7주차)
데드락
Deadlock Avoidance
자원할당 그래프 - 주면 데드락이 걸릴꺼같으면 안줌
- 사이클이 만들어졌을 때 - 안전하지 않다 - 데드락 만들어짐
- R2 - P2가 요청했을때 줄 수 있지만 안전해질때까지 기다리고 준다, P1에게는 줘도 안전하니 그냥 줄 수 있다
Banker’s Algorithm
각 프로세스들이 평생 최대로 쓸 자원을 알고있다고 가정 - Max
추가로 요청 가능한 양 - Need
- 0번 프로세스가 C를 요청했을때 - Need 값이 Available을 초과하기에 안준다 - 불안정한 상황이 만들어지기에
- P2가 요청했을땐 - 최대한 요청해도 Available 보다 적어서 내어 준다 - 안전
- P1 - P3 - P4 - P2 - P0 - 최대로얻으면 끝나고 가용자원으로 넘어가므로 하나씩 종료시켜 나간다. - safe
Deadlock Detection and recovery
Deadlock detection
- 자원당 인스턴스가 하나인경우 - 자원할당 그래프 이용
- 자원당 여러개의 인스턴스일경우 - 뱅커스 알고리즘같이 테이블로 알아낸다
- 현재 요청한 자원량을 기준으로 자원 나누어줌 - 낙관적 - 현재가 데드락인지 아닌지 구분
Deadlock recovery
- Process termination - 데드락과 연관된 모든 프로세스 죽이는 방법, 하나씩 죽이면서 데드락이 해결되었는지 확인
- Resource Preemption - 자원을 뺏는 방법
- 희생양을 정하는 방법 - 비용이 적게드는 프로세스
- 한 프로세스가 계속 뺏기는 starvation 문제 - rollback 횟수도 고려해야함
Deadlock Ignorance
- 일어나지 않는다고 생각하고 아무런 조치도 취하지 않음
- 대부분의 범용 OS가 채택
Written on October 30, 2021