본문 바로가기
CS

ep 08-1.교착상태

by L_SU 2023. 1. 8.

교착상태

- 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미

 

쉽게 말해, 둘 이상의 프로세스가 서로 남이 가진 자원을 요구하면서 양쪽 모두 작업 수행을 할 수 없이 대기상태로 놓이는 상태를 말한다.

 

교착상태 발생 조건

  1. 상호배제
    -한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 함
  2. 점유와 대기
    - 최소 하나의 자원을 점유하면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기중인 프로세스가 있어야 함
  3. 비선점
    - 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
  4. 환형 대기
    - 공유자원과 공유자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성돼 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함

예방기법

-  교착상태는 위의 발생 조건 4가지를 모두 만족해야 발생한다.
-  이를 이용해 4가지 조건 중 하나를 제거하는 기법이 예방기법이다.
-  자원 낭비가 가장 심한 기법이다.

  1. 상호 배제 부정
    - 한번에 여러개의 프로세스가 공유 자원을 사용할 수 있도록 함
  2. 점유 및 대기 부정
    - 프로세스가 실행되기 전 필요한 모든 자원을 할당해 프로세스 대기를 없애거나
      자원이 점유되지 않은 상태에서만 자원을 요구하도록 함
  3. 비선점 부정
    - 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고,
      요구한 자원을 사용하기 위해 기다리게 함
  4. 환형 대기 부정
    - 자원을 선형 순서로 분류해 고유 번호를 할당하고,
     각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 하는 것

회피기법

- 교착상태가 발생할 가능성을 배제하지 않고, 발생시 적절히 회피하는 기법
- 주로 은행원 알고리즘이 사용됨

 

- 은행원 알고리즘

  1. 다익스트라가 제안한 기법, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법
  2. 각 프로세스에 자원을 할당해 교착상태가 발생하지 않고, 모든 프로세스가 완료될 수 있는 상태를 안전상태,
    교착상태가 발생할 수 있는 상태를 불안전 상태라 함
  3. 은행원 알고리즘을 적용하기 위해선 자원의 양과 프로세스 수가 일정해야 함
  4. 프로세스의 모든 요구를 유한한 시간안에 할당하는 것을 보장함

발견기법

- 시스템에 교착상태가 발생했는 지 점검해 교착상태에 있는 프로세스와 자원을 발견하는 것

- 교착상태 발견 알고리즘, 자원 할당 그래프 등을 사용할 수 있음

회복기법

- 교착상태 회복 기법은 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점해

  프로세스나 자원을 회복하는 것을 의미함

프로세스 종료

- 교착상태에 있는 프로세스를 종료하는 것

  1. 교착상태에 있는 모든 프로세를 종료하는 방법
  2. 교착상태에 있는 프로세스들을 하나씩 종료하며 교착상태를 해결하는 방법

자원선점

- 교착상태의 프로세스가 점유하고 있는 자원을 선점해 다른 프로세스에게 할당하며,

  해당 프로세스를 일시 정지시키는 방법

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

 

고려 사항

- 프로세스 선택 문제
  : 최소한의 피해를 줄 수 있는 프로세스 선택

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

- 기아 현상 문제
 : 한 프로세스가 계속해서 자원 선점 대상이 되지 못하도록 고려해야 함

'CS' 카테고리의 다른 글

ep 08-3.SQL vs. NoSQL  (0) 2023.01.09
ep 08-2. SQL Injection  (0) 2023.01.08
ep 07-2. 트랜잭션  (0) 2023.01.01
ep 07-1. 정규화  (0) 2023.01.01
ep 06-1.Hash  (0) 2022.12.18