ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Operating System] 교착 상태 : 교착 상태 해결 방법
    Operating System 2024. 5. 20. 12:48

    교착상태 해결 방법 중 예방, 회비, 검축 후 회복에 대해 정리하였습니다.


    참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'


    < 교착 상태 예방 >

    애초에 교착 상태가 발생 하지 않도록 교착 상태 발생 조건( 상호 배제, 점유와 대기, 비선점, 원형 대기 ) 중 하나를 없애버림으로써 교착 상태를 예방합니다.

    교착 상태가 발생하지 않음은 보장할 수 있으나 부작용이 따르는 방식입니다.

     

    [ 상호 배제 없애기 ]

    : 모든 자원을 공유 가능하게 만들기

    상호 배제 없애기 예시

    → 이론적으로는 가능할 수 있겠지만 현식적인 방법은 아닙니다.

     

    [ 점유와 대기 없애기 ]

    : 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분

    → 자원의 활용률을 낮출 수 있습니다.

     

    [ 비선점 조건 없애기 ]

    → 선점이 가능한 자원(ex. CPU)에 한해 효과적일 수 있지만, 모든 자원이 선점 가능한 것은 아닙니다.

     

    [ 원형 대기 없애기 ]

    : 모든 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않습니다.

    원형 대기 없애기 예시 : 식사하는 철학자 문제

    → 모든 자원에 번호를 붙이는 것은 어렵고, 어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라집니다.

     

     


    < 교착 상태 회피 >

    교착 상태를 한정된 자원을 무분별한 자원 할당으로 인해 발생했다고 간주합니다.

    배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원을 배분함으로써 교착 상태를 회피합니다.
    즉, 항상 안전상태만을 유지하게끔 자원을 할당하는 방식입니다.

     

     

    • 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서

    • 안전 상태 : 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태(안전 순서열이 존재하는 상태)

    • 불안전 상태 : 교착 상태가 발생할 수도 있는 상태(안전 순서열이 존재하지 않는 상태)

     

     


    Ex 1 : 안전 상태(안전 순서열이 존재하는 상태)

    프로세스 자원 최대 요구량 현재 자원 사용량
    P1 10 5
    P2 4 2
    P3 9 2

    - 할당 가능한 자원 : 12개

    - 할당한 자원(P1, P2, P3의 현재 자원 사용량 총합) : 9개

    - 남은 자원 (할당 가능 자원 - 할당한 자원) : 3개

     

    여기서 안전 순서열은 존재합니다 : P2 → P1 → P3

    1. P2가 남은 자원 3개 중 2개를 추가 사용 후 프로세스 종료 → 4개의 자원 반환(남은 자원 : 5)
    2. P1이 남은 자원 5개중 5개를 추가 사용 후 프로세스 종료→ 10개의 자원 반환(남은 자원 : 10)
    3. P3가 남은 자원 10개 중 7개를 추가 사용 후 프로세스 종료→ 9개의 자원 반환(남은 자원 : 12)

     

     


    Ex 2 : 불안전 상태(안전 순서열이 존재하지 않는 상태)

    프로세스 자원 최대 요구량 현재 자원 사용량
    P1 10 5
    P2 4 2
    P3 9 3

    - 할당 가능한 자원 : 12개

    - 할당한 자원(P1, P2, P3의 현재 자원 사용량 총합) : 10개

    - 남은 자원 (할당 가능 자원 - 할당한 자원) : 2개

     

    여기서 안전 순서열은 존재하지 않습니다.

    1. P1, P3의 추가 자원 요구량에 맞춰줄 수 없음. P2에게 자원 2개 할당 후 프로세스 종료 → 4개의 자원 반환(남은 자원 : 4)
    2. 남은 자원 4개로 역시 P1, P3의 추가 자원 요구량을 맞춰줄 수 없음.

     

     


    < 교착 상태 검출 후 회복 >

    프로세스가 자원을 요구하면 일단 할당, 이후 교착 상태가 검출되면 조치하는 방식입니다.

    선점을 통한 회복, 프로세스 강제 종료를 통한 회복이 있습니다.

     

     

    [ 선점을 통한 회복 ]

    : 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식

     

    [ 프로세스 강제 종료를 통한 회복 ]

    : 교착 상태에 놓인 프로세스를 모두 강제종료 

    → 작업 내역을 잃을 위험성 존재

     

    : 혹은, 교착 상태가 해결될 때까지 한 프로세스씩 강제 종료

    → 교착 상태가 회복되었나 프로세스를 종료할 때마다 확인해야할기 때문에 오버헤드 발생 가능성 존재

     

     

     

     

     

    댓글

Designed by Tistory.