CH13) 교착상태 - 2

Jobmania·2023년 7월 23일
0

운영체제

목록 보기
10/13
post-thumbnail

13-02 ) 교착 상태 해결 방법


운영체제는 교착 상태를 회피할 수도, 예방할 수도, 검출 후 회복할 수도 있다.

  • 자원을 분배해서 교착 상태를, 예방
  • 교착 상태의 위험이 있따면 자원을 할당하지 않는 방식으로, 회피
  • 교착 상태가 검출되면 교착상태를, 회복

1.교착 상태 예방

애초에 교착 상태가 발생하지 않도록 하는 방식
-> 4가지 교착상태 발생조건 중 하날르 없애버리기..(상호배제, 점유와 대기, 비선점, 원형대기)

상호 배제를 없애기


-> 이론적으로 가능하나 현실적으로 모든 자원을 공유하기는 어려움

점유와 대기 없애기

특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분
-> 이론적으로 교착상태는 발생하진 않으나, 자원의 활용률을 낮출 수 있다는 방식이다.
( 어떤 프로세스는 자원이 많이 필요 하진 않은데, 모두 할당받거나, 사용하지 않는 자원들이 오랫동안 할당되기도하고, 어떤 프로세스는 그로인해 대기를 많이 하게 되거나..)
기아 현상을 야기할 우려가 있다.

비선점 조건을 없애면??

선점이 가능한 자원( CPU)에 한해서는 효과적이다
-> 모든 자원이 선점 가능한 것은 아니다..
예로들어 한 프로세스 작업이 끝날때까지 다른 프로세스가 기다려야하느 자원은 많다 ( 프린터 등) 그래서 범용성이 떨어지는 방안

원형 대기 조건을 없앤다면??

원형대기를 없애는 방법은, 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하면 원형대기는 발생하지 않는다.

-> 5번들고 1번을 들 수는 없음. 즉, 1번 2번이 끝나면 2번 3번.....

그러나, 자원에 번호를 붙이는 것은 어려움.
어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라진다.
가장 현실적이나 위와 같은 단점이 있따 !

즉, 예방은 네 조건 중 하나라도 충족하지 않으면 교착상태는 발생하지 않으나, 부작용이 따르는 방식

2. 교착 상태 회피

  • 교착 상태를 무분별한 자원 할당으로 인해 발생했다고 간주
  • 교착 상태가 발생하지 않을 만큼 조심 조심 할당하기
  • 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원 배분

안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
안전 상태 : 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료 될 수 있는 상태
불안전 상태 : 교착 상태가 발생할 수도 있는 상태

안전 순서열

예를 들어 웹브라우저, 메모장, 게임 프로세스가 동시에 운영체제에 자원을 요청한 상황에서, 웹브라우저->메모장->게임프로세스 순서대로 자원을 할당하면 교착상태가 발생하지 않는다면 😎안전순서열이 된다.

안전순서열이 존재하는 상태 안전상태, 안전순서열이 없는상태 불안전 상태

예시

  • 컴퓨터 시스템이 총 12개의 자원
  • 프로세스 P1, P2, P3가 각각 5개, 2개, 2개의 자원을 할당받아 실행 중
    - 운영체제가 배분 할 수 잇는 자원의 갯수는 3개가 남는다
  • P1,P2, P3는 각각 최대 10개, 4개, 9개 자원을 요구할 수 있다는 가정.

안전 순서열은 존재한다 : P2 -> P1 -> P3

예시로, 만약 P1,P2,P3가 모두 최대로 자원을 요구한 최악의 상황 가정

  • 그래서, 추가로 P1이 5개, P2가 2개, P3가 7개 를 요구
  1. P2는 이미 자원을 두 개를 가지고 있으므로 남은 자원에서 두 개를 배분
  1. 이후 P2의 작업이 끝나서 작업이 끝나서 4개의 자원을 반납함 ( 총 자원 5개)

  2. P1에게 남은 자원을 할당 5개필요하니 5개를 할당

  3. P1이 작업을 마치고 10개의 자원 반납( 총 자원 10개)

즉, P2 -> P1 -> P3 안전 순서열대로 자원을 배분하면 교착 상태없이 올바르게 작업을 마칠 수 있음!

또 다른 예시

만일 운영체제가 P3에서 선뜻 자원 하나를 내주 었다면???

불안전 상태 : 교착 상태가 발생할 위험이 있음.

예시로, 만약 P1,P2,P3가 모두 최대로 자원을 요구한 최악의 상황 가정

  • 그래서, 추가로 P1이 5개, P2가 2개, P3가 6개 를 요구
  1. 현재 사용가능한 자원이 2개이므로 P2에 밖에 배분하지 못함

  2. 남은 자원( 4개 )으로 P1, P3 요구도 들어 줄수가 없다( 교착 상태 발생 위험)

교착상태 회피는 항상 안전상태로 움직이는 경우에만 자원을 할당하는 방식이다. 항시 안전상태를 유지하도록 자원을 할당한다.
예시) 은행원 알고리즘

3. 교착 상태 검출 후 회복

  • 교착 상태의 발생을 인정하고 사후에 조치하는 방식
  • 프로세스가 자원을 요구하면 일단 할당, 교착상태가 검출되면 회복
  • 선점을 통한 회복, 프로세스 강제 종료를 통한 회복

선점을 통한 회복

  • 교착 상태가 해결될 때까지 다른프로세스의 자원을 빼앗고 한 프로세스에 자원을 몰아주는 방식

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

  • 교착 상태에 놓인 프로세스 모두 강제종료 ( -> 작업 내역을 잃을 위험)
  • 교착 상태가 해결될 때까지 한 프로세스씩 강제 종료 ( -> 오버헤드)
    - 왜냐하면 교착상태를 확인하는 과정에서 오버헤드 발생

교착상태를 무시

  • 타조 알고리즘
    문제 발생이 빈도가 낮으면 잠재적 문제를 무시
    -> 심각성에 따라 최대 효율을 추구하는 엔지니어 입장에서는 이방식이 적합할 수도 ? 있음 ㅇㅇ

profile
HelloWorld에서 RealWorld로

0개의 댓글