inflearn logo
강의

Course

Instructor

Operating System Dinosaur Book Lecture

18. Deadlocks and Banker's Algorithm: Chapter 8. Deadlocks (Part 2)

11분 36초 cycle 형성시 wait하면 cycle이 해제된다는 것이 이해가 안 갑니다.

349

fostudy0838

54 asked

0

T1이 R2에 요청을 했을때 cycle이 형성되어 wait 시킨다고 하더라도 T2가 R2를 반환하기 위해서는 T2가 R1에 요청한 자원이 T2로 가야합니다. 하지만 R1은 현재 T1에 있는 상태이고 T1은 R2에 대한 요청이 거절되었으므로 waiting 상태이고, 결론적으로는 dead lock 상태에 빠집니다. T1이 R1을 T2에게 주기 위해서는 T1도 작업을 완료해야 하기 때문입니다.

그래서 공유 자원 타입마다 1개가 존재할 때, cycle이 생성되는 요청을 허가하지 않더라도, 시간이 지나더라도 dead lock 상태가 해결되지 않습니다.

해당 요청을 허가했을 때 unsafe 상태에 빠지는 것이 아니라,  cycle을 detect하는 순간 이미 deadlock 상태에 있는 것 같은데요. 제가 어디를 잘못 이해했는지 모르겠습니다.

운영체제 동시성

Answer 4

3

fostudy0838

감사합니다!

2

joonion

질문을 보고 영상을 다시 보니까, 오해할 수 있도록 설명을 애매하게 했네요. ㅠㅠ.

질문한 내용에서는 T1 ---> R2 를 승인한다고 했는데,

그러면 T1이 R1과 R2를 모두 가졌으므로, 해당하는 업무를 처리하고 R1, R2 를 반환할 것이므로 데드락이 발생하지 않을 것입니다. (사이클도 발생하지 않으므로)

하지만, Figure 8.10에서처럼 T2 ---> R2를 승인하면, 질문하신대로 데드락이 발생하게 되겠지요?

리소스 인스턴스가 하나일 경우의 RAG에서는 데드락 회피를 이 경우에 cycle detection을 통해 회피를 할 수 있다는 것입니다.

 

 

1

joonion

질문 자체를 이해할 수가 없네요. ㅠㅠ.

질문하신 예시에서 실선은 이미 할당된 리소스이고,

점선은 리소스를 요청하는 것이므로,

요청한 자원을 못 받으면 점유한 자원을 가진 상태로 계속 wait를 하므로,

데드락에 빠진다는 것입니다.

0

fostudy0838

only one instance of each resource type 상황에서 

그림 8.10은 T1 - - -> R2 claim edge을 RAG에 넣어본 상태입니다. T1 - - -> R2 요청을 승인할 시 cycle이 형성됩니다. 그래서 승인하지 않고 dead lock을 피한다는게 강의에서 나온 내용입니다.

저는 위 상황에서 dead lock을 어떻게 피할 수 있는 것인지 잘 모르겠습니다. 왜냐하면 T1--->R2 를 승인하지 않고 T1을 wait 상태로 만들어도 T1은 R1을 가지고 있는 상태입니다. 강의내용에서는 wait하면 T2가 작업을 끝내고 R2를 다시 내놓는 것으로 나오는데, T2가 작업을 끝내기 위해서는 R1이 필요합니다. 

결론적으로는 Dead lock avoidance를 위해서 요청의 승인 여부를 묻는 시점에, 이미 그림 8.10은 dead lock 상태가 될 수 밖에 없는 unsafe 상태로 보인다는 것이죠.

질문을 요약하면

강의내용은 저렇게 wait하는 방식으로 dead lock을 피할 수 있다고 나오는데 제가 보기에는 wait를 하든 안 하든 dead lock인 상황처럼 보여서요. 제가 놓친 부분이 어디인지 알고 싶습니다.

퀴즈 7번의 답에 대한 질문입니다.

0

541

1

이해하고 있는것이 맞는건지 궁금합니다 ㅠㅠ

0

802

1

타우시간

0

533

1

퀴즈1 1번 질문합니다 !

1

593

1

Page는 Text Data이외에 다른 메모리도 포함하나요?

1

369

0

IPC shared memory 코드

0

508

1

[간단한 질문 ]banker's algorithm 을 linux 에서 실제로 프로세스 관리할때 쓰이나요?

0

393

0

user mode i/o 관련 질문

0

273

1

shared memory 관련해서 질문 드립니다.

0

508

1

교수님 fork()함수에 대해 질문이 있습니다.

0

878

2

process 와 thread

0

360

1

교수님 Docker 로 실습해도 괜찮을까요?

1

855

1

Mac OS에서 Docker 이용하여 Ubuntu 20.04 환경설정 방법 공유

22

3313

2

moniter, condition variable, synchronized에 대해서 궁금한점이 있습니다..

0

660

1

왜 무료인지 이해를 못 하겠네요..

3

420

1

7.1 Classic Problems of Synchronization 질문이 있습니다

0

292

1

공룡책 8판과 10판중

0

589

1

6.3 peterson's solution 질문이 있습니다

0

217

1

08-01 연습문제 8번 질문있습니다!

0

275

0

06. 프로세스간 통신의 실제: Chapter 3. Processes (Part 4) 에 그림 3.16 3.17 실습 오류

0

259

1

안녕하세요 교수님 실습 해봤는데 LINE J가 실행이 됩니다

1

347

1

2강 실습을 위한 개발환경 구축(Windows 10 + WSL 2 + Visual Studio Code)에서 출력오류

0

337

1

아래 질문 관련하여 다시 문의드립니다

0

192

1

Thread & Concurrency (Part 2) 질문드립니다

0

181

1