교착 상태와 기아 상태의 해결 방법

jaeyong Lee·2024년 8월 1일
0

교착상태 (Dead Lock)

서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상

교착상태 발생의 필요충분 조건 (조건이 모두 만족되야 일어난다.)

상호 배제(Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.

점유와 대기(Hold ans Wait) : 프로세스가 이미 할당된 자원을 기다리면서 또다른 자원을 기다리고 있다.

비선점(Non-preemption) : 다른 프로세스에 할당된 자원은 강제로 빼앗을 수 없다.

환형 대기(Circular Wait) : 대기하는 프로세스 들이 원형으로 구성되어 있어 각 프로세스가 다른 프로세스가 점유하고 있는 자원을 기다린다.

해결책

예방기법(Prevention) : 사전에 시스템 제어, 위에 교착상태 조건 4가지 중 1가지를 제거함으로 수행 됨, but 자원의 낭비 가장 심함

회피기법(Avoidance) : 은행원 알고리즘 -> 시스템 자원 요청을 받을 때 교착상태에 빠지지 않는지 미리 확인하고 안전할 경우에만 할당

발견기법(Detection) : 자원 할당 그래프를 사용해 교착상태가 발생했는지 감지

회복기법(Recovery) : 교착상태를 일으킨 프로세스를 종료하거나, 교착상태에 빠진 프로세스에 할당된 자원을 선점하여 회복

기아상태(Starvation)

프로세스가 자원을 얻지 못하고 무한히 기다리는 상태

기아상태의 원인

주로 자원 할당 우선순위에 의해 발생된다. 높은 우선순위의 프로세스가 계속해서 자원을 할당받아 낮은 우선순위 프로세스는 계속해서 기다리는 것

해결책

자원 할당의 공정성을 보장하는 것

우선 순위 조정(Priority Adjustment),에이징 기법(Aging) : 오랫동안 자원을 할당받지 못한 프로세스의 순위를 상승시켜 자원을 받게한다.
++) 우선순위 조정이 에이징 기법보다 더 넓은 범위

라운드 로빈 방식(Round Robin Scheduling) : 각 프로세스에 일정한 시간 간격으로 자원을 순차적으로 할당

공정 큐잉(Fair Queing) : 자원을 공정하게 나누어 각 프로세스가 일정한 자원할당량을 가지도록 한다.

0개의 댓글