ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Deadlock
    학교 수업/OS 2020. 5. 7. 18:55

    Process scheduling과 Process synchronization에 대해 배웠다면,

    이제는 Deadlock에 대해서 배워보자.


    교착상태(Deadlock)

     둘 이상의 프로세스가 더 이상 계속할 수 없는 어떤 특정 사건을 기다리고 있는 상태


     


     1) 교착상태가 발생하기 위해서는 4가지 조건이 동시에 만족되어야한다.

       상호배제(mutex exclusion) : 한 번에 한 프로세스만이 자원을 사용해야 하는 경우

       점유와 대기(block and wait) : 자원을 일부 점유하면서 다른 자원을 기다리는 경우

       비선점(non preemption) : 프로세스가 완료되기 전에는 자원을 회수할 수 없는 경우

       환형 대기(circular wait) : 자원을 할당 받은 두 프로세스가 서로 할당된 자원을 요청하는 경우


     2) 교착 상태 해결방안 3가지

       교착상태 예방(prevention) : 교착상태의 발생가능성없애는 방법 -> 자원낭비가 심하고, 기아상태 초래 가능


               상호배제 부정 : 여러 프로세스가 동시에 공유자원을 사용하도록 한다(실현불가능)

               점유와 대기조건의 부정 : 자원을 모두 할당하거나 할당된 자원을 없앤 후 재요청

               비선점 조건의 부정 : 자원을 점유하고 있는 프로세스는 자원을 강제로 반납

               환형 대기 조건의 부정 : 자원을 선형 순서로 분류하여 프로세스에게 할당


       교착상태의 회피(avoidance) : 시스템 운영 상황을 보아가면서 교착상태 가능성피해가는 방법

                                                  자원할당 그래프 or 은행원 알고리즘 이용


    자원할당 그래프(Resource allocation graph)

    -

    - 프로세스와 자원과의 관계를 나타내는 그래프

    - 자원할당 그래프를 그려 사이클이 생길 것 같으면 사용자의 자원 요구 거부




               ((교착상태에 빠질 가능성이 있는 지 판단하기 위해 시스템 상태를 2개로 나눔))





    - 안전상태(safe state)시스템이 교착상태를 일으키지 않으면서, 

       각 프로세스가 요구한 최대 요구량만큼 필요한 자원을 할당해 줄 수 있는 상태

    - 불안전상태(unsafe state)교착상태가 일어날 수 있는 상태. 무조건 발생하는 건 아님


    은행원 알고리즘에 대해 알아보자.


    은행원 알고리즘(Banker's Algorithm)

    - 안전상태를 유지할 수 있는 요구만을 수락하고

      불안전 상태를 초래할 사용자의 요구는 나중에 만족될 수 있도록 계속 거절


                - 사용하는 자료 구조

                  1. Available : 사용가능한 자원의 수

                  2. Max : 프로세스 별 최대 자원의 요구

                  3. Allocation : 현재 프로세스 별 할당되어 있는 자원 수

                  4. Need : 프로세스 별 남아 있는 자원 요청 수(Max - Allocation)


                - 동작 원리


       Work = init Available

       예를 들어 프로세스 Pi가 자원을 요청했을 때


                  step 1. 종료가 안된 프로세스 Pi를 찾으면 step 2로 넘어감

     만일 모두 종류가 안된 프로세스가 없다면 그 시스템은 safe state상태

                  step 2. Pi의 Need가 Work 보다 작다면 step 3으로 넘어감

                                          크다면 pass

                  step 3. 프로세스 Pi에게 자원을 할당해서, 완료시킨 뒤

          프로세스 Pi가 가진 자원을 반환

    Work = Work + Allocation(Pi)

    다시 step 1으로


    - 예시

      자원 A는 10개, 자원 B는 5개, 자원 C는 7개가 있다고 가정




    , 안정 순열(p1,p3,p4,p0,p2) 순으로 자원을 할당해 안정상태 유지


    - 은행원 알고리즘의 단점 : 알고리즘이 너무 복잡,

     프로세스가 가지고 있어야 할 자원의 최대 개수를 미리 알아야함.

               

       교착상태 탐지(detection) 및 복구(recovery) :

     - 이미 발생한 교착상태탐지알고리즘이나 자원할당그래프대기 그래프의 사이클 유무에 따라 찾아낸 후 복구하는 방법

               

       탐지 알고리즘? Banker’s algorithm의 변형 알고리즘 활용

             - 사용하는 자료구조

                 Available : 사용가능한 자원의 수

                 Allocation : 현재 프로세스 별 할당되어 있는 자원 수            

                 Request : 각 프로세스가 현재 요청 중인 자원 수

             - 동작 원리

                 (탐지알고리즘은 은행원 알고리즘과 마찬가지로 내용이 달라지는 자료구조를 사용한다.

                  다른 점은, 은행원 알고리즘의 MaxNeedRequest로 바뀐 것)

     

             - 예제 1)


    이 예제에서는 현재 상황에서 Available 값이 모두 0이지만

          P(0)가 아무 자원도 요청하지 않기 때문에 작업을 끝내면 자원을 반납하고 

    반납한 자원으로 P(2)에게 할당하면서 Safe State Sequence(p0,p2,0p3,p4,p1)를 만들어낼 수 있어서

                현재 이 상태는 Deadlock에 빠져 있지 않은 상태임을 탐지


       - 예제 2)

    예제 1과 달리 P2가 자원 C를 하나 요청했을때

    P(0)가 자원을 반납하더라도 P(2)의 현재 요청 자원이 바뀜으로 인해 

    현재 아무 프로세스에게도 자원을 할당해줄 수 없으므로 

    P(1), P(2) ,P(3) ,P(4) Deadlock에 빠져 있는 프로세스라고 판단 -> 교착상태에 빠져있음을 탐지


     - 탐지한 교착상태 복구(recovery) 방법

    ⓐ 프로세스 종료 : 교착 상태 프로세스를 모두 종료하거나 희생 프로세스를 정해서 종료

    ⓑ 자원선점 : 교착상태의 프로세스로부터 자원을 선점


     - Deadlock detection은 지속해서 현재 상태를 검사하며 또한 프로세스를 종료시킨 후 다시 시작해야 하는 등 

      많은 비용이 들기 때문에 비효율적이라 판단되어 현재 다수의 시스템에서는 사용 되지 않고 있다.

    '학교 수업 > OS' 카테고리의 다른 글

    OS의 메모리관리2  (0) 2020.05.09
    OS의 메모리 관리  (0) 2020.05.08
    OS의 process synchronization?  (0) 2020.05.05
    OS의 process scheduling  (0) 2020.05.03
    OS?  (0) 2020.05.02

    댓글

Designed by Tistory.