본문 바로가기

CS/운영체제(OS)

OS - 식사하는 철학자 문제와 교착상태(DeadLock)

728x90
  • 식사하는 철학자 문제
    • 철학자들은 밥먹고 생각하는게 일이다. 참 팔자 좋은 인생들.. 아무튼, 그들은 밥상 머리 앞에서도 생각을 한다. 한 입 먹고 내려놓고 생각하고 한 입 먹고 내려놓고 한다.
    • 그런데 사람이 5명인데 젓가락도 5개다. 쌍이 아니라 5개다. 원형 탁자에 앉아있다고 가정하면 다음과 같은 사진이 될 것이다.

철학자들과 젓가락

  • 1번 철학자가 양쪽 젓가락을 들었다고 하자. 그렇다면 2번과 5번은 젓가락이 하나밖에 없기 때문에 밥을 먹을 수 없다.
  • 계속 철학자들은 밥을 먹고 내려놓고 생각하고 반복한다. 그런데, 언젠가 이런 일이 생긴다.
    • 3번이 오른쪽 젓가락을 들었을 때 4번이 오른쪽을 들고 … 즉, 모두가 자신의 오른쪽 수저를 들어버리는 것이다. 이렇게 되면 어떻게 될까 . 아무도 밥을 먹을 수 없다! 아무도 젓가락을 내려놓지 않는다.

→ DeadLock

DeadLock

  • 이것을 교착상태라고 한다. 교착 상태는 둘 이상의 작업이 대기 상태로 중요한 자원을 기다리고 있을 때 발생한다. 위의 철학자 문제를 보면 다들 자원을 기다리고 있지만 그 자원은 절대 오지 않는다.
  • 교착 상태의 필요 조건 4가지
    • 상호 배제 : 자원을 최소 하나 이상 공유해야한다.
    • 점유와 대기 : 자원을 최소한 하나 정도는 보유하고 다른 프로세스에 할당된 자원을 얻으려고 기다리는 프로세스가 있어야한다. =
    • 비선점 : 자원을 선점할 수 없다. 즉, 강제로 빼앗을 수 없다.
    • 순환 대기 : 철학자 문제처럼 서로가 서로를 계속 기다리는 형태를 말한다.

💡 이 조건들은 필요 조건이다. 즉, 있다고 해서 반드시 발생하지 않는다. 데드락은 자주 발생하진 않지만 일어나면 치명적이기 때문에 언제나 주의해야한다.

 

  • 교착 상태의 예
    • 스풀링 시스템에서 발생하는 데드락
    • 디스크를 공유할 때 발생하는 데드락
    • 네트워크에서 발생하는 데드락
  • 교착 상태의 표현

프로세스와 리소스의 관계를 나타낸 그래프

  • 여기서 프로세스가 리소스에 가는 화살표는 자원 요구, 리소스가 프로세스에 향하는 화살표는 자원 할당이다. 이 그래프를 보고, 위의 4가지 조건을 따져보면 = 교착상태가 일어날지 안일어날 지 확인할 수 있다.

'CS > 운영체제(OS)' 카테고리의 다른 글

OS - 모니터 (멀티 스레드 프로그래밍)  (0) 2023.12.13
DeadLock (교착상태)  (0) 2023.12.11
전통적인 동기화 문제  (0) 2023.11.22
OS - 임계구역과 세마포어  (1) 2023.11.20
OS - 프로세스 동기화 개념  (0) 2023.11.11