[CS 공부] 22.10.19

minyoon·2022년 10월 20일
0

CS공부

목록 보기
11/12

데드락


발생조건

  • 상호배제(Mutual Exclusion) - 한번에 프로세스 하나만 자원을 사용할 수 있다.
  • 점유대기(Hold And Wait) - 자원을 최소 하나 점유하고, 다른 프로세스가 할당한 자원을 점유하기 위해 대기한다.
  • 비선점(No Preemption) - 이미 할당한 자원을 강제로 뺐을 수 없다.
  • 순환 대기(Circular Wait) - 대기 프로세스의 집합이 순환형태로 자원을 대기하고 있어야 한다.

해결방법

  • 예방하기
    • 상호배제 → 한번에 여러 프로세스가 자원을 사용할 수 있도록
    • 점유대기 → 필요한 자원을 한꺼번에 요청받아서 나중에 또다른 자원의 요청을 방지
    • 비선점 → 다른 프로세스에게 할당된 섬점권이 없다고 생각할 때 우선순위 프로세스가 자원을 가져올 수 있도록
    • 순환대기 → 자원을 요청할 때 한쪽 방향으로만 요청하도록
  • 회피하기
    • 안정상태 → 프로세스들에게 요청자원을 데드락 없이 할당해 줄 수 있는 상태 (안전순서에 따라 자원 할당)
    • 불안정상태 → 데드락 발생 가능성이 있는 상태
    • 은행원 알고리즘 : 프로세스마다 최대 사용하는 자원을 비교해서 safe state에 있는 프로세스들을 우선 수행하는 것
  • 탐지하기
    1. 교착상태 빠진 프로세스 중단
    2. 프로세스를 하나 중단될 때마다 탐지 알고리즘으로 데드락을 탐지하면서 회복
    3. 프로세스에서 할당된 자원을 선점해서 교착상태를 해결할 때까지 그 자원을 다른 프로세스에게 할당
profile
궁금한게 많은 사람🧐

0개의 댓글