1) 교통 마비 상태를 사용하여 교착상태 발생 조건에 대하여 설명하세요. 경쟁 상태와 교착 상태, 기아 상태 사이의 차이점은 무엇인가요?
모든 자동차가 멈춰 있다 -> 모든 프로세스가 멈춰 있다..
모든 자동차는 앞차가 제발 자리 비우기 기다린다. -> 모든 프로세스가 절대 발생하지 않을 사건을 기다린다 == 교착상태(deadlock)
모든 프로세스가 결코 발생하지 않을 사건을 기다리는 것 == 교착상태(deadlock)
복수 개 프로세스의 실행 순서에 따라 서로 다른 결과를 만드는 현상 == 경쟁상태(race condition)
작업이 결코 사용할 수 없는 자원을 계속 기다리는 결과(교착 상태)를 예방하려고 자원을 할당할 때 발생(기다림)하는 결과 == 기아상태(starvation)
->
교착상태와 기아상태와 경쟁상태의 차이점은?
‘교착상태’는 프로세스가 발생할 수 없는 상태, ‘기아상태’는 프로세스가 기다림으로 인하여 현재는 발생하지 못하지만 언젠가는 발생할 상태, ‘경쟁상태’는 프로세스가 둘 이상의 입력이나 조작이 동시에 일어나 의도하지 않은 결과를 가져오는 상태를 말함.
2) 자원할당 그래프에서 사이클이 있더라도 교착상태가 항상 발생하지는 않는다. 사이클을 형성하더라도 교착 상태가 발생하지 않는 예를 만들어 충분히 설명하세요.
자원 할당 그래프가 사이클을 가지고 있지 않으면, 교착 상태가 아님
자원 할당 그래프가 사이클을 가지고 있으면, 교착 상태일 수도 아닐 수도 있음
각 자원 유형의 수가 하나인 경우 : 필요충분조건
각 자원 유형이 여러 개인 경우 : 필요 조건 O, 충분 조건 X
안정상태(safe state): 시스템이 교착 상태를 일으키지 않으면서 각 프로세스가 요구한 최대 요구량만큼 필요한 자원을 할당해 줄 수 있는 상태
불안정상태(unsafe state): 교착 상태가 발생할 수 있는 가능성이 있다는 의미이지 반드시 교착 상태가 발생한다는 의미는 아닌 상태
은행가 알고리즘(Banker’s Algorithm)
교착 상태 회피 알고리즘
프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는 지를 사전에 검사하여 교착상태의 발생을 회피하는 기법(마치 은행이 대출을 시행한 후에 파산하지 않고 정상 유지되는지를 검사하여 안전하다고 판단될 때만 대출을 시행하는 것과 같은 개념)
각 프로세스가 실행되기 전에 필요로 하는 모든 자원 형태들의 최대수를 알아야 함.
프로세스가 자원을 요구할 대 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 검사
안정 상태에 있으면 자원을 할당, 그렇지 않으면 다른 프로세스들이 자원을 해제할 때까지 대기
은행가 알고리즘(Banker’s Algorithm)의 문제점
할당할 수 있는 자원의 일정량을 상시 필요로 함
사용자가 최대 필요량을 미리 알려주도록 요구하지만 자원 할당 방법이 점점 동적으로 변함에 따라 사용자의 최대 필요량을 파악하기 어려워 짐
교착상태 회피 알고리즘을 실행하면 시스템 과부하가 증가함
항상 불안정상태를 방지해야 함으로 자원 이용률이 낮아짐
문제3 참조 : http://truemind5.blogspot.com/2017/04/12-3.html