전공/운영체제

8장

러비코스믹 2025. 4. 15. 14:07

데드락 Detection
 : Deadlcok 을 허용하지만 알고리즘으로 찾아내서 Recover

 

1. 한개의 R 에 1개의 Instance  : wait for graph

   : pi -> pj 

     : pj의 리소스를 사용하고자함

> 주기적 알고리즘이 사이클탐지 // n^2 (Task 개수)

그림1) 전에 배운
Resource-Allocation Graph

그림2) 지금배운

Corresponding wait-for graph

 

2. 한개의 R 에 Multi Instance : 

 

Banker's Algorithm 과 유사

 

1. P0 할당 > Avail) 010

2. P2 할당 >    "      313

> 나머지 다가능

>>

sequence<p0,p2,p3,p1,p4> 

   -> Finsish[i]=true 

>>> safe

 

if) P2 가 Request Resource C : 1

1. P0할당 > Avail 010 // 전과동일

2. P2할당하지 못함! 

  > 기존과 달리 P2의 Allocation을 받지 못하므로

   > Finish[i] = false

    >  P3,P1,P2,P4 : Deadlcok 

>> 이렇게 Deadlock 을 찾아낼 수 있음

 

근데 이걸 언제/얼만큼/자주 알고리즘을 돌릴건지??

고려1) 얼마나 데드락이 자주 생기는가?

고려2) 몇개의 P 를 Rolled back(원상복구) 시킬것인가? 

>

이걸 상관없이 임의로 알고리즘을 돌리면..

  많은 resource graph 가 생기고 

   > 어디서 Deadlock이 발생되었는지 파악하기 어려워짐..

 

발견한 데드락을 회복하려면?

1. 프로세스 종료

2. Resource Preemption

 

1-1) 모든 데드락 process 종료

1-2) 하나씩 종료 시켜봄

      > 어떤순서? : 우선순위, 리소스를 얼마나 쓰는지 등등 고려..

 

2) 한명씩 종료 당해야함.. > victim(피해자)

  a) Victim 선택 : 위의 순서를 고려하여 시간이 젤 적게드는순

  b) Rollback : 시스템이 safe state 였던 상태로 가서 -> victim을 재실행 시켜봄

단점) Starvation : 어떤 process가 계속 victim 당하면.. > starve 발생

 

>> 여기까지가 중간범위 

'전공 > 운영체제' 카테고리의 다른 글

메모리-2  (0) 2025.05.09
메모리  (0) 2025.05.04
7장  (0) 2025.04.13
6장-2  (0) 2025.04.10
6장  (0) 2025.04.05