Chapter 13 교착 상태 문제 - goorm-6th-Als/for_study_Algorithm GitHub Wiki

작성자 : 강준수

[문제 1번]

다음의 상황은 교착상태 발생 조건 중 어느 것에 해당할까요?

진수와 현빈은 사실 오래전 헬스장에서 조우했던 사이이다!
그 당시에는 서로의 존재와 미래의 인연에 대해 몰랐기 때문에 각자 그저 운동을 했다.
문제는 헬스장에 스쿼트랙이 한개 밖에 없었고, muscle guy지만 I 였던 shy진수는 E 현빈이 "라잍웨잍베이비!"라고 외치며 대퇴근의 수축 이완을 느끼고, 휴식하는 동안 음악에 취해 리듬을 타며 파워랙을 향유하고 있는 것을 벤치랙에 앉아 그저 애타게 지켜볼 수 밖에 없는 슬픈 상황이 있었다...
(사실 현빈 역시 스쿼트는 간단히 하고 본 운동으로 벤치프레스를 하려 했는데 진수가 벤치를 쓰고 있는 줄 알고 일단 스쿼트랙에서 천천히 운동을하며 기다렸던 것이다..)

  • 스쿼트랙이 하나 였고, 한 사람이 사용하는 동안 다른 사람은 사용 할 수 없는 상황은 ( )에 해당된다.
  • 헬스장의 암묵적 룰 중 하나는 다른 사람이 이용 중인 기구는 강제로 뺏지 못하고, 타인의 사용이 끝난 것이 명확해지고서야 비로서 다른 사람이 이용할 수 있는 ( )의 특징이 있다는 것이다.
  • 스쿼트랙을 쓰는 현빈은 진수가 벤치를 떠나면 바로 벤치프레스를 하려 생각했고, 벤치에 앉아있던 진수는 현빈이 스쿼트랙을 빠져나오기를 기다리고 있는 상황은 ( )에 해당된다.
정답 - 하나의 기구를 동시에 여러명이 이용하지 못하고 한명이 이용할 수 있는 것은 상호 배제에 해당된다.
- 하나의 기구를 누군가가 점유하고 있을때 강제로 자원을 뺏지 못하고, 작업이 끝나고서야 이용할 수 있는 것은 비선점에 해당된다.
- 각자 자원을 할당받은 상태(기구를 사용하고 있는 상태)에서 다른 자원을 기다리는 상태는 점유와 대기에 해당한다.
image


[문제 2번]

image

수연, 수지, 다영은 알쓰조 Girls Party를 계획했다.
그녀들은 떡볶이, 브리또, 육회에 반주를 야무지게 하고 취기를 빌려 2차는 PC방에 가기로했다.
문제는 구름에서 훈련 장려금 지급이 미뤄져서 예산이 타이트했기 때문에 컴퓨터 한대만 사용할 수 있는 상황이었다..!
시간도 1시간(=가용 자원)이 가능했는데, 각자 하고 싶은 게임이 달랐고, 설상가상으로 주사가 공부였던 다영은 스프링에 취하겠다고 했다..

그것을 지켜보던 (전직 백엔드 개발자) PC방 사장님께서 다영의 학구열에 감동을 받아 멋진 제안을 하셨다.
image

  1. 컴퓨터는 원래 한대만 가능하지만, 여러대를 사용하면 각각의 컴퓨터의 사용시간 총합이 60분이 될때까지 각자 이용할 수 있다.
    (ex. 아래 표의 경우 25분+10분+15분 = 50분 이므로, 남은 시간은 10분이 남게 된다.)
  2. 각자 하려는 것(=게임, 프로세스)의 시간을 다 채우면 그 만큼의 시간을 빼지 않고 다시 원복시켜준다.
    (ex. 다영이가 인강을 50분동안 완강하면 10분이 남은것이 아닌 50분의 잔여시간을 유지시켜서 남은 10분 + 50분 -> 다시 60분을 이용하도록 한다)
    image
    술을 조금 마신 후라 계산이 잘 안됐던 수연과 알쓰 친구들은 일단 위 표와 같이 컴퓨터를 사용하다가 술이 조금 깨기 시작했고 상황을 파악했다.
    남은 시간이 총 10분밖에 없고, 3대의 컴퓨터를 지금과 같이 무지성으로 사용하다간 전부 끝장이라는 사실을..

위와 같은 상황에서 가장 타당한 주장을 한 사람은?

  1. 수연 : 이대로가단 죽도 밥도 안될것 같은데, 야야 PC방에서 무슨 인강이야~ 다영의 프로세스를 강제 종료하는것 말곤 방법이없어!
  2. 수지 : 현재 상태는 안전 순서열이 없는 불안전 상태 같은데..?아! 수연이 말대로 다영의 프로세스를 종료하고 수연 - 수지 이렇게 하면 되겠네ㄱㄱ
  3. 다영 : 아니지~ 내 프로세스 강제종료를 하는 것보다 선점을 통해 수연이가 먼저 남은 10분동안 구구덕을 다 하면 20분이 생기고, 그것을 수지가 서든을 마저 20분을 채우면 35분이 생기게 되잖아? 그럼 나도 인강을 남은 25분 다 들을 수 있어..!즉 현재 상황에서 안전 순서열은 수연 - 수지- 다영이다 이말이야.

정답 다영.

다영의 프로세스를 종료하고 수연 - 수지의 프로세스를 완료할 수 있지만, 다영이의 주장대로 하면 모두가 Win win win을 하는 결과를 얻을 수 있다.

  • 교착 상태 검출 후 회복에는 선점을 통한 회복과 프로세스 강제 종료를 통한 회복이 있다.


[문제 3번]

다음중 맞는 것은?

  1. 교착 상태 발생 조건에는 상호 대기, 점유와 배제, 비선점, 원형 대기가 있다.
  2. 교착 상태 발생 필요 조건 4가지 모두 방지해야 교착 상태를 예방할 수 있다.
  3. 교착 상태 회피는 교착 상태가 발생하지 않을 정도로 자원을 할당하고 교착상태의 위험이 있으면 자원을 할당하지 않는 방법이다.
  4. 프로세스를 강제종료 하여 교착 상태를 회복하는 방법은 작업 내용을 잃으므로 교착상태 검출 후 회복이라고 볼 수 없다.
정답 3.
- 교착 상태 발생 조건에는 상호 배제, 점유와 대기, 비선점, 원형 대기가 있다.
- 교착 상태를 예방하기 위해 교착 상태 발생 필요조건 네가지중 하나라도 만족하지 않으면 교착 상태는 발생하지 않는다.
- 교착 상태 검출 후 회복에는 선점을 통한 회복과 프로세스 강제 종료를 통한 회복이 있다.


[문제 4번]

아래 같은 상황에서 안전 순서열은?
image

할당 가능 자원 : 12
할당한 자원 : 9
남은 자원 : 3

정답 P2 - P1 - P3
P2에 남은 자원 3중 2를 주고 P2가 종료 되면
-> 남은 자원은 5가 됨
-> P3에 5를 주어도 요구량 보다 2만큼 모자라니 P1에 5를 할당해서 P1도 종료 시키면
-> 남은 자원은 10이 됨.
-> P3에 7을 추가 할당하면 P1,P2,P3 모두 자원을 할당받고 교착상태 없이 작업을 마칠 수 있다.

⚠️ **GitHub.com Fallback** ⚠️