수업/운영체제

데드락(교착상태)

ksy0314 2023. 6. 1. 01:17

데드락이란?

프로세스나 스레드가 결고 일어나지 않는 일을 기다리는것

작업 마무리도 못할 뿐더러 시스템에 오버헤드 혹은 다운까지 발생시킨다.

데드락 상태의 스레드, 프로세스

 

왜 발생하나?

 

다음 네가지 조건을 충족하기 때문에 발생함

 

  • 상호배제
    • 한번의 한개의 프로세스 만이 공유 자원을 사용함
  • 점유와 대기
    • 자원을 점유하고 있으면서 다른 프로세스가 사용하는 자원을 추가로 점유하기위해 대기하는 프로세스가 있음
  • 비 선점
    • 자원 강탈 불가
  • 환형 대기
    • 프로세스가 다른 프로세스가 점유한 자원에대한 요구가 원형을 이룸 A -> B -> C -> A

4가지 조건이 모두 필요한 소프트웨어 개발에서 데드락 발생 가능

 

 

교착 상태 예시

간단한 교착상태

두 프로세스의 영원히 대기

자원(길) 을 점유한 상태에서 서로 상대방의 자원을 요구하는 상황

 

 

해결 방법

  • 교착 상태 방지
    • 교착 상태가 발생하지 않게 예방
  • 교착 상태 회피
    • 교착 상태가 발생시 문제 피해감
  • 교착 상태 탐지 and 복구
    • 교착 상태를 감지하고
      프로세스를 종료 or 자원 선점으로 해결

 

 

교착 상태 방지

데드락 발생 조건중 한가지를 부정함으로써 교착 상태를 방지

전반적으로 사용이 불가능하거나 자원의 낭비가 심한 방법들임

  • 상호배제 부정
    • 공유 자원에 여러 프로세스 동시 접근 허용
    • 상호배제의 본래 목적인 공유 자원에 대한 관리 불가능 - 사용하지 않음
  • 점유와 대기 부정
    • 자원 요청시 어떠한 자원도 가지지 못하게 함(점유 부정) 
    • 모든 자원이 할당 될때까지 실행되지 않게 함(대기 부정)
    • 자원 효율이 굉장히 낮아지고, 프로세스 기아가 발생할수 있음 - 잘 사용안함
  • 비 선점 부정
    • 다른 프로세스가 점유한 자원을 가져올 수 있게함
    • 공유 자원에 대한 동기화가 깨지게 됨 - 잘 사용하지 않음

  • 환형 대기 부정
    • 공유 자원의 실행 순서를 지정하여 순차적으로 자원을 획득하게 함
    • 임의로 순서를 정해줘 자원의 효율성이 떨어짐

교착 상태 회피

교착상태 발생을 막는것이 아닌 발생하더라도 피해가는 방법

  • 은행원 알고리즘
    • 안전 상태 - 최소한 하나 이상의 프로세스를 실행시킬수 있는 자원을 소유한 상태
    • 불 안전 상태 - 하나의 프로세스도 실행시킬 자원이 없는 상태
    • 자원 요청시 불안전 상태가 된다면 해당 요청을 계속 거부

교착 상태 탐지

 

교착상태 복구

  • 프로세스 중지
  • 자원 선점

'수업 > 운영체제' 카테고리의 다른 글

운영체제 스레드  (0) 2023.04.11
운영체제 - 하드웨어와 소프트웨어  (0) 2023.03.28
운영체제 2주차  (0) 2023.03.14