공부기록

교착 상태 예방 본문

CS/OS

교착 상태 예방

코타쿠 2021. 5. 14. 17:18
  • 교착 상태 예방
    • 교착 상태가 발생하기 위한 4가지 필요충분 조건 중 하나를 설계단계에서 배제
    • 간접 예방 vs 직접 예방
      • 간접 예방
        • 조건 1~3중 하나를 허용치 않는다.
      • 간접 예방
        • 조건 4를 허용하지 않는다.
  • 4가지 조건에 대한 해결 방안
    • 상호배제
      • 상호배제는 공유 자원의 일관성을 유지하기 위해 반드시 필요
    • 점유 대기
      • 프로세스가 자신이 사용할 모든 자원을 한번에 요청
      • 모든 자원을 할당 받을 수 있다면 계속하고 그렇지 않으면 어떠한 자원도 할당 받지 않고 대기
        • 비효율적
          • 모든 자원을 할당받기 위해 오랜 기간 대기 하게 됨
          • 한꺼번에 할당 받은 자원중 일부는 실제 수행이 끝날 때 쯤 사용될 수 있음. 실제로 이용되지 않으면서 점유될 가능성이 있다.
          • 프로세스가 미래에 사용될 모든 자원 미리 예측 불가능
    • 비선점
      • 방법 1 : 자원을 점유한 프로세스가 다른 자원을 요청했을 때 할당 받을 수 없다면, 자신이 점유한 자원을 반납 후 프로세스는 원래 자원 + 새로 원하는 자원을 함께 요청
      • 방법 2 : 한 프로세스에서 다른 프로세스가 점유한 자원을 원하면, 운영체제는 다른 프로세스가 점유한 자원을 강제적으로 반납시키고 그것을 원하는 프로세스에게 할당
        • 프로세스들이 서로 다른 우선순위를 가지고 있을 때만 교착상태를 예방할 수 있다.
        • 자원의 상태를 저장하고 복구하기 쉬운 자원에만 사용할 수 있다. ex) CPU
    • 환형대기
      • 자원들의 할당 순서를 정해 환형 대기조건 제거 가능
        • 이 말은 자원 1>2>3>4 의 순서가 있어 자원 4를 이용하기 위해서는 1 > 2 > 3을 거쳐 와야 한다는 것
      • 자원 사용의 비효율성과 프로세스의 오랜 대기를 야기
        • 프로세스 A가 현재 3을 앞으로 오랜 기간 사용하고, B가 자원 4를 사용하려 할 때, 프로세스 B는 프로세스 A가 자원 3을 다 사용할 때 까지 기다려야 한다.

'CS > OS' 카테고리의 다른 글

메모리 곤리의 개요  (0) 2021.05.17
교착상태 회피  (0) 2021.05.14
교착상태의 원리  (0) 2021.05.14
프로세스와 스레드  (0) 2021.05.14
세마포어  (0) 2021.05.14