반응형
DEADLOCK(교착상태) 이란
둘 이상의 프로세스가 각자 서로가 필요한 자원을 점유한 상태로 무한정 대기하는 상황
DEADLOCK 발생조건
다음 네 조건을 만족하면 데드락에 빠질 수 있는 가능성이 있다.
1. 상호배제 : 자원들은 한 프로세스만 점유할 수 있다.
2. 점유대기 : 특정 프로세스에게 쓰이고 있는 자원이 다른 프로세스에게도 필요하여 대기하는 다른 프로세스가 존재
3. 비선점 : 다른 프로세스가 자원을 점유하고 있을 때 강제로 뻇을 수 없다
4. 순환대기 : 프로세스 P0,P1,P2...Pn 이 존재할 때, Pk-1이 Pk가 필요한 자원을 가지고(Pn은 P0가 필요한 자원보유) 있는 상황
DEADLOCK 해결
1. 예방법(데드락 상태를 사전에 예방, 조건에 대한 부정)
1.1 상호배제 부정 : 여러개의 프로세스가 공유자원 사용
1.2 점유대기 부정 : 프로세스가 실행되기 전 필요한 모든 자원 할당
1.3 비선점 부정
1.4 순환대기 부정
2. 회피법(데드락 발생시 해결방법)
은행원 알고리즘 : 다익스트라가 고안한 방법. 프로세스에 자원을 배정할 때, 배정 후에 교착상태에 빠질 위험이 없는지 사전에 확인한 후 배정하는 방법.
반응형