<Deadlock>

이때, Get B의 경우 process Q에 들어 있어 사용할 수 없다.

B 자원이 사용가능해질 때까지 process Pblock (=sleep, wait)상태로 만든다.

이는 Get A에서도 마찬가지다.

 

=> 따라서 P,Qblock상태의 지속으로 resource를 계속 갖는 상태로 실행이 안되어 중단되는, deadlock 상태가 발생한다.

 

 

<Deadlock의 발생예시> - 3,4의 경우 deadlock이 발생하게 된다.

 

 

 

<computing 자원의 분류>

재사용 가능 자원: hardware들이 해당된다.(cpu, semaphores, memory...)

소비성 자원: process가 사용하면 사라지는 자원들이다.

 

 

 

<Reusable ResourcesDeadlock 예시>

200Kbyte memory에 할당되어있을 때, 다음 상황을 보면

=> 150Kbyte memory가 다른 process에서 사용될 수 없는, deadlock 상태가 되어버린 것이다

 

 

<Consumable Resources 예시>

=> 대기상태의 지속으로 인해 resouce를 서로 사용하지 못하는

deadlock 상태가 되어버린 것이다

 

 

<Resource Allocation Graph>

 

 

 

 

<Deadlock발생 4조건> - 동시에 모두 만족해야함

Mutual exclusion: 한 자원에 대한 독점적 사용

Hold and wait: 어떤 자원을 가진 상태에서 다른 자원을 요청하는 것

No preemption: 이미 차지하고 있는 자원을 타 process가 강제로 빼앗아 오는 것

Circular wait: Hold-and-wait이 모든 process에 적용되는 것.

 

 

 

 

 

<Deadlock Handling>

Deadlock이 발생하기 전 OS가 사전에 예방

Deadlock이 발생해도 OSrecover 시켜주는 방법

OS가 아무것도 하지 않음(관리자가 해결)

 

 

<Deadlock Prevention_4조건 break>

Mutual exclusionbreak: 자원을 다른 process가 동시에 써야함 (불가능)

Hold and waitbreak: 자원을 기다리지 않고 처음부터 모든 자원을 받아 처리 (가능, but 현실적으로는 안좋음)

Preemption 수행: 상대 process의 자원을 강탈하면 혼란스러움. (가능, but 효율성)

Circular wait break: 가능! 3경우보다 좋음. 하지만 불편하다는 단점

 

 

<Deadlock이 발생한 후의 전략>

모든 deadlock process들을 종료(abort)

deadlock process들 중 하나만 골라서 종료(abort)

 

 

<Dining Philosophers Problem>

 

 

'Computer System > 운영체제' 카테고리의 다른 글

this->OS.code(9)  (0) 2022.12.21
this->OS.code(8)  (0) 2022.10.31
this->OS.code(6)  (0) 2022.10.31
this->OS.code(5)  (0) 2022.10.31
this->OS.code(4)  (0) 2022.10.31

+ Recent posts