[OS] Deadlock

JiKwang Jeong·2022년 5월 18일
0

Deadlock

  • Deadlock
    일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태
  • Resource (자원)
    하드웨어, 소프트웨어 등을 포함하는 개념
    프로세스가 자원을 사용하는 절차
    -> Request, Allocate, Use, Release

Deadlock 발생의 4가지 조건

  • Mutual exclusion (상호 배제)
    매 순간 하나의 프로세스만이 자원을 사용할 수 있음
  • No preemption (비선점)
    프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음
  • Hold and wait (점유 대기)
    자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음
  • Circular wait (순환 대기)
    자원을 기다리는 프로세스간에 사이클이 형성되어야 함
    프로세스 P0, P1, ..., Pn이 있을 때
    P0은 P1이 가진 자원을 기다림
    P1은 P2이 가진 자원을 기다림
    Pn-1은 Pn이 가진 자원을 기다림
    Pn은 P0이 가진 자원을 기다림

Resource-Allocation Graph

Deadlock 처리 방법

Deadlock Prevention

자원 할당 시 Deadlock의 4가지 필요 조건 중 어느 하나가 만족되지 않도록 하는 것

  • Mutual Exclusion
    공유해서는 안되는 자원의 경우 반드시 성립해야 함
  • Hold and Wait
    프로세스가 자원을 요청할 때 다른 어떤 자원도 가지고 있지 않아야 한다.
    방법 1. 프로세스 시작 시 모든 필요한 자원을 할당받게 하는 방법
    방법 2. 자원이 필요할 경우 보유 자원을 머두 놓고 다시 요청
  • No Preemption
    process가 어떤 자원을 기다려야 하는 경우 이미 보유한 자원이 선점됨
    모든 필요한 자원을 얻을 수 있을 때 그 프로세스는 다시 시작된다
    Stae를 쉽게 save하고 restore할 수 있는 자원에서 주로 사용 (CPU, memory)
    빼앗을 수 있는 자원은 한정되어있는 문제
  • Circular Wait
    모든 자원 유형에 할당 순서를 정하여 정해진 순서대로만 자원 할당
    예를 들어 순서가 3인 자원 Ri를 보유 중인 프로세스가 순서가 1인 자원 Rj을 할당받기 위해서는 우선 Ri를 release해야 한다

    Utilization 저하, throughput 감소, starvation 문제

Deadlock Avoidance

자원 요청에 대한 부가적인 정보를 이용해서 deadlock의 가능성이 없는 경우에만 자원을 할당
시스템 state가 원래 state로 돌아올 수 있는 경우에만 자원 할당

  • safe state
    시스템 내의 프로세스들에 대한 safe sequence가 존재하는 상태
  • safe sequence
    프로세스의 sequence <P1, P2, ..., Pn>

Deadlock Detection and recovery

Deadlock Ignorance

profile
기억보다 기록, 난리보다 정리

0개의 댓글