CS/OS

Deadlock Avoidance

reko_ 2022. 5. 27. 11:15

DeadLock Avoidance

 

교착상태 회피

 

교착상태 회피 기법은 교착 상태 발생을 위한 4가지 조건 중 1, 2, 3을 허용하며, 또한 4처럼 자원 할당 순서를 미리 정하지 않는다.

 

자원을 할당할 때 교착 상태가 발생 가능한 상황으로 진행하지 않도록 고려한다.

  • 미래의 자원 요청 정보 필요
  • 현재 자원의 가용 개수와 프로세스의 자원 요구향을 미리 알고 있어야 가능하다.



자원 할당 거부 (Resource Allocation Denial)

 

자원을 할당할 때 교착상태가 발생할 가능성이 있는지 여부를 동적으로 판단.

 

교착 상태의 가능성이 없을 때 자원 할당

  • 안전한 상태를 계속 유지할 수 있으면 자원 할당
  • But, 각 프로세스들이 필요한 자원들을 미리 운영체제에게 알려야 한다.

 

  • 시스템 상태 구분
    • 안전한 상태(safe state)
      • 교착상태가 발생하지 않도록 프로세스에게 자원을 할당할 수 있는 진행 경로가 존재
      • 지금 들어온 요청을 허용해도 다른 프로세스들의 요청을 전부 만족시키는 것
      • 예) banker’s algorithm
    • 안전하지 않은 상태(unsafe state)
      • 안전한 자원 할당 경로가 없는 상태
      • 이미 돌고 있는 프로세스들이 알아서 반납하지 않는 한, 지금 요청한 프로세스가 자원을 사용할 수 없는 경우



프로세스 시작 거부 (Process Initialization Denial)

 

  • 교착상태가 발생할 가능성이 있으면 프로세스 시작 거부

 

 

  • 모든 프로세스들이 요구한 자원의 개수가 전체 자원 개수보다 적으면, 교착상태가 발생하지 않는다. (C < R)
    • 새로운 프로세스와 기존의 프로세스들이 요구하는 자원의 개수가 그 자원의 전체 개수보다 적은 경우에 수행을 허용하는 것 (C - A < V)