[운영 체제]Deadlock

Jihun·2022년 3월 19일
0

운영 체제(OS)

목록 보기
6/8
post-thumbnail

Deadlock

일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 `2개 이상의프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 교착상태` 라고 한다.

  • Resource(자원)
    • 하드웨어, 소프트웨어 등을 포함하는 개념
    • 프로세스가 자원을 사용하는 절차
      • Request, Allocate, Use, Release

Deadlock 발생의 4가지 조건

1. Mutual exclusion (상호 배제)

: 매 순간 하나의 프로세스만이 자원을 사용할 수 있음

2. No preemption (비선점)

: 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음

3. Hold and wait (보유대기)

: 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음

4. Circular wait (순환대기)

: 자원을 기다리는 프로세스간에 사이클이 형성되어야 함

Deadlock 해결 방법

1. 교착상태 예방 기법

2. 교착상태 회피 기법

3. 교착상태 회복 기법

4. 교착상태 무시 기법

1. 교착상태 예방 기법

예방 기법은 교착 상태가 애초에 발생하지 않도록 예방하는 방법으로써, 교착상태 발생조건 4가지 중, 하나를 부정하는 기법

  • 호배제 부정 : 여러 개의 프로세스가 동시에 공유 자원을 사용할 수 있다.
    • 공유 자원을 여러 개의 프로세스가 동시에 사용할 수 있도록 만든다는 것인데, 사실상 이렇게 되면 공유 자원에 대한 관리가 이루어질 수 없고 제대로 프로그램이 작동될 수가 없어서 현실적으로 불가능한 부정 방법이다.
  • 점유와 대기 부정 : 프로세스가 실행되기 전에 필요한 모든 자원을 다 할당할 때 까지 실행되지 않도록 하거나, 반대로 자원을 요청하기 위해서는 어떠한 자원도 가지지 않았을 때 요청이 가능하도록 한다.
  • 비선점 부정 : 다른 프로세스에 할당된 자원을 가져와서 사용 가능하게 한다.
    • 공유 자원에 대한 동기화에 대한 의미가 깨져버리는 방식으로 실질적으로 부정하는 것이 불가능한 방법이다.
  • 환형대기 부정 : 선형대기로 만들어서, 필요한 자원들을 순차적으로 획득한 후 실행되게 한다.

2.교착상태 회피 기법

교착상태 회피 기법은 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘(Banker's Algorithm)이 사용된다.

1. 각 프로세스에게 자원을 할당하여 교착상태가 발생하지 않으며 모든 프로세스가 완료될 수 있는 상태를 안전상태, 교착상태가 발생할 수 있는 상태를 불안전 상태라고 한다.

2. 은행원 알고리즘을 적용하기 위해서는 자원의 양과 프로세스 수가 일정해야 한다.

3. 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간안에 할당하는 것을 보장한다.

3. 교착상태 회복 기법

교착상태 회복기법은 교착상태가 발생했을 때, 이 상황을 해결하는 기법을 의미한다.

  • 프로세스 종료
    • 교착상태에 있는 프로세스를 종료하는 것으로, 교착상태에 있는 모든 프로세스를 종료하는 방법과 교착상태에 있는 프로세스들을 하나씩 종료해가며 교착상태를 해결하는 방법
  • 자원선점
    • 교착상태의 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하며, 해당 프로세스를 일시 정지시키는 방법

    • 우선순위가 낮은 프로세스, 수행된 정도가 적은 프로세스, 사용되는 자원이 적은 프로세스 등을 위주로 해당 프로세스의 자원을 선점합니다.

      ※ 자원 선점시 고려사항

      1. 자원 을 선점할 프로세스 선택 문제 : 최소의 피해를 줄 수 있는 프로세스를 선택

      2. 자원을 선점한 프로세스의 복귀 문제 : 자원이 부족한 상태이므로 대부분 일시 중지시키고 다시 시작하는 방법을 사용

      3. 기아 현상 문제 : 한 프로세스가 계속하여 자원 선점 대상이 되지 못하도록 고려

4. 교착상태 무시 기법

교착상태를 시스템이 책임지지 않는다

현대 대부분의 OS는 해당 처리방법을 채택

참고

profile
slow and steady

0개의 댓글