강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Golden님의 프로필 이미지
Golden

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

교착 상태(deadlock) ★★★

교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유

해결된 질문

작성

·

21

0

안녕하세요 선생님 강의 잘 듣고 있습니다.

 

예전에 운영체제에 대해 배울 때, '교착상태의 4가지 필요충분조건'이라고 배웠었는데, 교안에서는 필요조건이지, 필요충분조건이 아니라고 되어있더라구요.

 

그렇다면, 4가지 조건이 충족되어도 교착상태가 발생하지 않을 수 있다는 것인데, 어떤 경우인지 궁금합니다.

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

예전에 운영체제에 대해 배울 때, '교착상태의 4가지 필요충분조건'이라고 배웠

-> 혹시 해당 교재 스샷있으면 스샷좀 부탁드립니다.

 

먼저 제가 설명드리면요.

네 가지 조건이 모두 성립해도, 실행 순서나 자원 할당 타이밍에 따라 교착상태가 발생하지 않을 수 있습니다.

즉, 4가지 조건 = 교착상태의 가능성을 만드는 조건이고 교착상태 발생 여부 = 실제 자원 할당 상태에 의해 결정됩니다.

ex)

  • 자원: R1, R2 (각각 1개씩)

  • 프로세스: P1, P2

여기서...

  • R1, R2는 상호 배제 자원

  • 프로세스는 자원을 잡고 다른 자원을 요청

  • 자원은 비선점

  • 잠재적으로 순환 대기 구조 가능 -> 교착상태 가능

하지만...

  1. P1이 R1을 획득

  2. P1이 R2를 요청 → 아직 아무도 R2를 안 쓰고 있음

  3. P1이 R2를 획득

  4. P1이 작업 종료 후 R1, R2 반납

  5. 이후 P2가 자원 사용

이렇게 순환 대기가 실제로 형성되기 전에 작업이 끝났기 때문에 교착상태가 발생하지 않을 수 있습니다.

 

 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


Golden님의 프로필 이미지
Golden

작성한 질문수

질문하기