운영체제 | 데드락과 스타베이션

Faithful Dev·2025년 1월 25일

컴퓨터 공학

목록 보기
30/81

데드락 (Deadlock)

정의

  • 데드락은 두 개 이상의 프로세스가 서로 상대방이 보유한 자원을 기다리며 무한히 대기 상태에 빠지는 현상이다.
  • 쉽게 말해, 프로세스들의 자원을 놓지 않고 서로 기다리기만 하면서 아무 작업도 진행하지 못하는 상태를 의미한다.

데드락 발생 조건 (Coffman Conditions)

데드락은 다음 네 가지 조건이 동시에 만족할 때 발생한다:

  1. 상호 배제 (Mutual Exclusion)
    • 특정 자원은 한 번에 하나의 프로세스만 사용할 수 있음.
  2. 점유와 대기 (Hold and Wait)
    • 프로세스가 이미 할당된 자원을 점유한 채로, 추가 자원을 요청하며 대기하는 상태.
  3. 비선점 (No Preemption)
    • 자원을 강제로 뺏을 수 없고, 자원을 점유한 프로세스가 자발적으로 해제할 때까지 기다려야 함.
  4. 순환 대기 (Circular Wait)
    • 자원을 기다리는 프로세스들 사이에 순환적인 대기 관계가 형성됨.

예시

  • 프로세스 A가 자원 1을 점유하고, 자원 2를 요청함.
  • 프로세스 B가 자원 2를 점유하고, 자원 1을 요청함.
  • A와 B 모두 자원을 기다리며 작업을 멈추게 됨.

데드락 해결 방안

  1. 예방 (Prevention): 데드락 발생 조건 중 하나를 제거하거나 회피.
    • 상호 배제 조건 완화: 자원을 공유 가능하게 설계.
    • 점유와 대기 방지: 자원 요청 전에 필요한 모든 자원을 한 번에 할당.
    • 순환 대기 방지: 자원에 우선순위를 정하고, 순서대로 요청하도록 설계.
  2. 회피 (Avoidance): 실행 중 데드락 상태를 미리 감지하고 회피.
    • 예: 은행원 알고리즘(Banker's Algorithm)
  3. 탐지 및 복구 (Detection and Recovery):
    • 데드락을 감지한 후, 프로세스를 강제 종료하거나 자원을 회수하여 복구.
  4. 무시 (Ignoring):
    • 데드락 발생 빈도가 낮을 경우 시스템 설계에서 이를 무시하는 방식도 사용.

스타베이션 (Starvation)

정의

  • 스타베이션은 특정 프로세스가 자원 할당에서 계속해서 우선순위에서 밀려 작업을 수행할 기회를 얻지 못하는 상태이다.
  • 데드락과 달리 시스템이 작동은 하지만, 특정 프로세스는 기아 상태에 빠지게 된다.

발생 원인

  1. 우선순위 기반 스케줄링
    • 높은 우선순위의 프로세스가 계속해서 실행되면서, 낮은 우선순위의 프로세스가 자원을 할당받지 못함.
  2. 자원 부족
    • 자원이 너무 제한적이라 특정 프로세스에 할당될 기회가 거의 없는 경우.
  3. 비공정한 스케줄링 정책
    • 특정 프로세스에 반복적으로 자원 할당이 우선되는 경우.

예시

  • 고우선 순위 프로세스가 항상 먼저 실행되도록 설계된 시스템에서, 저우선 순위 프로세스가 무한 대기 상태에 빠짐.

스타베이션 해결 방안

  1. 공정한 스케줄링 (Fair Scheduling)
    • Round-Robin이나 FIFO 방식 등 공평한 스케줄링 정책 사용.
  2. 우선순위 증가 (Priority Aging)
    • 대기 시간이 길어질수록 프로세스의 우선순위를 점진적으로 높이는 방식.
  3. 자원 공유
    • 공유 가능한 자원을 설계하거나 자원 요청 제한을 최소화.

데드락 vs. 스타베이션

특징데드락 (Deadlock)스타베이션 (Starvation)
정의프로세스들이 서로 자원을 기다리며 무한 대기 상태.특정 프로세스가 자원을 계속 할당받지 못해 작업 불가.
발생 조건Coffman 조건(4가지 조건) 동시에 만족.자원 할당의 비공정성이나 낮은 우선순위로 인해 발생.
해결 방안예방, 회피, 탐지 및 복구, 무시.공정한 스케줄링, 우선순위 증가, 자원 공유.
시스템 상태프로세스들이 모두 멈춘 상태.시스템은 작동하나 특정 프로세스만 대기 상태.
profile
Turning Vision into Reality.

0개의 댓글