ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Deadlock & Starvation
    CS 지식/운영체제 2020. 10. 21. 19:38
    반응형

    Deadlock과 Starvation

    • 데드락(Deadlock, 교착상태)
      • 둘 이상의 쓰레드가 lock 획득을 기다리는데, 이 lock을 잡고있는 쓰레드도 똑같이 다른 lock을 기다리며 서로 블록상태에 놓이는 것을 의미한다. 즉 무한 대기상태에 빠지는 것을 교착상태라고 한다.
      • 교착 상태 발생의 필요 충분 조건
        • 상호배제 - 한번에 한개의 프로세스만 공유자원 사용
        • 점유와 대기 - 최소 하나 자원을 점유하고 다른 프로세스에 할당되어 사용되는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재
        • 비선점 - 다른 프로세스에 할당된 자원은 사용이 끝나기 전까지 뺏을 수 없음
        • 환형 대기 - 공유자원과 사용하기 위해 대기하는 프로세스가 원형으로 구성되어 대기해야함
      • 예방 기법
        • 위의 4가지 필요충분 조건을 부정하면 된다.
      • 회피 기법
        • 완벽한 예방은 불가능하기 때문에, 교착상태가 발생했을 때, 주로 은행원 알고리즘을 사용한다.
        • 다익스트라가 제안한 기법으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법
        • 각 프로세스에 자원을 할당해서 교착상태가 발생하지 않고, 모든 프로세스가 완료될 수 있는 상태를 안전상태, 교착상태가 발생할 수 있는 상태를 불안전 상태라고 한다.
        • 이 알고리즘을 적용하기 위해서는 자원의 양과 프로세스 수가 일정해야한다.
        • 프로세스의 모든 요구를 유한한 시간안에 할당하는 것을 보장
      • 발견 기법
        • 교착상태가 발생했는지 점검하여 프로세스와 자원을 발견하는 것
        • 교착상태 발견 알고리즘과 자원 할당 그래프 등을 사용
      • 회복 기법
        • 교착상태를 일으킨 프로세스를 종료하거나 할당된 자원을 선점하여 회복하는 것
    • 기근(Starvation)
      • 선점하고 있는 스레드가 우선순위가 높아서 계속해서 독점하거나 무한 대기중인 상태가 일어나서, 다른 스레드가 자원에 접근하지 못하는 것을 기근(Starvation)현상이라고 한다. 주로 우선순위 알고리즘의 단점으로 기근현상이 나타난다.
      • 100% 공정성을 구현하는 것은 불가능하지만, 공정성을 높이기 위해 동기화 키워드(Synchronized)나 Lock 객체를 이용할 수 있다. + Mutex나 Semaphore 기법(객체)으로 해결 가능
      • Aging 기법으로 해결
        • 앞선 스레드가 lock을 획득하면, 뒤에 줄서고있는 스레드들의 weight를 +1씩 증가시키는 기법 (기다린 시간에 따라 우선순위를 높게 부여)
    반응형

    'CS 지식 > 운영체제' 카테고리의 다른 글

    1. 운영체제 개요  (1) 2020.11.07
    뮤텍스와 세마포어  (0) 2020.10.21
    프로세스와 스레드  (0) 2020.10.21
    멀티 스레드의 임계 구역과 뮤텍스, 세마포어  (0) 2020.08.17
    프로세스와 스레드  (0) 2020.08.17

    댓글

Designed by Tistory.