ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 교착 상태와 기아 상태
    CS 2021. 12. 12. 16:51

    교착 상태 (Dead lock)

    • 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있는 상태
    • 발생 조건
      1. 상호 배제 : 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 한다. 즉, 자원을 사용하는 프로세스에서 자원 점유를 해제 할 때까지 기다려야 한다.
      2. 점유 대기 : 할당된 자원을 가진 상태에서 점유를 해제하지 않고 다른 프로세스가 사용하고 있는 자원을 기다린다.
      3. 비선점     : 다른 프로세스가 자원의 사용을 끝낼 때 까지 기다려야만 한다. 즉, 뺏을 수 없다.
      4. 순환 대기 : 각 프로세스가 순환적으로 다음 프로세스가 필요로 하는 자원을 가지고 있다.
    • 해결 방법
      1. 예방: 4가지 조건 모두를 만족되지 않도록 한다.
      2. 회피: 알고리즘을 잘 설계하여 데드락을 회피한다.
      3. 회복: 교착 상태 발생 시 해결한다.
      4. 무시: 회복 과정의 성능저하가 심해지면 스킵한다.

    기아 상태 (Starvation)

    • 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 특정 프로세스가 자원을 계속 할당받지 못하는 상태
    • 우선순위를 통해 해결한다 
      1. 우선순위를 지속적으로 변경한다.
      2. 오랫동한 자원을 할당받지 못한 프로세스의 우선순위를 높힌다.
      3. queue를 사용하고 timeout을 주어 주기적으로 프로세스를 변경한다.
      4. etc
    1.  

    'CS' 카테고리의 다른 글

    HTTP와 HTTPS  (0) 2021.12.12
    TCP와 UDP의 차이점  (0) 2021.12.12
    뮤텍스와 세마포어 (mutex and semaphore)  (0) 2021.12.05
    좀비 프로세스, 고아 프로세스 (zombie process, orphan process)  (0) 2021.12.05
    프로세스와 쓰레드  (0) 2021.12.05

    댓글

Designed by Tistory.