프로세스 교착상태(Deadlock)

프로세스 교착상태(Deadlock)

프로세스 교착상태(Deadlock), 둘 이상의 프로세스가 서로의 작업이 끝나기를 기다리면서 무한히 멈춰 있는 상태를 의미합니다. 이러한 상태에서는 어떤 프로세스도 실행을 지속할 수 없으며, 시스템 전체가 정체될 수 있습니다.

교착상태의 예시

  1. 두 개의 기차 문제: 두 개의 기차가 한 개의 철도 선로에서 서로 마주 보고 서 있는 상황.

  2. 식사하는 철학자 문제: 여러 철학자가 한정된 포크를 사용하려고 시도하면서 발생하는 문제.

  3. 컴퓨터 시스템의 자원 할당 문제: 두 개 이상의 프로세스가 특정 자원을 서로 점유하고 있어 서로 해제되지 않는 상황.

교착상태가 발생하는 조건 (Coffman의 조건)

교착상태는 네 가지 조건이 동시에 만족될 때 발생합니다.

  1. 상호 배제(Mutual Exclusion): 한 번에 하나의 프로세스만 특정 자원을 사용할 수 있어야 합니다.

  2. 점유와 대기(Hold and Wait): 최소한 하나의 자원을 점유한 상태에서 추가적인 자원을 기다리는 상태여야 합니다.

  3. 비선점(No Preemption): 다른 프로세스가 점유한 자원을 강제로 빼앗을 수 없습니다.

  4. 순환 대기(Circular Wait): 프로세스 간에 자원을 기다리는 사이클이 형성되어야 합니다.

이 네 가지 조건이 동시에 성립할 경우 교착상태가 발생할 수 있습니다.

교착상태 해결 방법

교착상태를 해결하는 방법은 예방, 회피, 발견 및 회복 네 가지 방식으로 나눌 수 있습니다.

예방(Prevention)

교착상태 발생 조건 중 하나 이상을 제거하여 문제를 원천적으로 방지하는 방법입니다.

  • 상호 배제 제거: 공유 가능한 자원을 사용하도록 변경.

  • 점유와 대기 방지: 모든 자원을 한 번에 할당하는 방법.

  • 비선점 보장: 자원을 강제로 빼앗을 수 있도록 허용.

  • 순환 대기 방지: 자원을 순차적으로 할당하여 사이클이 발생하지 않도록 설정.

회피(Avoidance)

시스템이 교착상태로 진입하지 않도록 알고리즘을 통해 예방하는 방식입니다.

  • 은행가 알고리즘(Banker’s Algorithm): 프로세스가 요청한 자원을 할당했을 때 시스템이 안전한 상태인지 검사 후 결정하는 알고리즘.

  • 자원 할당 그래프(Resource Allocation Graph): 사이클이 발생하지 않는 경우에만 자원을 할당하는 방식.

발견(Detection)

교착상태가 발생했는지 감지하는 기법입니다.

  • 자원 할당 그래프 분석: 시스템 내 프로세스와 자원 간의 관계를 그래프로 표현하여 순환이 있는지 확인합니다.

  • 탐색 알고리즘 사용: 특정 알고리즘을 통해 교착상태의 발생 여부를 검사합니다.

회복(Recovery)

교착상태가 발생한 후 이를 해결하는 방법입니다.

  • 프로세스 종료: 교착상태에 있는 프로세스 중 일부를 종료하여 순환 대기를 제거합니다.

  • 자원 강제 회수: 일부 프로세스에서 자원을 강제로 회수하여 다른 프로세스가 실행될 수 있도록 합니다.

결론

교착상태는 여러 프로세스가 자원을 요청하면서 발생하는 심각한 문제 중 하나입니다. 이를 방지하거나 해결하기 위해서는 예방, 회피, 발견, 회복의 방법을 고려하여 시스템을 설계해야 합니다.

프로세스 스케줄링(Process Scheduling)

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] 프로세스 교착상태(Deadlock) […]