운영체제를 배우면서 교착상태를 알게 됐다. 그런데 DB도 데드락 생각났다. DB데드락 관련도 알아보자.
정의 : 교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.
이미지를 보면 예시를 알 수 있다.
게임이 서로의 자원을 요청할 때 서로의 자원을 공유함으로써 서로 대기하는 상태인 것이다.
그렇다면 원인은 무엇일까
원인
● 상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세들은 접근이 불가능하다.
● 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
● 비선점 : 다른 프로세스의 자원을 강제적으로 가져올 수 없다.
● 환형 대기 : 이게 앞서 말한 서로의 자원을 요구하는 상황이다.
해결 방법
1) 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계해야 한다.
2) 교착 상태 가능성이 없을 때만 자원 할당되며, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능
여부를 파악하는 은행원 알고리즘을 사용한다.
→ 은행 운영 방식을 알면 이해되기가 쉬울 것이다. 간단하게 말하면 일단 돈을 빌려주고 대출 기한이 되는
순서대로 회수하는 것이다. 잘 운용되면 상관 없지만 만약 대출을 못 갚는 상황이 많아지면 은행은
파산하는데 이걸 교착상태라고 한다.
3) 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한 개씩 지운다.
4) 교착 상태는 매우 드물게 일어나기 때문에 이를 처리하는 비용이 더 커서 교착 상태가 발생하면 사용자가
작업을 종료한다. 현대 운영체제는 이 방법을 채택했다.
'CS > 운영체제' 카테고리의 다른 글
CPU 스케쥴링 알고리즘 Re (0) | 2024.06.22 |
---|---|
메모리 관리(Memory management) Re (0) | 2024.06.21 |
메모리(Memory) Re (0) | 2024.06.21 |
CPU(Central Processing Unit) Re (1) | 2024.06.20 |
운영체제의 역할과 구조 Re (0) | 2024.06.20 |