2021-10-30 운영체제 (7주차)

데드락

Deadlock Avoidance

자원할당 그래프 - 주면 데드락이 걸릴꺼같으면 안줌

image

  • 사이클이 만들어졌을 때 - 안전하지 않다 - 데드락 만들어짐
  • R2 - P2가 요청했을때 줄 수 있지만 안전해질때까지 기다리고 준다, P1에게는 줘도 안전하니 그냥 줄 수 있다

Banker’s Algorithm

각 프로세스들이 평생 최대로 쓸 자원을 알고있다고 가정 - Max

추가로 요청 가능한 양 - Need

  • 0번 프로세스가 C를 요청했을때 - Need 값이 Available을 초과하기에 안준다 - 불안정한 상황이 만들어지기에
  • P2가 요청했을땐 - 최대한 요청해도 Available 보다 적어서 내어 준다 - 안전
  • P1 - P3 - P4 - P2 - P0 - 최대로얻으면 끝나고 가용자원으로 넘어가므로 하나씩 종료시켜 나간다. - safe

image

Deadlock Detection and recovery

Deadlock detection

  • 자원당 인스턴스가 하나인경우 - 자원할당 그래프 이용
  • 자원당 여러개의 인스턴스일경우 - 뱅커스 알고리즘같이 테이블로 알아낸다

image

  • 현재 요청한 자원량을 기준으로 자원 나누어줌 - 낙관적 - 현재가 데드락인지 아닌지 구분

Deadlock recovery

  • Process termination - 데드락과 연관된 모든 프로세스 죽이는 방법, 하나씩 죽이면서 데드락이 해결되었는지 확인
  • Resource Preemption - 자원을 뺏는 방법
    • 희생양을 정하는 방법 - 비용이 적게드는 프로세스
    • 한 프로세스가 계속 뺏기는 starvation 문제 - rollback 횟수도 고려해야함

Deadlock Ignorance

  • 일어나지 않는다고 생각하고 아무런 조치도 취하지 않음
  • 대부분의 범용 OS가 채택
Written on October 30, 2021