deadlock livelock starvation

agnusdei·2024년 10월 20일
0

Hardware & Software

목록 보기
44/136

교착 상태 (Deadlock), 라이브락 (Livelock), 기아 상태 (Starvation)에 대한 설명:

1.	교착 상태 (Deadlock):
•	개념: 교착 상태는 여러 프로세스가 서로가 필요한 자원을 기다리며 무한히 대기하는 상태입니다. 즉, 자원이 잠기거나 다른 프로세스가 사용 중이기 때문에 더 이상 진행할 수 없을 때 발생합니다.
•	원리: 교착 상태는 네 가지 조건이 동시에 만족할 때 발생합니다:
•	상호 배제 (Mutual Exclusion): 자원이 한 번에 한 프로세스만 사용할 수 있어야 합니다.
•	점유 대기 (Hold and Wait): 프로세스가 자신이 가진 자원을 놓지 않고 다른 자원을 기다리는 상황.
•	비선점 (No Preemption): 이미 할당된 자원은 해당 프로세스가 해제하기 전까지 강제로 빼앗을 수 없습니다.
•	순환 대기 (Circular Wait): 서로 자원을 기다리는 프로세스들이 원형으로 연결되어 있는 상태.
2.	라이브락 (Livelock):
•	개념: 라이브락은 교착 상태와 유사하지만, 프로세스들이 자원을 얻기 위해 계속해서 상태를 변경하면서도 실제로는 아무 진전이 없는 상태입니다. 각 프로세스가 서로 자원을 양보하지만 결국 아무도 자원을 얻지 못하는 상황에서 발생합니다.
•	원리: 라이브락은 자원의 사용을 계속해서 시도하지만, 그 시도가 서로의 행동을 방해해 무한한 반복 상태에 빠지게 됩니다. 이때 시스템은 동작하고 있지만 결과적으로 아무 진전이 없습니다.
3.	기아 상태 (Starvation):
•	개념: 기아 상태는 특정 프로세스가 자원 할당에서 지속적으로 배제되어 필요한 자원을 얻지 못하는 상태입니다. 우선순위가 낮거나 자원이 계속해서 다른 프로세스에 의해 사용될 때 발생할 수 있습니다.
•	원리: 자원 스케줄링이 특정 프로세스를 계속해서 무시할 때, 해당 프로세스는 무한정 자원을 기다리게 되어 진행이 불가능해지는 상황이 됩니다.

이 세 가지 문제를 방지하는 프로토콜 설계는, 시스템이 공정하게 자원을 할당하고, 모든 프로세스가 무한 대기나 불필요한 양보 없이 자원을 사용할 수 있도록 해야 합니다.

0개의 댓글