HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 3기 교육생
/
📚
3기 스터디 가이드
/
📒
CS 학습 스터디
/
데드락 (충일)

데드락 (충일)

교착 상태

2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태
 

교착 상태의 발생

  1. 시스템 자원 동시에 같이 사용할 수 없는 시스템 자원을 할당받은 후 양보 안 할 시 발생ex) 스캐너, 프린터
  1. 공유 변수 한 변수를 할당받은 상태에서 다른 변수 대기 시 발생
  1. 응용 프로그램 데이터베이스 같은 응용 프로그램에서도 발생
 

자원 할당 그래프

프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현
notion image
  • 사용하는 이유 : 어떤 프로세스에 어떤 자원이 할당되어 있는지 혹은 어떤 프로세스가 자원을 기다리고 있는지 한눈에 파악 가능하다.
  • 다중 자원 : 여러 프로세스가 하나의 자원을 동시에 사용

식사하는 철학자 문제

notion image
  1. 철학자들은 서로 포크를 공유할 수 없다.> 자원을 공유하지 못하는 교착 상태 발생
  1. 각 철학자는 다른 철학자의 포크를 빼앗을 수 없다.> 자원을 빼앗을 수 없으면 자원을 놓을 때까지 기다려야 하므로 교착 상태 발생
  1. 각 철학자는 왼쪽 포크를 잡은 채 오른쪽 포크를 기다린다.> 자원 하나를 잡은 상태에서 다른 자원을 기다리면 교착 상태 발생
  1. 자원 할당 그래프가 원형이다.> 자원을 요구하는 방향이 원을 이루면 양보를 하지 않기 때문에 교착 상태 발생

교착 상태 필요조건

교착 상태는 상호 배제, 비선점, 점유와 대기, 원형 대기를 모두 충족해야 발생한다.
  1. 상호 배제 한 프로세스가 사용하는 자원은 공유할 수 없는 배타적인 자원이어야 한다.
  1. 비선점 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원이어야 한다.
  1. 점유와 대기 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 한다.
  1. 원형 대기 점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 한다.
 

교착 상태 해결 방법

교착 상태를 해결하는 방법은 예방, 회피, 검출, 회복 방법이 있다.
해결 방법
특징
교착 상태 예방
교착 상태를 유발하는 네 가지 조건을 무력화 한다.
교착 상태 회피
교착 상태가 발생하지 않는 수준으로 자원을 할당한다.
교착 상태 검출
자원 할당 그래프를 사용하여 교착 상태를 발견한다.
교착 상태 회복
교착 상태를 검출한 후 해결한다.

교착 상태 예방

  1. 상호 배제 예방
  1. 비선점 예방
  1. 점유와 대기 예방
  1. 원형 대기 예방

📗 상호 배제 예방

시스템 내에 있는 상호 배타적인 모든 자원, 즉 독립적으로 사용할 수 있는 자원을 없애버리는 방법이다. 시스템 내의 모든 자원을 공유할 수 있다면 교착 상태가 발생하지 않는다.

📗 비선점 예방

모든 자원을 빼앗을 수 있도록 만드는 방법이다. 하지만 어떤 기준으로 빼앗을지, 빼앗은 시간 중 얼마나 사용할지 등 결정하기 어렵고 아사 현상을 일으킬 수도 있다.

📗 점유와 대기 예방

프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 하는 방법이다. 다시 말해 '전부 할당하거나 아니면 아예 할당하지 않는'방식을 적용하는 것이다.

📗 원형 대기 예방

점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법이다. 그러나 프로세스 작업 진행에 유연성이 떨어지고 자원의 번호를 어떻게 부여할 것인지에 대한 문제가 존재한다.

교착 상태 회피

프로세스에 자원을 할당할 때 어느 수준 이상의 자원을 나누어주면 교착상태가 발생하는지 파악하여 그 수준 이하로 자원을 나누어주는 방법이다.

문제점

  1. 프로세스가 자신이 사용할 모든 자원을 미리 선언해야 한다.
  1. 시스템의 전체 자원 수가 고정적이어야 한다.
  1. 자원이 낭비된다.
  • 은행원 알고리즘
은행이 대출해주는 방식
☞ 대출 금액이 대출 가능한 범위(안정 상태) 내이면 허용되지만 그렇지 않으면 거부
  • 안정 상태
☞ 각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 한 번 이상인 경우

교착 상태 검출

운영체제가 프로세스의 작업을 관찰하면서 교착 상태 발생 여부를 계속 주시하는 방식이다.

📗 타임아웃

일정 시간 동안 작업이 진행되지 않은 프로세스를 교착상태가 발생한 것으로 간주하는 방법이다.
문제점
  1. 엉뚱한 프로세스가 강제 종료될 수 있다.
  1. 모든 시스템에 적용할 수 없다.

📗 자원 할당 그래프를 이용한 교착 상태 검출

notion image
교착 상태가 없는 자원 할당 그래프
실선 : 점유
점선 : 대기
notion image
교착 상태가 있는 자원 할당 그래프
이 방법은 프로세스의 작업 방식을 제한하지 않으면서 교착 상태를 정확하게 파악할 수 있다는 것이 장점이다.
그러나 오버헤드가 발생하는 단점이 있다.

교착 상태 회복

교착 상태를 유발한 프로세스를 강제로 종료하여 교착 상태를 회복한다.
  1. 교착 상태를 일으킨 모든 프로세스를 동시에 종료
  1. 교착 상태를 일으킨 프로세스 중 하나를 골라 순서대로 종료
[쉽게 배우는 운영체제] 6장 : 교착 상태 (1/2) [OS]
교착 상태 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태 교착 상태의 발생 시스템 자원 동시에 같이 사용할 수 없는 시스템 자원을 할당받은 후 양보 안 할 시 발생 ex) 스캐너, 프린터 공유 변수 한 변수를 할당받은 상태에서 다른 변수 대기 시 발생 응용 프로그램 데이터베이스 같은 응용 프로그램에서도 발생 자원 할당 그래프 프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현 *사용하는 이유 : 어떤 프로세스에 어떤 자원이 할당되어 있는지 혹은 어떤 프로세스가 자원을 기다리고 있는지 한눈에 파악 가능하다.
[쉽게 배우는 운영체제] 6장 : 교착 상태 (1/2) [OS]
https://tooo1.tistory.com/391
[쉽게 배우는 운영체제] 6장 : 교착 상태 (1/2) [OS]
[쉽게 배우는 운영체제] 6장 : 교착 상태 (2/2) [OS]
교착 상태 해결 방법 교착 상태를 해결하는 방법은 예방, 회피, 검출, 회복 방법이 있다. 해결 방법 특징 교착 상태 예방 교착 상태를 유발하는 네 가지 조건을 무력화 한다. 교착 상태 회피 교착 상태가 발생하지 않는 수준으로 자원을 할당한다. 교착 상태 검출 자원 할당 그래프를 사용하여 교착 상태를 발견한다.
https://tooo1.tistory.com/392
[쉽게 배우는 운영체제] 6장 : 교착 상태 (2/2) [OS]