[OS] Day8

Deadlock

모든 프로세스가 대기하는 상태, Waiting Thread가 상태를 다시 바꿀 수 없는 상태

데드락은 반드시 아래 4가지 조건을 모두 만족해야한다. 하나라도 만족하지 않으면 발생하지 않는다.

  1. Mutual Exclusion
  2. Hold and Wait
  3. No Preemption
  4. Circular wait

 

Deadlock Prevention

네가지 조건 중 하나를 막는 방법으로 단점이 너무 많다.

  1. 모드 리소스가 공유가 불가능하게 한다.
  2. Thread가 어떤 요청을 받으면 가지고 있던 리소스를 전부 버리고 다른 요청을 처리한다.
  3. 선점형으로 만든다. -> 다른 프로세스가 리소스를 가지고 있다면 리소스를 뺐는 방법
  4. 리소스 선점을 순서를 선형으로 부여하자.

 

Deadlock Avoidance

Request를 받기 전에 Deadlock이 발생할 지 확인을 해보고 받는 방법

 

Safe State: Deadlock이 발생하지 않는 안전한 상태로 시스템 초기에 safe state를 가지며 이후 요청이 들어올 때마다 요청에 대해 먼저 검사하여 Deadlock이 발생하지 않는 safe 상태일 경우에만 요청을 받는다.

Banker Algorithm

safe state를 충족할 때만 요청을 받는 방법을 구현한 알고리즘으로 아래와 같은 정보를 가지고 만약 Need가 Available 보다 작거나 같으면 safe state이고 크다면 unsafe state로 safe state가 될 때까지 요청을 받지 않는다.

 

Available: 사용 가능한 자원의 수

Max: 프로세스가 요청한 최대 자원 수

Allocation: 이미 할당된 자원 수

Need: 필요한 자원의 수 (Max -Allocation)

'개념 정리 > OS' 카테고리의 다른 글

[OS] Day7  (0) 2023.08.18
[OS]Day6  (0) 2023.08.16
[OS]Day5  (0) 2023.08.14
[OS]Day4  (0) 2023.08.10
[OS] Day3  (0) 2023.08.09