본문 바로가기

CS/운영체제

교착상태(deadlock) Re

운영체제를 배우면서 교착상태를 알게 됐다. 그런데 DB도 데드락 생각났다. DB데드락 관련도 알아보자.

 

정의 : 교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.

 

교착상태(deadlock) 예시

 

이미지를 보면 예시를 알 수 있다.

게임이 서로의 자원을 요청할 때 서로의 자원을 공유함으로써 서로 대기하는 상태인 것이다.

그렇다면 원인은 무엇일까

 

원인

상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세들은 접근이 불가능하다.

● 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태

● 비선점 : 다른 프로세스의 자원을 강제적으로 가져올 수 없다.

● 환형 대기 : 이게 앞서 말한 서로의 자원을 요구하는 상황이다.

 

해결 방법

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