One_Blog

교착상태 해결 방법 본문

운영체제

교착상태 해결 방법

0xOne 2023. 5. 4. 14:12
728x90

날짜 : 2023년 5월 4일

 

오늘 수업 주제

: 교착상태 해결 방법





오늘 배운 내용 요약

:

교착상태의 해결 방법

  • 예방
  • 회피
  • 탐지 및 회복

예방

  • 교착 상태의 발생 조건 중 하나를 제거하여 해결

상호배제

  • 여러 프로세스의 공유자원 사용 
  • 여러 프로세스가 자원을 공유하게 되면서 의도치 않은 결과 획득

비선점

  • 모든 자원에 대해 선점 허용
  • 공유 자원에 대한 동기화 의미가 없어짐

점유와 대기

  • 프로세스 실행 전 필요한 자원을 모두 할당
  • 자원이 오랫동안 할당되고 사용하지 않으며 자원 낭비 발생

순환 대기

  • 자원에 고유 번호 할당 후 순서대로 자원 요구
  • 필요한 자원이 R1,R2,R4일 때 R1을 받아야 R2 가능

-> 사실 예방은 이론적으로만 가능

 

회피

  • 최소 하나의 프로세스에게 할당해줄 만큼의 자원은 보유하고 있어야 함
  • 교착상태가 될 가능성이 있는지 검사하고 교착 상태가 생기지 않을 경우에만 자원을 할당

 

은행원 (Banker) 알고리즘

안전 상태 : 모든 프로세스가 정상적 종료가 가능한 상태

안정 상태면 자원을 할당하며, 아니면 대기한다.

불안전 상태 : 교착상태 될 가능성이 있음

교착상태는 불안전 상태에서 발생

불안전 상태의 운영체제는 교착 상태를 발생 시키는 프로세스의 자원 요청 방지 불가

 

전체자원 = 시스템 내 자원의 수

 

가용자원 = 시스템 내 사용 가능한 자원의 수

-> 전체자원 - 할당자원

 

최대자원 = 각 프로세스가 필요한 자원의 수

-> 할당 자원 + 기대 자원

할당 자원 = 각 프로세스에 할당된 자원의 수

기대 자원 = 각 프로세스가 앞으로 사용할 자원의 수

-> 최대자원 - 할당 자원

 

회피의 문제점

  • 프로세스가 자신이 사용할 자원을 미리 선언해야 한다.
  • 시스템의 전체 자원 수가 고정적이어야 한다.
  • 자원 사용률이 낮다
  • 사용자 수가 일정하다.