카테고리 없음
교착 상태란?
Ski_
2025. 6. 22. 23:44
유튜브에 공개된 『혼자 공부하는 컴퓨터 구조+운영체제』 강의를 보고 정리한 내용입니다.
출처 : 유튜브 - 혼자 공부하는 컴퓨터 구조+운영체제
- 계속 생각을 하다가 왼쪽 포크가 사용 가능하면 집어든다
- 계속 생각을 하다가 오른쪽 포크가 사용 가능하면 집어든다
- 왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다
- 식사 시간이 끝나면 오른쪽 포크를 내려놓는다
- 오른쪽 포크를 내려놓은 뒤 왼쪽 포크를 내려놓는다
- 다시 1번부터 반복한다
→ 아무도 식사를 할 수 없는 상황
교착 상태 : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
철학자 : 프로세스 or 스레드 / 포크 : 자원 / 식사 : 실행
서로가 점거하고 있는 자원을 서로가 기다리고 있을 경우 그 어떤 프로세스나 스레드도 끝까지 실행될 수 없다.
교착 상태를 해결하기 위해서
1. 교착 상태가 발생했을 때의 상황을 정확히 표현해보기
자원 할당 그래프 : 교착 상태가 발생했을 때의 상황을 표현하기 위한 그래프
→ 교착 상태 발생 조건 파악 가능
- 어떤 프로세스가 어떤 자원을 할당 받아 사용 중인지 확인 가능
- 어떤 프로세스가 어떤 자원을 기다리고 있는지 확인 가능
자원 할당 그래프를 그리는 방법
- 프로세스는 원으로, 자원의 종류는 사각형으로 표현
- 사용할 수 있는 자원의 개수는 자원 사각형 내의 점으로 표현
- 프로세스가 어떤 자원을 할당 받아 사용중 이라면 자원에서 프로세스를 향해 화살표를 표시
- 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
식사하는 철학자 문제의 자원 할당 그래프
교착 상태가 일어난 그래프의 특징 = 자원 할당 그래프가 원의 형태를 띄고 있음
2. 교착 상태가 일어나는 근본적인 이유 이해하기
교착 상태가 발생할 조건
- 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태
- 점유와 대기 : 자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태
- 비선점 : 어떤 프로세스도 다른 프로세스의 자원을 강제로 뺏앗지 못하는 상태
- 원형 대기 : 프로세스들이 원의 형태로 자원을 대기하는 상태
위 네 가지 조건 중 하나라도 만족하지 않으면 교착 상태가 발생하지 않음
위 네 가지 조건을 모두 만족하면 교착 상태가 발생할 수 있음
반응형