Skip to content

Latest commit

 

History

History
43 lines (25 loc) · 2.28 KB

deadlock-and-starvation.md

File metadata and controls

43 lines (25 loc) · 2.28 KB

교착상태와 기아상태

교착상태란

두 개 이상의 작업이 서로 다른 작업이 끝나기만을 기다리고 있어 다음 단계를 진행하지 못하는 상태로 프로세스, 스레드 둘 다 일어날 수 있다.

A스레드에서 locking한 자원을 B스레드에서 요청하고, B스레드에서 locking한 자원을 A스레드에서 요청해서 서로 lock된 자원의 unlock을 기다릴 때 생길 수 있다.

교착상태 발생 조건

다음 네 가지 조건이 모두 성립될 때, 교착상태 발생 가능성이 있다.

  • 상호배제: 프로세스들이 필요로 하는 자원에 대한 배타적인 통제권을 요구한다.
  • 점유대기: 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  • 비선점: 프로세스가 어떤 자원의 사용을 끝낼 때 까지 그 자원을 뻇을 수 없다.
  • 순환대기: 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

따라서 위의 한 조건이라도 성립하지 않도록 하면 교착상태가 일어나지 않도록 할 수 있다.

은행가 알고리즘

프로세스가 자원을 요구할 때 시스템이 자원을 할당한 후 안정상태로 남아있게 되는지를 사전에 검사하여 교착상태를 회피하는 방법

은행가 알고리즘의 단점

  1. 할당할 수 있는 자원의 수가 일정해야 합니다.
  2. 사용자의 수가 일정해야 합니다.
  3. 항상 불안정 상태를 방지해야하므로 자원 이용도가 낮습니다.

기아상태란

특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태

교착상태와 기아상태의 차이

교착상태는 여러 프로세스, 스레드가 동일 자원 점유를 요청할 떄 발생

기아상태는 여러 프로세스, 스레드가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원이 할당되지 않는 경우를 의미

References

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 http://blog.naver.com/PostView.nhn?blogId=dong5053&logNo=220717510273&categoryNo=40&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView