공부기록

교착상태의 원리 본문

CS/OS

교착상태의 원리

코타쿠 2021. 5. 14. 17:00
  • 교착상태 (dead lock)
    • 프로세스들의 집합이 더 이상 진행을 못하고 영구적으로 블록되어 있는 상태
    • 교착상태는 시스템 자원에 대한 경쟁 도중 발생할 수도 있고 프로세스 간 통신 도중에 발생할 수도 있음
    • 집합 내의 한 프로세스가 특정 사건의 발생을 기다리며 대기하고 있고, 이 사건이 집합 내의 다른 블록된 프로세스에 의해 발생될 수 있을 때 이 프로세스의 집합은 교착상태가 됨
    • 교착상태는 기다리던 사건이 결코 발생하지 않기에 영구적이다.
    • 교착상태는 두 개 이상의 프로세스들이 서로 충돌되는 자원 요구를 할 때 발생한다.
  • 교착상태 해결 방안
접근 방법 자원 할당 정책 구체적인 기법 장점 단점
예방 보수적
(자원 할당이 가능하더라도 조건에 따라 할당하지 않는다)
모든 자원을 한꺼번에 요구 순간적으로 많은 일을 하는 프로세스에게 적합

선점이 불필요
효율이 나쁨
프로세스 시작을 지연시킬 가능성이 있음
프로세스는 사용할 모든 자원을 미리 알고 있어야 함
선점 가능 자원 상태의 저장과 복구가 간단한 자원에는 적용하기 쉬움 선점 부하
자원 할당 순서 컴파일 시접에 강제할 수 있음
시스템의 설계 시점에 문제를 해결했기 때문에 동적 부하가 없음
동적인 자원 할당이 불가
회피 예방과 발견의 중간 정도 교착 상태가 발생하지 않는 안전한 경로를 최소한 하나는 유지 선점이 불필요 운영체제는 자원에 대한 미래 요구량을 미리 알고 있어야 함
오랜 기간 지연 발생의 가능성 있음
발견 적극적
(자원 할당이 가능하면 즉시 할당)
주기적으로 교착 상태 발생 여부 파악 프로세스 시작을 지연시키지 않음
온라인 처리 가능
선점에 의한 손실 발생
  • 교착 상태의 조건
    • 상호배제 (mutual exclusion)
      • 한 순간에 한 프로세스만이 한 자원을 사용할 수 있다. 
      • 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수 없다.
    • 점유대기 (hold and wait)
      • 자원을 기다리는 프로세스가 이미 자원을 할당하고 있다.
    • 비선점 (no preemption)
      • 프로세스에 의해 점유된 자원을 다른 프로세스가 강제로 빼앗을 수 없다.
    • 환형 대기 (circular wait)
      • 프로세스들간에 닫힌 연결 (closed chain) 이 존재한다. 즉, 자원 할당 그래프에서 환형이 만들어 진다.
    • 조건 1~3은 교착상태가 발생할 수 있는 필요조건
    • 조건 4까지 만족되면 교착상태가 발생할 수 있는 필요충분 조건
    • 조건 4는 조건 1~3의 결과에 의해 발생
      • 조건 1~3에 의해 해결할 수 없는 환형 대기 상태가 발생
      • 교착 상태의 정의가 해결할 수 없는 환형 대기 상태
      • 환형 대기가 해결될 수 없는 이유는 조건 1~3이 지켜지기 때문
      • 결국 위 4가지 조건이 교착상태가 발생할 수 있는 필요충분조건

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

교착상태 회피  (0) 2021.05.14
교착 상태 예방  (0) 2021.05.14
프로세스와 스레드  (0) 2021.05.14
세마포어  (0) 2021.05.14
병행성의 원리  (0) 2021.05.14