빼미의 개발일기

[운영체제] - 32강. 교착상태 본문

프로그래밍/운영체제

[운영체제] - 32강. 교착상태

빼미01 2023. 11. 27. 14:00
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고, 추가적인 부분을 찾아 정리한 내용입니다.


교착상태는 무엇이며, 발생 원인은 무엇인가?

● 고전적 동기화 문제 (철학자의 만찬 문제)

- 각 좌석에 앉은 철학자들이 아래의 과정을 거치고 식사를 한다고 가정한다.

  • 계속 생각하다 왼쪽 포크가 사용 가능하면 집어든다.
  • 계속 생각하다 오른쪽 포크가 사용 가능하면 집어든다.
  • 왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 한다.
  • 식사 시간이 끝나면 오른쪽 포크를 내려놓는다
  • 오른쪽 포크를 내려놓으면 왼쪽 포크를 내려놓는다.
  • 위 과정을 반복한다.

- 위 과정에서 모든 철학자가 왼쪽 포크를 집었거나, 서로 눈치보며 기다리기만 하게 된다면 그 누구도 식사를 할 수 없고 그 이상 진행할 수 없는 상황이 발생한다. 이런 현상을 교착상태(데드락 - Dead Lock) 이라고 한다.

 

※ 데드락 : 둘 이상의 프로세스 또는 스레드들이 아무것도 진행하지 않고 서로 영원히 대기하는 상황.

 


 

● 데드락의 발생조건

- 1971년 코프만 교수가 코프만 조건(Coffman Conditions)을 기준으로 4가지 조건이 모두 만족하는 상태를 데드락으로 정의했다.

  • 상호배제 (Mutual Exclusion) : 자원은 한번에 한 프로세스만 사용할 수 있다. 

  • 점유 상태로 대기 (Hold and Wait) : 최소한 하나 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재한다.

  • 선점 불가 (No Preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 뺏을 수 없다.

  • 순환성 대기 (Circular Wait) : 프로세스의 집합에서 순환 형태로 자원을 대기하고 있다.

 


※ 참고자료

 

https://gyoogle.dev/blog/computer-science/operating-system/DeadLock.html

 

데드락 (DeadLock, 교착 상태) | 👨🏻‍💻 Tech Interview

데드락 (DeadLock, 교착 상태) 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태를 말한다. 시스템적으로 한정된

gyoogle.dev

 

https://namu.wiki/w/%EB%8D%B0%EB%93%9C%EB%9D%BD

 

데드락 - 나무위키

여기 사람1, 사람2 와 종이1, 종이2가 있다. 두 종이에는 숫자가 적혀 있는데, 여기서 사람 두명이 종이1의 숫자에 종이2의 숫자를 더한 것을 계산한다고 생각해 보자. 사람 둘은 접촉할 수 없고,

namu.wiki

 

https://chanhuiseok.github.io/posts/cs-2/

 

[운영체제] 데드락(Deadlock, 교착 상태)이란?

컴퓨터/IT/알고리즘 정리 블로그

chanhuiseok.github.io

 

Comments