Search

13-1 교착 상태란

Last update: @1/7/2023
혼자 공부하는 컴퓨터구조 + 운영체제

운영체제

09 운영체제 시작하기

10 프로세스와 스레드

11 CPU 스케줄링

12 프로세스 동기화

13 교착 상태

14 가상 메모리

15 파일 시스템

교착 상태(deadlock) : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
프로세스를 실행하기 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다릴 경우 그 어떤 프로세스도 더이상 진행할 수 없는 교착상태가 됨
뮤테스 락에서도 두 프로세스가 서로 잠그고 들어간 상대방 락이 false가 되기를 기다리면 교착상태가 됨
교착상태를 해결하는 방법
교착상태가 발생했을 때의 상황을 정확히 표현해 봄
자원 할당 그래프(resource-allocation graph) : 어떤 프로세스가 어떤 자원을 사용하고 있고, 또 어떤 프로세스가 어떤 자원을 기다리고 있는 지를 표현하는 간단한 그래프
규칙
프로세스는 원으로, 자원의 종류는 사각형으로 표현
사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현 예) 하드디스크가 3개라면 하드디스크 자원 내에 3개의 점이 있음
프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시함. 프로세스가 자원 이용을 끝내고 운영체제에 자원을 반납하면 화살표는 삭제됨
프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시함
교착상태가 발생한 그래프는 원형을 띔(원형을 띈다고 무조건 교착상태가 되는 것은 아님)
교착 상태가 일어나는 근본적인 이유에 대해 알아야 함
교착 상태 발생 조건 : 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생김
상호 배제(mutual exclusion) : 해당 자원을 한 번에 하나의 프로세스만 이용 가능함
점유와 대기(hold and wait) : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
비선점(nonpreemptive) : 어떤 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있는 것을 비선점 자원이라고 함. 즉, 다른 프로세스의 자원을 강제로 뺏지 못함
원형 대기(circular wait) : 프로세스들이 원의 형태로 자원을 대기하는 것