오래 못 할 짓 하지 않기

[ 운영체제 ] 10. 교착 상태 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 10. 교착 상태

쫑알bot 2024. 1. 13. 12:01
728x90

포크 = 실행에 필요한 자원

철학자 = 프로세스

식사 = 실행

 

서로가 점거하는 자원을 서로가 기다리고 있으면 

어떠한 프로세스도 실행될 수 없다.

교착 상태 ( Dead Lock ) 

: 일어나지 않을 사건을 기다리면서 진행(실행)이 멈춰 버리는 현상

 

 

서로의 할당이 해제될 때까지 무작정 기다림

 

● 해결하기 위해서...

1. 교착 상태가 발생했을 때의 상황을 정확히 표현해보기

  → 자원 할당 그래프 : 교착 상태 발생 조건 파악 가능

       - 어떤 프로세스가 어떤 자원을 할당 받아 사용 중인지 확인 가능

       - 어떤 프로세스가 어떤 자원을 기다리는 중인지 확인 가능

 

 

 

식사하는 철학자 예시의 자원 할당 그래프는 아래와 같다

 

교착 상태가 일어난 그래프 

= 원의 형태를 띄고있다. 

 

 

● 교착 상태가 일어나는 근본적인 이유

 1. 교착 상태가 발생할 조건

  - 상호 배제 (Mutual Exclusion)

    : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 X인 상태

 

  - 점유와 대기 (Hold and Wait)

    : 자원을 할당받은 상태에서 할당 되어있는 다른 자원을 할당 받기를 기다리는 상태 

      ex) 식사하는 철학자 예제

 

  - 비선점 (Nonpre - Emption)

    : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태

      ex) 철학자 예제에서 한 명이 다른 애 거 뺏을 수 있으면 교착이 안 일어남

 

  - 원형 대기 (Circular Wait)

    : 프로세스들이 원의 형태로 자원을 대기하는 상태

 

위 네 가지 모두 만족해야 교착상태 발생

 

 

(출처)

유튜브 한빛미디어