-
[OS] 데드락(교착 상태)과 자원 할당 그래프운영체제 2023. 4. 8. 12:11728x90반응형
데드락과 자원 할당 그래프
오늘은 프로세스 실행 과정에서 발생하는 데드락에 대해서 알아보고 자원 할당 그래프, 교착 상태의 발생 원인을 알아봅시당. 🧐
🧶 데드락이란?
일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상을 데드락(dead lock)이라고 합니다.
예를 들어, 게임 프로세스는 자원 A를 점유한 채 웹 브라우저 프로세스가 점유하고 있는 자원 B의 사용이 끝나길 기다리고, 웹 브라우저 프로세스는 자원 B를 점유한 채 게임 프로세스의 자원 A 사용이 끝나길 기다리는 상황을 교착 상태라고 볼 수 있습니다. 두 프로세스는 상대방이 가진 자원을 기다리기만 하다가 멈춰버리는 것입니다.
🧶 자원 할당 그래프
교착 상태는 자원 할당 그래프(resource-allocation-graph)를 통해 단순하게 표현할 수 있습니다.
자원 할당 그래프란?
자원 할당 그래프는 말 그대로 어떤 프로세스가 어떤 자원을 사용하고 있고, 또 어떤 프로세스가 어떤 자원을 기다리고 있는지를 표현하는 간단한 그래프입니다.
자원 할당 그래프의 작성 규칙
🛠️첫째, 프로세스는 원으로, 자원의 종류는 사각형으로 표현합니다.
🛠️둘째, 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현합니다.
🛠️셋째, 자원을 할당받아 사용 중인 프로세스는 자원->프로세스 방향으로 화살표를 표시합니다.🛠️넷째, 프로세스가 어떤 자원을 기다리고 있을 경우 프로세스->자원 방향으로 화살표를 표시합니다.
🧶 데드락의 발생 조건
- 상호 배제
- 점유와 대기
- 비선점
- 원형 대기
위 네 가지 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 위 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생깁니다.
🔑 상호배제
상호배제란 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 것을 말합니다.
🔑 점유와 대기
프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태를 점유와 대기(hold and wait)라고 합니다.
🔑 비선점
비선점 자원은 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있습니다. 즉, 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했기 때문에 교착 상태가 발생하는 거라고 볼 수 있습니다.
🔑 원형 대기
프로세스들과 프로세스가 요청 및 할당받은 자원이 원의 형태를 이루는 경우도 교착 상태가 발생하는 원인이 됩니다. 프로세스들이 원의 형태로 자원을 대기하는 것을 원형 대기(circular wait)라고 합니다.
교착 상태가 발생하는 경우와 원인 네가지, 자원 할당 그래프에 대해 알아보았습니다. 다음 포스팅에서는 교착 상태를 예방하는 방법과 회피, 검출하는 방법을 배워볼게요 😀LIST'운영체제' 카테고리의 다른 글
[OS] 스와핑과 연속 메모리 할당, 외부 단편화 (0) 2023.04.16 [OS] 교착 상태(Deadlock) 해결 방법 _데드락 (0) 2023.04.09 [OS] Linux IPC 프로세스간 통신에 대해서 알아보자 (0) 2023.04.04 [OS] 프로세스 동기화 기법, 뮤텍스 락, 세마포, 모니터 (0) 2023.04.02 [OS] 프로세스 동기화 (3) 2023.04.01