delpho

운영체제에 대하여 - 3 본문

CS

운영체제에 대하여 - 3

delpho 2022. 7. 27. 20:02

_1. 교착상태가 무엇인지 설명해주세요

 

교착상태란 두 개 이상의 프로세스나 스레드가 필요한 자원을 얻지 못해서 무한히 다음 자원을 기다리게 되는 상태입니다. 예를들어, 프로세스1, 2가 자원1,2를 얻어야하는 상황에서 프로세스1이 자원1을, 프로세스2가 자원2를 동시에 얻게 된다면 각각 자원 1,2를 얻기위해 무한정 기다리는 상태가 되버립니다.

 

 

[ 교착 상태란 (DeadLock) ]

  • 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태
  • 무한히 다음 자원을 기다리게 되는 상태

 

 

[ 교착상태가 일어나는 경우]

프로세스1, 2가 자원1, 2를 모두 얻어야 한다고 가정!

 

t1 : 프로세스1이 자원1을 얻음 / 프로세스2가 자원2를 얻음

t2 : 프로세스1은 자원2를 기다림 / 프로세스2는 자원1을 기다림

 

현재 서로 원하는 자원이 상대방에 할당되어 있어서, 두 프로세스는 무한정 wait 상태에 빠짐

 

 

 

[ 교착상태 발생조건 ]

  • 4가지 모두 성립해야 데드락 발생!
    • 하나라도 성립하지않으면 해결 가능!

 

  1. 상호 배제(Mutual exclusion)
    • 자원은 한번에 한 프로세스만 사용할 수 있음
  2. 점유 대기(Hold and wait)
    • 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 함
  3. 비선점(No preemption)
    • 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음
  4. 순환 대기(Circular wait)
    • 프로세스의 집합에서 순환 형태로 자원을 대기하고 있어야 함

 

 

[ 교착상태 처리 방법 ]

  1. 교착상태 예방
  2. 교착상태 회피
  3. 교착상태 발견
  4. 교착상태 회복

 

  1. 예방(prevention)
    • 교착 상태 발생 조건 중 하나를 제거하면서 해결한다 (자원 낭비 엄청 심함)

    • 상호배제 부정 : 여러 프로세스가 공유 자원 사용
    • 점유대기 부정 : 프로세스 실행전 모든 자원을 할당
    • 비선점 부정 : 자원 점유 중인 프로세스가 다른 자원을 요구할 때 가진 자원 반납
    • 순환대기 부정 : 자원에 고유번호 할당 후 순서대로 자원 요구
  2. 회피(avoidance)
    • 교착 상태 발생 시 피해나가는 방법

    • 은행원 알고리즘(Banker's Algorithm)
      • 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래함
      • 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 사전에 검사하여 교착 상태 회피
      • 안정 상태면 자원 할당, 아니면 다른 프로세스들이 자원 해지까지 대기

 

 

 


_2. 교착상태에서 기아상태의 해결방법에 대해 설명해보세요.

 

기아상태는 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태이머, 오래 기다린 프로세스의 우선순위를 높이거나, 요청 순서대로 처리하는 방식을 이용해 기아상태 해결이 가능합니다.

 

 

 

[ 기아 상태 ]

  • 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태
  • 기아상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우를 주로 의미함

 

[ 기아 상태 해결 방안 ]

  • 프로세스 우선순위 수시 변경을 통해 각 프로세스 높은 우선순위를 가지도록 기회 부여
  • 오래 기다린 프로세스의 우선순위 높이기 (aging 방법)
  • 우선순위가 아닌 요청 순서대로 처리하는 요청큐 사용

 

 

 


출처

https://gyoogle.dev/blog/computer-science/operating-system/DeadLock.html

 

데드락 (DeadLock, 교착 상태) | 👨🏻‍💻 Tech Interview

데드락 (DeadLock, 교착 상태) 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태를 말한다. 시스템적으로 한정된

gyoogle.dev

https://velog.io/@underlier12/OS-24-%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9C%EC%99%80-%EA%B8%B0%EC%95%84%EC%83%81%ED%83%9C

 

OS #24 교착상태와 기아상태

교착상태란 무한 대기 상태를 뜻하며 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 다음 단계로 진행하지 못하는 상태를 말한다.다음 네 가지 조건이 모두 성립

velog.io

 

'CS' 카테고리의 다른 글

운영체제에 대하여 - 5  (0) 2022.07.30
운영체제에 대하여 - 4  (0) 2022.07.27
운영체제에 대하여 - 2  (0) 2022.07.24
운영체제에 대하여 - 1  (0) 2022.07.24
자료구조에 대하여 - 2  (0) 2022.07.06