๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HYU/์šด์˜์ฒด์ œ(OS)

7. Deadlocks

by Jaeguk 2023. 5. 18.

The Deadlock Problem

๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์„ ํ•  ๋•Œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์ž์›์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋ฒ„์Šค ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด ์ž์›๋„ ์žˆ๊ณ , ์„ธ๋งˆ ํฌ์–ด ๋˜๋Š” lock ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด ์ž์›๋„ ์žˆ๋‹ค.
=> ๋ฝ์„ ํ™•๋ณดํ•ด์•ผ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ.
=> ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„์Šค๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•œ๋‹ค.
=> CPU ์Šค์ผ€์ค„๋ง๋„ ๋งˆ์ฐฌ๊ฐ€์ง€, CPU๋ฅผ ํ™•๋ณด๋ฅผ ํ•ด์•ผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘๋  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ž์›์„ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„, ์‹œ์Šคํ…œ ๋‚ด์—๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ž์›์„ ํ™•๋ณดํ•˜๊ณ  ๋ฐ˜๋‚ฉํ•˜๋Š” ๊ณผ์ •์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค.

๊ทผ๋ฐ ์–ด๋–ค ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•๋ณดํ•ด์•ผ ์ง„๋„๋ฅผ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์šด์ด ๋‚˜์˜๊ฒŒ ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค๋งŒ ํ™•๋ณดํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฆฌ์†Œ์Šค๋Š” ํ™•๋ณด๋ฅผ ๋ชป ํ•ด์„œ ๊ทธ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ทธ ๋ฆฌ์†Œ์Šค๋ฅผ ๋†“์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

A๋Š” B๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€๊ธฐํ•˜๊ณ , B๋Š” C๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€๊ธฐํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์—ฐ์‡„์ ์œผ๋กœ ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์—ฐ์‡„์ ์ธ ๋Œ€๊ธฐ๋กœ ์ธํ•ด ์ „์ฒด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง„๋„๋ฅผ ๋ชป๋‚˜๊ฐ€๊ณ  ๋Œ€๊ธฐ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์„ ๋ฐ๋“œ๋ฝ (๊ต์ฐฉ์ƒํƒœ)์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

Deadlock Characterization

  • Mutual exclusion: ์ž์›์˜ ๊ณต์œ ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. => ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ์ž์›์€ ๋ฐ๋“œ๋ฝ๊ณผ ์ƒ๊ด€ X

 

  • No preemption: ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ์žก๊ณ  ์žˆ์œผ๋ฉด ๊ทธ ์ž์›์€ ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ ๋†“์„ ๋•Œ๊นŒ์ง€๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ์ž์›์„ ์“ธ ์ˆ˜ ์—†๋‹ค๋Š” ๋œป.
    ์ž์›์„ ๋†“๊ฒŒ ๋˜๋Š” ํ–‰์œ„๋Š” ์ž์›์„ ์žก๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์„ ๋๋งˆ์น˜๊ฒŒ ๋ผ์„œ ์ž๋ฐœ์ ์œผ๋กœ ๋†“๋Š” ๊ฒฝ์šฐ๋งŒ ์žˆ๋‹ค.
    => OS๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ฐ•์ œ๋กœ ๋บ์ง€ ์•Š๋Š”๋‹ค.

 

  • Hold and wait: ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž์›์€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค.
    ๊ทผ๋ฐ ๋ฐ˜์ฏค ์žก๊ณ  ๋‚˜๋จธ์ง€ ๋ฐ˜์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์„ ๋•Œ, ๋‚˜๋จธ์ง€ ๋ฐ˜์„ ์žก์„ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋„ค ๋ผ๊ณ  ํ™•์ธํ–ˆ์„ ๋•Œ, ์Œ,, ๋‚˜๋Š” ์ผ์„ ์–ด์งœํ”ผ ๋ชป ํ•˜๋‹ˆ๊นŒ ๋‚˜๋จธ์ง€ ๋ฐ˜์€ ๋†“์•„๋ฒ„๋ฆฌ์ž ์ด๋Ÿฐ ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์ž์›์„ ์žก์€ ์ฑ„๋กœ ๋Œ€๊ธฐ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ์กฐ๊ฑด

 

  • Circular wait: P0๋Š” P1์ด ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ณ , P1์€ P2๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์ญ‰์ญ‰ ๊ฐ€์„œ Pn์ด ๋‹ค์‹œ P0๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” "์›ํ˜• ๋Œ€๊ธฐ"๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•œ๋‹ค.

 

Resource-Allocation Graph

๋ฐ๋“œ๋ฝ์„ formalํ•˜๊ฒŒ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋Œ€ํ‘œ์ ์ธ ๋ชจ๋ธ๋ง ํˆด์ด Resource- Allocation graph์ด๋‹ค.

Vertex๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ•˜๋‚˜์˜ Vertex๊ฐ€ ๋˜๊ณ , ์ž์›๋“ค์ด ํ•˜๋‚˜์˜ Vertex๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ๊ณ  ์ž์›์˜ ์ข…๋ฅ˜๋„ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค -> ์ž์› ๋ฐฉํ–ฅ์˜ ํ™”์‚ดํ‘œ๋Š” Request๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์ž์› -> ํ”„๋กœ์„ธ์Šค ๋ฐฉํ–ฅ์˜ ํ™”์‚ดํ‘œ๋Š” Allocation์„ ์˜๋ฏธํ•œ๋‹ค.

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” P1์€ R1์„ ์š”์ฒญํ•˜๊ณ  ์žˆ๋‹ค. R1์˜ instance๋Š” ํ•˜๋‚˜์ธ๋ฐ ๊ทธ ํ•˜๋‚˜๋Š” P2์—๊ฒŒ ํ• ๋‹น๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— P1์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์—†์–ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค.

 

Basic Facts

Resource allocation graph๊ฐ€ edge๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ cycle์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค.
cycle์ด ์žˆ๋‹ค๋ฉด ์ฆ‰, ์›ํ˜• ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ๋ฐ๋“œ๋ฝ์ด๋ƒ? ๊ทธ๊ฑด ์•„๋‹ˆ๋‹ค.
resource type๋งˆ๋‹ค instance๊ฐ€ ํ•˜๋‚˜๋ฉด ๋ฐ๋“œ๋ฝ์ด์ง€๋งŒ instance๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ์ƒํ™ฉ์—์„œ cycle์ด ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ๋ฐ๋“œ๋ฝ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค.

 

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” 2๊ฐœ์˜ ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค.

ํ•˜์ง€๋งŒ R2์˜ instance๊ฐ€ 2๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ์˜ˆ์‹œ๋Š” ๋ฐ๋“œ๋ฝ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ชจ๋‘๊ฐ€ ์ผ์„ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋Œ€๊ธฐ๋งŒ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฐ๋“œ๋ฝ์ด ๋งž๋‹ค.

P1์ด ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” R1์„ ํ™•๋ณดํ•ด์•ผ ํ•˜๋Š”๋ฐ R1์€ P2๊ฐ€ ์ง„๋„๋ฅผ ๋‚˜๊ฐ€์„œ ๋‹ค ์“ฐ๊ณ  ๋†“์•„์•ผ ํ•œ๋‹ค.
P2๊ฐ€ ์ง„๋„๋ฅผ ๋‚˜๊ฐ€๋ ค๋ฉด R3๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•˜๋Š”๋ฐ R3๋Š” P3๊ฐ€ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— P3๊ฐ€ ์ง„๋„๊ฐ€ ๋‚˜๊ฐ€์„œ ๋๋‚˜์•ผ ํ•œ๋‹ค.
P3๊ฐ€ ์ง„๋„๋ฅผ ๋‚˜๊ฐ€๋ ค๋ฉด R2๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•˜๋Š”๋ฐ P1๊ณผ P2๊ฐ€ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— P1, P2 ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ง„๋„๋ฅผ ๋‚˜๊ฐ€์„œ ๋๋‚ด๊ณ  ์ž์›์„ ๋ฐ˜๋‚ฉํ•ด์•ผ ํ•œ๋‹ค.
=> ์„œ๋กœ๊ฐ€ ์„œ๋กœ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋“œ๋ฝ์ด๋‹ค.

 

์ด ์˜ˆ์‹œ์—์„œ ์—ญ์‹œ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ–ˆ์ง€๋งŒ, ์œ„์˜ ๊ฒฝ์šฐ์—” ๋ฐ๋“œ๋ฝ์ด ์•„๋‹ˆ๋‹ค.

P2๊ฐ€ ์ผ์„ ๋งˆ์น˜๊ณ  R1์„ ๋ฐ˜๋‚ฉํ•˜๊ฒŒ ๋˜๋ฉด, P1์€ ์ž์›์„ ํ™•๋ณดํ•˜์—ฌ ์ผ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

P3 ์—ญ์‹œ P4๊ฐ€ ์ผ์„ ๋งˆ์น˜๊ณ  R2๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ฑฐ๋‚˜, ์ž์›์„ ํ™•๋ณดํ•œ P1์ด ์ผ์„ ๋งˆ์น˜๊ณ  R2๋ฅผ ๋ฐ˜๋‚ฉํ•˜๊ฒŒ ๋˜๋ฉด ์ผ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

=> ์–ธ์  ๊ฐ€ ๋ชจ๋‘๊ฐ€ ์ผ์„ ๋งˆ์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ๋“œ๋ฝ์ด ์•„๋‹ˆ๋‹ค.

 

Methods for Handling Deadlocks

OS๋Š” ๋ฐ๋“œ๋ฝ์— ๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ• ๊นŒ.

1. ์ ˆ๋Œ€๋กœ ๋ฐ๋“œ๋ฝ ์ž์ฒด๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•.

=> Prevent์™€ Avoidance 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

2. ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๋˜, ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋Š” ์กฐ์น˜๋ฅผ ์ทจํ•ด์ค€๋‹ค.

=> ํ‰์†Œ์— ๊ฐ์‹œ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์กฐ์น˜

3. ๋ฐ๋“œ๋ฝ์„ ๋ฌด์‹œํ•˜๋Š” ์ „๋žต

=> ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ๊ป๋‹ค ์ผœ์•ผ ํ•œ๋‹ค.

๋ง๋„ ์•ˆ ๋˜๋Š” ์ „๋žต์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์˜์™ธ๋กœ ์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„์˜ OS๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ทธ ๋งŒํผ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ๋งค์šฐ ๋“œ๋ฌผ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

=> ์š”์ฆ˜ ์‹œ์Šคํ…œ๋“ค์€ ์ž์›์ด ํ’๋ถ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋“œ๋ฝ์ด ์ž˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ ‡๋‹ค๊ณ  ์ ˆ๋Œ€ ๋ฐœ์ƒ ์•ˆ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
๋ฝ์ด๋‚˜ ์„ธ๋งˆํฌ์–ด์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ์Ÿ์ด ์—„์ฒญ ์น˜์—ดํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค.
ํŠนํžˆ ๋ฉ€ํ‹ฐ ์ฝ”์–ด๋‚˜ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ ๋”์šฑ ์น˜์—ดํ•˜๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค.
=> ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์†Œํ”„ํŠธ์›จ์–ด) ์ž…์žฅ์—์„œ๋Š” ์—„์ฒญ ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์šด์˜์ฒด์ œ ์ž…์žฅ์—์„œ ๋ณผ ๋•Œ ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ž์›๋“ค ์‚ฌ์ด์—๋Š” ๊ฒฝ์Ÿ์ด ๊ทธ๋ ‡๊ฒŒ ์น˜์—ดํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ๋“œ๋ฝ์ด ์ž˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋”๋ผ.
๊ทธ๋ž˜์„œ ๊ตณ์ด ๋ฐ๋“œ๋ฝ๊นŒ์ง€ ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ๊นŒ์ง€ ์šด์˜์ฒด์ œ๊ฐ€ ์ผ์„ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋”๋ผ๋Š” ๊ฒƒ.

=> ๊ทธ๋Ÿผ ์™œ ๋ฐฐ์šฐ๋ƒ?
์šด์˜์ฒด์ œ์—์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋ฐ๋“œ๋ฝ ๊ฐœ๋… ์ž์ฒด๊ฐ€ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—.
์•„๊นŒ ๋งํ–ˆ๋‹ค์‹œํ”ผ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ๋งค์šฐ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
์ž์›์ด ๋„‰๋„‰ํ•˜์ง€ ์•Š๋˜ ์‹œ์ ˆ์—” OS์—์„œ๋„ ๋ฐœ์ƒ์„ ํ–ˆ์—ˆ์œผ๋‹ˆ๊นŒ OS์—์„œ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค.

 

Deadlock Prevention

๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด ์ฐจ์ œ๋ฅผ ๋ง‰์•„๋ฒ„๋ฆฐ๋‹ค.
์•ž์—์„œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋ ค๋ฉด 4๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.
๊ทธ ์ค‘์— ํ•˜๋‚˜๋ฅผ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์›์ฒœ์ ์œผ๋กœ ๋ง‰์•„๋ฒ„๋ฆฌ๋ฉด ๋˜๊ฒ ๋‹ค.
=> ๊ทธ๋Ÿผ ๊ทธ๋ƒฅ ๋ฐ๋“œ๋ฝ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋ฐœ์ƒ์„ ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

 

1. Mutual Exclusion

์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„๋ฒ„๋ฆฐ๋‹ค?

์ด๊ฑด OS๊ฐ€ ์ •ํ•  ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋‹ค. => ์ด ์กฐ๊ฑด์„ ์—†์• ๋Š” ๊ฒƒ์€ ์• ์ดˆ์— ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

2. Hold and Wait

๊ทธ๋Ÿผ Hold and wait ์กฐ๊ฑด์„ ์—†์•  ๋ณด์ž
=> ์žก๊ณ  ๊ธฐ๋‹ค๋ฆฌ์ง€ ๋ชป ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์กฐ๊ฑด ๋นˆ ์†์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
๋นˆ ์†์ธ ์ƒํƒœ์—์„œ ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ํ•œ ๋ฒˆ์— ๋ชจ๋“  ์ž์›์„ ํ™•๋ณดํ•˜์ง€ ๋ชป ํ•˜๋ฉด ๋‹ค ๋‚ด๋ ค๋†“๋Š”๋‹ค.
=> ๋ชจ๋“  ์ž์›์„ ํ™•๋ณดํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ด๋ฏธ ํ™•๋ณดํ•œ ์ž์›๋„ ๋‚ด๋ ค ๋†“๊ฒŒ (all or nothing)

=> ์ด ๋ฐฉ๋ฒ•์„ ํ˜„์‹คํ™” ์‹œํ‚ค๋ ค๋ฉด?
1, 2, 3๋ฒˆ ์ž์›์„ ํ™•๋ณดํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด 1, 2, 3๋ฒˆ ์ค‘์— ํ•˜๋‚˜๋ผ๋„ ํ™•๋ณดํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋ชจ๋‘ ๋‚ด๋ ค ๋†“๋„๋ก.
๋ชจ๋‘ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๋งŒ ํ™•๋ณดํ•˜๋„๋ก ํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด resource utilization์ด ๋–จ์–ด์ง€๊ฒŒ ๋˜๊ณ , Starvation์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 1, 2๋ฒˆ ์ž์›์€ ํ™•๋ณด๋ฅผ ํ–ˆ๋Š”๋ฐ, 3๋ฒˆ์„ ํ™•๋ณดํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ด๋ฏธ ํ™•๋ณดํ•œ 1, 2 ๋ฒˆ๋„ ๋‚ด๋ ค ๋†“๋Š” ๋ฐฉ์‹์ธ๋ฐ ๋‚˜์ค‘์— 3๋ฒˆ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์„ ๋•Œ 1, 2๋ฒˆ์ด ๋‚จ์•„์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๋˜ ๋‹ค์‹œ ๋‚ด๋ ค๋†“๊ณ  ๋ชจ๋“  ์ž์›์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
๋‚˜์ค‘์—” ๋˜ 1๋ฒˆ์€ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‚˜๋จธ์ง€๋ฅผ ํ™•๋ณดํ•˜์ง€ ๋ชป ํ•ด์„œ ๋˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. No Preemption

No preemption ์กฐ๊ฑด์„ ์—†์• ๋ณด์ž.
=> ์ด ๋ง์€ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ ํ™•๋ณดํ•  ์ˆ˜ ์—†์–ด์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์œผ๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›์„ OS๊ฐ€ ๋บ์–ด๋ฒ„๋ฆฌ๊ฒ ๋‹ค๋Š” ๋œป.

Hold and wait์™€ ์ฐจ์ด๊ฐ€ ๋ญ๋ƒ, Hold and wait๋Š” ๋นˆ ์†์—์„œ ์‹œ์ž‘ํ•ด์„œ 1, 2, 3 ๋ฒˆ์„ ๋™์‹œ์— ํ™•๋ณดํ•˜์ง€ ๋ชปํ•˜๋ฉด ๊ทธ๋ƒฅ ๋†“์•„๋ฒ„๋ฆฐ๋‹ค.
No preemption์€ 1๋ฒˆ ์žก์•˜๋„ค? Ok, 2๋ฒˆ๋„ ์žก์•˜๋„ค? Ok, ๊ทผ๋ฐ 3๋ฒˆ์„ ์š”์ฒญํ–ˆ๋Š”๋ฐ ๋ชป ์žก์œผ๋ฉด 1, 2๋ฒˆ๋„ ๋‹ค ๋บ์–ด๊ฐ€๋ฒ„๋ฆผ.

=> Hold and wait๋ฅผ ๋ง‰์•„๋ฒ„๋ฆฐ ๊ฒƒ๊ณผ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ์‚ฌ์‹ค ๊ฐ™๋‹ค.
=> ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” Hold and wait๋ฅผ ๋ง‰์€ ๊ฒƒ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— Hold and wait๋ฅผ ์—†์•ด์„ ๋•Œ์™€ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง„๋‹ค.

=> resource utilization์ด ๋–จ์–ด์ง€๊ณ  starvation์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4. Circular Wait

์›ํ˜• ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ญ˜๊นŒ?
์ž์›์˜ ์ข…๋ฅ˜๋งˆ๋‹ค ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธด๋‹ค. CPU๋Š” 1๋ฒˆ, ๋ฉ”๋ชจ๋ฆฌ๋Š” 2๋ฒˆ, ... ์ด๋ ‡๊ฒŒ ์ž์›๋งˆ๋‹ค ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ฒจ์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๊ธฐ๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ์ž์›์ด ์žˆ์œผ๋ฉด ์ž์›์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ณด๊ณ  ๋‚ฎ์€ ๋ฒˆํ˜ธ๋ถ€ํ„ฐ ํ™•๋ณด๋ฅผ ํ•ด๋ผ ์ด๋ ‡๊ฒŒ ์ˆœ์„œ๋ฅผ ์ •ํ•ด์ค€๋‹ค.

3, 5, 7๋ฒˆ ์ž์›์ด ํ•„์š”ํ•˜๋‹ค๋ฉด 3, 5, 7 ์ˆœ์„œ๋Œ€๋กœ ํ™•๋ณดํ•˜๋„๋ก ํ•ด์•ผ ํ•จ.
7, 3, 5 ๋ญ ์ด๋Ÿฐ ์ˆœ์œผ๋กœ ํ™•๋ณดํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅ.

3๋ฒˆ์„ ํ™•๋ณดํ•˜์ง€ ๋ชป ํ•˜๋ฉด, 5๋ฒˆ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์–ด๋„ ์ผ๋‹จ 3๋ฒˆ์„ ๋จผ์ € ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

์ด๋Ÿฌ๋ฉด ์™œ ์›ํ˜•๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„๊นŒ?
P0๊ฐ€ P1์ด ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ๋‚ฎ์€ ๋ฒˆํ˜ธ๋ถ€ํ„ฐ ์š”์ฒญ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— P1์ด ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›์€ P0๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›๋ณด๋‹ค ๋ฒˆํ˜ธ๊ฐ€ ๋†’์€ ์ž์›์ด๋‹ค.
๋˜ P1์ด P2๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ P2๊ฐ€ ๊ฐ€์ง„ ์ž์›์€ P1์ด ๊ฐ€์ง„ ์ž์›๋ณด๋‹ค ๋†’์€ ๋ฒˆํ˜ธ์˜ ์ž์›์ด๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋งˆ์ง€๋ง‰ ํ”„๋กœ์„ธ์Šค์ธ Pn์ด P0๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.
Pn์ด ๊ฐ€์ง„ ์ž์›์ด ์ œ์ผ ๋†’์€ ๋ฒˆํ˜ธ์˜ ์ž์›์ผ ํ…Œ๋‹ˆ๊นŒ.
=> ์›ํ˜• ๋Œ€๊ธฐ(์‚ฌ์ดํด)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ


๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ๋ฒ• ์—ญ์‹œ ์ž์›์˜ ํ™œ์šฉ๋„๊ฐ€ ๋–จ์–ด์ง„๋‹ค. 7๋ฒˆ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Œ์—๋„ 3๋ฒˆ์„ ํ™•๋ณดํ•˜์ง€ ๋ชปํ•ด์„œ ํ™•๋ณดํ•˜์ง€ ์•Š๋Š”๋‹ค.
=> ๋งŒ์•ฝ 7๋ฒˆ์„ ํ™•๋ณดํ–ˆ๋‹ค๋ฉด 7๋ฒˆ์„ ๊ฐ€์ง€๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
=> ๊ทธ๊ฒƒ๋งˆ์ € ๋ชป ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

=> ๋ฐ๋“œ๋ฝ Prevention์€ ๊ณตํ†ต์ ์œผ๋กœ ์ž์› ํ™œ์šฉ์˜ ํšจ์œจ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ทผ๋ณธ์ ์œผ๋กœ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค.

 

Deadlock Avoidance

Prevention์€ ๋ฐ๋“œ๋ฝ์˜ ์‹น์„ ์ž˜๋ผ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๊ณ , avoidance๋Š” 4๊ฐ€์ง€ ์กฐ๊ฑด์„ ํ—ˆ์šฉํ•˜๊ธด ํ•˜์ง€๋งŒ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ œ์–ด๋ฅผ ํ•˜๊ฒ ๋‹ค๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ OS์—๊ฒŒ ์ž์›์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ํ• ๋‹นํ•ด ์ค„ ์ž์›์ด ๋‚จ์•„ ์žˆ๋”๋ผ๋„ ์ด ๋‚จ์•„ ์žˆ๋Š” ์ž์›์„ ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์คฌ์„ ๋•Œ ๋‚˜์ค‘์— ๋ฐ๋“œ๋ฝ์„ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉด ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด์ง€ ์•Š๊ณ  ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
์ด๊ฑธ ์ฃผ๋”๋ผ๋„ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋˜๋ฉด ํ• ๋‹นํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค.
=> ๋งค์šฐ ๋ณด์ˆ˜์ ์ด๋‹ค.
=> ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์›์„ Release ํ•ด์„œ ์•ˆ์ „ํ•œ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ํ• ๋‹นํ•ด ์ค€๋‹ค.

=> ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฏธ๋ž˜์— ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค.
=> ์ฆ‰, ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ ค๋ฉด ๋ฏธ๋ฆฌ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•ด์•ผ ํ•œ๋‹ค.
์–ด๋–ค ์ •๋ณด?
๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ž๊ธฐ๋Š” ์ผ์„ ํ•  ๋™์•ˆ์— ์ด ์ž์›์€ ์ตœ๋Œ€ ๋ช‡ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ € ์ž์›์€ ์ตœ๋Œ€ ๋ช‡ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์ด๋ ‡๊ฒŒ ๊ฐ ์ž์›์˜ ํƒ€์ž…๋งˆ๋‹ค ์ž์›์˜ ์ตœ๋Œ€ ์‚ฌ์šฉ๋Ÿ‰์„ ์„ ์–ธํ•˜๋„๋ก ํ•œ๋‹ค.

์ด ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ํ˜„์žฌ ์ž์›์˜ ์‚ฌ์šฉ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•ด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋Œ๋ ค์„œ ์ ˆ๋Œ€๋กœ ์›ํ˜• ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ธธ๋กœ๋งŒ ๊ฐ€๊ฒ ๋‹ค.  

=> ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ž„

 

Safe State

์•ˆ์ „ํ•œ ์ƒํƒœ๋ž€ ๊ทธ ์ƒํƒœ์—์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด์‚ฌํžˆ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฃŒ Sequence๊ฐ€ ์กด์žฌํ•˜๋ฉด ์•ˆ์ „ํ•œ ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค.

๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ํ˜„์žฌ ์ž๊ธฐ๊ฐ€ ์ด๋ฏธ ํ™•๋ณดํ•œ ์ž์›๊ณผ ์‹œ์Šคํ…œ์— ๋‚จ์•„์žˆ๋Š” ์ž์›๊ณผ ๋‚˜๋ณด๋‹ค ๋จผ์ € ๋ ๋งˆ์น  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ˜๋‚ฉํ•  ์ž์›๊นŒ์ง€ ๋”ํ•ด์„œ ์ผ์„ ๋๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋ณธ๋‹ค.
=> ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ Claimํ•œ ์ตœ๋Œ€ ์ž์›๋Ÿ‰์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋„ ์ผ์„ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

=> ์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” Sequence๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์•ˆ์ „ํ•œ ์ƒํƒœ๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค.

 

Safe state => no deadlocks

Unsafe sate => possiblity of deadlock

๋งŒ์•ฝ safeํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  "๊ฐ€๋Šฅ์„ฑ"์ด ์žˆ๋Š” ์ƒํƒœ๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค.
์•„๋‹ˆ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” Sequence๊ฐ€ ์—†์œผ๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ์•„๋‹ˆ๋ƒ ์™œ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๊ณ  ํ•˜๋Š๋ƒ.

์šฐ๋ฆฌ๊ฐ€ safeํ•˜๋ƒ safeํ•˜์ง€ ์•Š๋ƒ๋ฅผ ํŒ๋‹จํ•  ๋•Œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋์ด ๋‚œ๋‹ค๋Š” ๊ธฐ์ค€์„ ๋ญ˜๋กœ ์žก๋ƒ๋ฉด, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ์ดˆ์— ์„ ์–ธํ•œ "์ตœ๋Œ€" ์ž์› ์š”๊ตฌ๋Ÿ‰์„ ๋ฐ”ํƒ•์œผ๋กœ ๋์ด ๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํŒ๋‹จํ•œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰์„ ๋™์‹œ์— ์š”๊ตฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
1๋ฒˆ 3๊ฐœ, 2๋ฒˆ 5๊ฐœ, 3๋ฒˆ 2๊ฐœ๋ฅผ ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰์œผ๋กœ ์„ ์ •ํ–ˆ์„ ๋•Œ, 1๋ฒˆ 3๊ฐœ, 2๋ฒˆ 5๊ฐœ, 3๋ฒˆ 2๊ฐœ๋ฅผ ๋™์‹œ์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ 1๋ฒˆ 3๊ฐœ๋ฅผ ์š”์ฒญํ•ด์„œ ์ผ์„ ํ•˜๊ณ  ๋ฐ˜๋‚ฉํ•œ ๋‹ค์Œ 2๋ฒˆ 5๊ฐœ๋ฅผ ์š”์ฒญํ•ด์„œ ์ผ์„ ํ•˜๊ณ  ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋™์‹œ์— ์š”์ฒญํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  safeํ•œ ์ง€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ Sequence๊ฐ€ ์—†๋‹ค๊ณ  ํ•ด๋„ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

=> ๊ทธ๋Ÿฌ๋‚˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ์žˆ๋‹ค๋ฉด ๊ทธ ๊ธธ์€ ๊ฐ€์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด avoidance
=> ๋งค์šฐ ๋งค์šฐ ๋ณด์ˆ˜์ 

 

Avoidance ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฆฌ์†Œ์Šค ํƒ€์ž…๋งˆ๋‹ค ํ•˜๋‚˜์˜ instance๋งŒ ๊ฐ€์งˆ ๋•Œ์™€ ํ•˜๋‚˜์˜ ๋ฆฌ์†Œ์Šค ํƒ€์ž…์ด ์—ฌ๋Ÿฌ instance๋ฅผ ๊ฐ€์งˆ ๋•Œ๋ฅผ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•œ๋‹ค.

๋ฆฌ์†Œ์Šค ํƒ€์ž…์ด Single instance๋ฅผ ๊ฐ€์งˆ ๋•Œ๋Š” resource-allocation graph๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฆฌ์†Œ์Šค ํƒ€์ž…์ด Multiple instance๋ฅผ ๊ฐ€์งˆ ๋•Œ๋Š” banker's algorithm์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

Resource Allocation Graph Algorithm (๋ฆฌ์†Œ์Šค ํƒ€์ž…๋งˆ๋‹ค instsance๊ฐ€ ํ•˜๋‚˜)

instance๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ๊ฒฝ์šฐ์—” ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰์ด ๋ฌด์กฐ๊ฑด 1์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์€ Resource๋ฅผ ์‚ฌ์šฉํ•˜๋ƒ ์•ˆ ํ•˜๋ƒ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
๋‚ด๊ฐ€ ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ Edge๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
=> ์ด๊ฒƒ์„ claim edge(์ ์„ ์œผ๋กœ ํ‘œํ˜„)๋ผ๊ณ  ํ•œ๋‹ค.
=> ๋ฏธ๋ž˜์— ์–ธ์  ๊ฐ€๋Š” ์ด ์ž์›์„ ์‚ฌ์šฉํ•  ๊ฑฐ์•ผ ๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ์ž์›์„ ์š”์ฒญ์„ ํ•  ๋•Œ๋Š” claim edge๊ฐ€ request edge(์‹ค์„ ์œผ๋กœ ํ‘œํ˜„)๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

 

์š”์ฒญ์ด ๋ฐ›์•„๋“ค์—ฌ์ ธ์„œ ์ž์›์„ ํ• ๋‹น ๋ฐ›์œผ๋ฉด assignment edge๊ฐ€ ๊ทธ๋ ค์ง€๊ฒŒ ๋œ๋‹ค.

request edge์— ๋Œ€ํ•ด์„œ request๋ฅผ ๋ฐ›์•„๋“ค์—ฌ์„œ assign์„ ํ–ˆ์„ ๋•Œ safeํ•˜๋ฉด request edge๋ฅผ assignment edge๋กœ ๋ฐ”๊พผ๋‹ค.

single instance์—์„œ๋Š” safeํ•œ์ง€ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๋‹ค. assign์„ ํ–ˆ๋‹ค๊ณ  ์น˜๊ณ  assignment edge๋ฅผ ๊ทธ๋ ธ์„ ๋•Œ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋ฉด safeํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค.

=> ๋ชจ๋“  ์ž์›์˜ instance๊ฐ€ ํ•˜๋‚˜์ผ ๋•Œ๋Š” ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ.

 

์ž์›์„ ํ• ๋‹น ๋ฐ›์•˜๋‹ค๊ฐ€ ์ž์›์„ ๋ฐ˜๋‚ฉํ•˜๊ฒŒ ๋˜๋ฉด edge๋Š” ์—†์–ด์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋‹ค์‹œ claim edge๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค.
=> ์‚ฌ์šฉํ•œ๋‹ค๊ณ ๋งŒ ํ–ˆ์ง€ ๋ช‡ ๋ฒˆ ์‚ฌ์šฉํ•œ๋‹ค๊ณ ๋Š” ์„ ์–ธํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—

Claim edge๋ฅผ Request edge๋กœ ๋ฐ”๊พธ๊ณ , ์‹ค์ œ ํ• ๋‹น์„ ํ•ด์ค€์…ˆ ์น˜๊ณ  Allocation edge๋กœ ๋ฐ”๊พธ์—ˆ์„ ๋•Œ ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์‚ฌ์ดํด์ด ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— safeํ•˜์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค.
P1์ด ์–ธ์  ๊ฐ€ ์‹ค์ œ๋กœ R2๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— P2์—๊ฒŒ๋Š” R2๋ฅผ ํ• ๋‹นํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋ฌผ๋ก  ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๊ธด ํ•˜์ง€๋งŒ P1์ด ์ผ์„ ์–ด๋–ค ์ˆœ์„œ๋กœ ํ•˜๋ƒ์— ๋”ฐ๋ผ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
=> ๋งŒ์•ฝ P2์—๊ฒŒ ํ• ๋‹นํ•ด์ค˜๋„ P2๊ฐ€ ๋‹ค์‹œ ๋ฐ˜๋‚ฉํ•œ ํ›„์— P1์ด R2๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
=> ๊ทธ๋ž˜๋„ ์ผ๋‹จ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋‹ˆ๊นŒ ํ• ๋‹น์„ ํ•˜์ง€ ์•Š๊ฒ ๋‹ค.

 

Banker's Algorithm


Multiple instance๋ฅผ ๊ฐ€์ง€๋Š” resource๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ๋“œ๋ฝ์„ avoidํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

Banker's Algorith์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ธฐ ์ „์—, Banker's algorithm์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ๋ณด์ž.

  • Available: ์ด์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์˜ ์ˆ˜

Available[j] = k ๋ผ๋ฉด Rj ๋ผ๋Š” ์ž์›์„ k๊ฐœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

  • Max: ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰

Max[i, j] = k ๋ผ๋ฉด Pi๋Š” Rj๋ผ๋Š” ์ž์›์„ ์ตœ๋Œ€ k๊ฐœ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

=> ๋ฏธ๋ฆฌ ์„ ์–ธํ•˜๋Š” ๊ฐ’์ด๋‹ค.

  • Allocation: ํ• ๋‹น๋œ ์ž์›์˜ ์–‘

Allocation[i, j] = k ๋ผ๋ฉด Pi๋Š” Rj๋ผ๋Š” ์ž์›์„ k๊ฐœ ํ• ๋‹น๋ฐ›์•˜๋‹ค๋Š” ๋œป์ด๋‹ค.

  • Need: ํ• ๋‹น ๋ฐ›์€ ์ž์› ์™ธ์— ์ถ”๊ฐ€๋กœ ํ•„์š”๋กœ ํ•˜๋Š” ์ž์›์˜ ์–‘

Need[i, j] = k ๋ผ๋ฉด Pi๋Š” Rj๋ผ๋Š” ์ž์›์„ k๊ฐœ ์ถ”๊ฐ€๋กœ ํ•„์š”๋กœ ํ•œ๋‹ค๋Š” ๋œป.

์ด๊ฑธ ์–ด๋–ป๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋ƒ?
์ฒ˜์Œ์— claimํ•œ ์ตœ๋Œ€ ์‚ฌ์šฉ๋Ÿ‰์—์„œ ํ˜„์žฌ ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ ๋งŒํผ์„ ๋นผ๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

Need[i, j] = Max[i, j] - Allocation[i, j]

 

ํ•„์š”ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋‘ ์•Œ์•„๋ณด์•˜์œผ๋‹ˆ, ์ด์ œ safeํ•œ์ง€ ํŒ๋‹จํ•˜๋Š” algorithm์„ ์‚ดํŽด๋ณด์ž

Step 1. Work๋Š” ํ˜„์žฌ ์‹œ์Šคํ…œ์— ๋‚จ์•„์žˆ๋Š” ์ž์›์˜ ์–‘์„ ์˜๋ฏธํ•˜๊ณ , Finish๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ์„ ๋งˆ์ณค๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” Boolean data์ด๋‹ค.

Step 2. ํ˜„์žฌ ๋๋‚˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค ์ค‘์—, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”๋กœ ํ•˜๋Š” ์–‘์ด ์‹œ์Šคํ…œ์— ๋‚จ์•„์žˆ๋Š” ์ž์›์˜ ์–‘๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์• ๋“ค์„ ์ฐพ์•„๋ผ.
=> ์ถ”๊ฐ€๋กœ ํ•„์š”๋กœ ํ•˜๋Š” ์–‘์€ ์ด๋ฏธ ํ• ๋‹น๋ฐ›์€ ์–‘์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”๋กœ ํ•˜๋Š” ์–‘์ด๋ฏ€๋กœ Max๋ฅผ ํ•œ ๋ฒˆ์— ์š”์ฒญํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

=> Need < Work๋ผ๋Š” ๊ฒƒ์€ ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ์ž์›์„ ๋ชฐ๋นตํ•ด์ฃผ๋ฉด ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋์ด ๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.
=> ์ฐพ์•˜์œผ๋ฉด 3๋ฒˆ์œผ๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค.

Step 3. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ๋์ด ๋‚ฌ๋‹ค๊ณ  ํ‘œ์‹œํ•˜๊ณ , ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ์ž์›์„ Work์— ๋”ํ•ด์ค€๋‹ค(๋ฐ˜๋‚ฉ).

2, 3๋ฒˆ ๊ณผ์ •์„ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•œ ํ›„, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ Finish ๊ฐ’์ด True๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด safeํ•œ ์ƒํƒœ๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค.

 

Process i๊ฐ€ Resource j๋ฅผ k๊ฐœ ์š”์ฒญํ–ˆ์„ ๋•Œ, ๋ฐ›์•„๋“ค์ผ์ง€ ๋ง์ง€ ๊ฒฐ์ •์„ ํ•ด์•ผ ํ•œ๋‹ค.

Step 1. Request <= Need๋ผ๋ฉด ์ •์ƒ์ ์ธ ์š”์ฒญ์ด๋ฏ€๋กœ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

๋งŒ์•ฝ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, ์ž์‹ ์ด ์ฒ˜์Œ์— ์š”๊ตฌํ•œ ์š”๊ตฌ๋Ÿ‰์„ ๋„˜์–ด์„  ์š”๊ตฌ์ด๋ฏ€๋กœ ์ž˜๋ชป๋œ ์š”์ฒญ์ด๋‹ค.

Step 2. Request <= Available์ด๋ฉด Request๊ฐ€ ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์— ๊ฐ€์šฉํ•œ ์ž์›์˜ ์–‘๋ณด๋‹ค ์ ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„ ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

step 3. ์ผ๋‹จ ์คฌ๋‹ค๊ณ  ์น˜๊ณ , ์ค€ ์ดํ›„์˜ Available, Allocation, Need ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.

์ด ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ safety algorithm์„ ๋Œ๋ ค์„œ safeํ•˜๋ฉด ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ž์›์„ ํ• ๋‹นํ•ด์ค€๋‹ค.

๋งŒ์•ฝ unsafe๋กœ ํŒ๋‹จ๋˜๋ฉด ์ž์›์„ ์ฃผ์ง€ ์•Š๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋งŒ๋“ ๋‹ค.
=> ์คฌ๋‹ค ์น˜๊ณ  ๊ณ„์‚ฐํ–ˆ๋˜ ๊ฐ’๋“ค์„ ๋‹ค์‹œ ์›๋ž˜๋Œ€๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.
=> Pi์—๊ฒŒ ์ž์›์„ ์ค˜๋„ safe state๊ฐ€ ๋˜๋Š” ์‹œ์ ์ด ์˜ค๋ฉด ๊ทธ๋•Œ ์ฃผ๊ฒŒ ๋œ๋‹ค.

ํŠน์ • ์‹œ์ ์— Snapshot์„ ์ฐ์—ˆ๋‹ค.

์ดˆ๊ธฐ Available์€ ์‹œ์Šคํ…œ ๋‚ด์˜ ์ „์ฒด ์ž์› - ํ˜„์žฌ ํ• ๋‹น๋˜์–ด ์žˆ๋Š” (Allocation) ์ž์›์˜ ํ•ฉ์ด๋‹ค.

Need <= Available์ด๋ฉด ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

=> ์ข…๋ฃŒํ–ˆ๋‹ค ์น˜๊ณ , Allocation์„ Available์— ๋”ํ•ด์ค€๋‹ค.

 

<P1, P3, P4, P2, P0>์ˆœ์œผ๋กœ ์ž์›์„ ๋ชฐ์•„์คฌ์„ ๋•Œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด์‚ฌํžˆ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํ˜„์žฌ System์€ Safeํ•œ ์ƒํƒœ์— ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

P1์ด (1,0,2)๋ฅผ ์š”์ฒญํ–ˆ๋‹ค๋ฉด, ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ์„๊นŒ?

P1์—๊ฒŒ (1,0,2)๋ฅผ ํ• ๋‹นํ•ด์คฌ๋‹ค๊ณ  ์น˜๊ณ , ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” Sequence๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ• ๋‹นํ•ด์ฃผ์–ด๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ๋œป์ด๋‹ค.

<P1, P3, P4, P0, P2> ์ˆœ์œผ๋กœ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ P1์—๊ฒŒ (1,0,2)๋ฅผ ํ• ๋‹นํ•ด ์ฃผ์–ด๋„ ์—ฌ์ „ํžˆ safe state์ด๋ฏ€๋กœ ํ• ๋‹นํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

Deadlock Detection

๋ฐ๋“œ๋ฝ Detection ๋ฐฉ์‹์€ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ž์›์ด ๋‚จ์•„ ์žˆ์œผ๋ฉด ๊ทธ๋ƒฅ ์ค€๋‹ค.
=> ์ž์›์ด ์—†์–ด์„œ ๋ชป ์ฃผ๋Š” ๊ฒƒ์€ ์–ด์ฉ” ์ˆ˜ ์—†์Œ

Avoidance๋Š” ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ํŒ๋‹จํ–ˆ๋‹ค๋ฉด, Detection์€ ํ˜„์žฌ๋งŒ ๋ณด๊ณ  ํŒ๋‹จํ•œ๋‹ค.
=> ๊ทธ๋ƒฅ ํ˜„์žฌ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ž์›์ด ์žˆ์œผ๋ฉด ์ค€๋‹ค. (๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ํ—ˆ์šฉ)
=> ๋Œ€์‹  Deadlock์ด ๋ฐœ์ƒํ•˜๋ฉด Detectํ•˜๊ณ  Recoveryํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋ชจ๋“  ๋ฆฌ์†Œ์Šค ํƒ€์ž…์ด Single instance์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐ๋“œ๋ฝ์ด๋ผ๊ณ  Detectionํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด Multiple instance์ธ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ๋“œ๋ฝ์„ Detectionํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

Single Instance of Each Resource Type

Process -> Resource ๋กœ Request๋ฅผ ๊ทธ๋ฆฌ๊ณ  Resource -> Process๋กœ Allocation์„ ๊ทธ๋ ธ์—ˆ๋Š”๋ฐ, Resource vertex๋ฅผ ์ง€์šฐ๊ณ  Process -> Process ๋กœ edge๋ฅผ ๊ทธ๋ ค์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์ž์›์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•œ๋‹ค.

์™œ wait-for graph๋กœ ํ‘œํ˜„ํ•˜๋ƒ?

๊ทธ๋ž˜ํ”„์—์„œ Deadlock์„ detectํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” single instance์—์„œ๋Š” ๊ทธ๋ž˜ํ”„ ๋‚ด์— ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋Š”์ง€๋ฅผ ํ†ตํ•ด ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด ์‚ฌ์ดํด์„ ๊ฐ์ง€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ vertex์˜ ์ˆ˜์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— vertex์˜ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

Deadlock Detection Algorithm

Multiple instance Resource๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฐ๋“œ๋ฝ์„ ๊ฐ์ง€ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด์ž.

๊ทธ ์ „์— ๋จผ์ € ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋“ค์„ ์‚ดํŽด๋ณด์ž.

avoidance๋Š” ๋ฏธ๋ž˜์— ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ž˜์— ์–ผ๋งˆ๋‚˜ ์ž์›์„ ์š”์ฒญํ• ์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Max ๊ฐ™์€ ์ •๋ณด๋“ค์ด ์žˆ์—ˆ๋Š”๋ฐ, Detection์€ ํ˜„์žฌ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋งŒ ํŒ๋‹จํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— Request๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค.

Step 1. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ Allocation๋œ ์ž์›์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ์•„์ง ์ผ์„ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ผ ํŒ๋‹จํ•˜๊ณ ,

ํ˜„์žฌ Allocation๋œ ์ž์›์ด ์—†์œผ๋ฉด, ๋ฌผ๋ก  ์ผ์ด ๋๋‚˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๋ฐ๋“œ๋ฝ๊ณผ๋Š” ์—ฐ๊ด€์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ Detection์—์„œ๋Š” ์—†๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ธ ํ”„๋กœ์„ธ์Šค๋‹ค.
=> Detection์€ ํ˜„์žฌ๋งŒ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ๋‹น์žฅ ๋ฐ๋“œ๋ฝ๊ณผ ์ƒ๊ด€ ์—†์œผ๋‹ˆ๊นŒ ๋นผ๋ฒ„๋ฆฌ๊ณ  Finish๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

Step 2. ์•„์ง ๋๋‚˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค ์ค‘์— Request <= Work์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๋Š”๋‹ค.

Step 3.  Request <= Work๋ฉด ๊ฑ”๋Š” ์ž์›์„ ๋ชฐ๋นตํ•ด์ฃผ๋ฉด ์ผ์„ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ์• ๋‹ˆ๊นŒ ๋๋‚ฌ๋‹ค๊ณ  ํ‘œ์‹œํ•˜๊ณ  ๊ฑ”๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋˜ ์ž์›์„ ํšŒ์ˆ˜ํ•ด์„œ Work์— ์ง‘์–ด ๋„ฃ๋Š”๋‹ค.

Step 4. ๊ทธ๋ ‡๊ฒŒ 2,3 ๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ–ˆ์„ ๋•Œ, Finish๊ฐ€ False์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.

 

ํŠน์ • ์‹œ์ ์˜ ์‹œ์Šคํ…œ ๋‚ด์˜ Snapshot์ด ์œ„์™€ ๊ฐ™๋‹ค๋ฉด,

<P0, P2, P3, P1, P4> ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ํ• ๋‹นํ•ด์ฃผ๋ฉด, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ด์—๋Š” ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ์˜ Request๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  Finish๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  Allocation๋œ ๊ฒƒ์„ ๋ฐ˜๋‚ฉ ๋ฐ›์•„๋„ ๋˜๋ƒ, ๋‚˜์ค‘์— ๋˜ ์š”์ฒญํ•  ์ˆ˜๋„ ์žˆ์ง€ ์•Š๋ƒ. ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ

Detection์—์„œ ๋ฏธ๋ž˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€๋งŒ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ ํ•œ ์นธ์ด๋ผ๋„ ์ง„๋„๋ฅผ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค.

Detection ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n^3)์ธ ๋งค์šฐ ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ด๋Ÿฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋„ˆ๋ฌด ์ž์ฃผ ๋Œ์•„๊ฐ€๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž„. ๋งค ์š”์ฒญ๋งˆ๋‹ค O(n^3) ๋งŒํผ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์žก์•„๋จน์œผ๋ฉด CPU๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์žก์•„๋จน๋Š”๋‹ค.
=> ๊ทธ๋ž˜์„œ ๋ฌด์‹œํ•˜๋Š” ์ •์ฑ…์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋งŒ์•ฝ ์ด๋Ÿฌํ•œ Detection์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋˜์–ด์•ผ ํ• ๊นŒ?

1. ์›์น™์ ์œผ๋กœ๋Š” ์ž์›์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š”๋ฐ ์ด๋Ÿฌ๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง„๋‹ค.
2. ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์—†์„ ๋•Œ๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋Œ๋ ค์„œ Detection ํ•˜์ž
3. ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ๋นˆ๋„๋Š” ๋งค์šฐ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋”์”ฉ ์ฃผ๊ธฐ์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋Œ๋ฆฌ์ž

 

Recovery of Deadlocks: Process Termination

  • ๋ฐ๋“œ๋ฝ์— ๊ฑธ๋ฆฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋‘ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.
  • ๋ฐ๋“œ๋ฝ์— ๊ฑธ๋ฆฐ ํ”„๋กœ์„ธ์Šค๋“ค์„ ํ•˜๋‚˜ ํ•˜๋‚˜ ์ข…๋ฃŒ์‹œ์ผœ๋ณด์ž. ํ•˜๋‚˜ ์ฃฝ์ด๊ณ  Detection, ํ•˜๋‚˜ ์ฃฝ์ด๊ณ  Detection                            => ๋ฐ๋“œ๋ฝ์ด Detection๋˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์ข…๋ฃŒ์‹œํ‚ฌ ๊ฒƒ์ธ๊ฐ€??

1. ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ข…๋ฃŒ์‹œํ‚ค์ž.

2. ์–ผ๋งˆ๋‚˜ ์˜ค๋žซ๋™์•ˆ ๋™์ž‘ํ–ˆ๋ƒ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹œ์ž‘ํ•œ์ง€ ์–ผ๋งˆ ์•ˆ ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ข…๋ฃŒ์‹œํ‚ค์ž.

3. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•œ ์–‘์ด ๋” ์ค‘์š”ํ•˜์ง€ ์•Š๋ƒ. ์งง๊ฒŒ ๋Œ์•˜๋”๋ผ๋„ ์—„์ฒญ๋‚œ ์–‘์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋™์ž‘ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์ข…๋ฃŒ์‹œํ‚ค๋ฉด ๋‚˜์ค‘์— ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋˜ ๊ทธ๋งŒํผ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„์„œ ์‚ฌ์šฉํ• ํ…Œ๋‹ˆ๊นŒ ์ข…๋ฃŒ์‹œํ‚ค์ง€ ๋ง๊ณ  ๋จผ์ € ๋๋‚ด๋Š” ๊ฒŒ ๋‚ซ์ง€ ์•Š๋ƒ

4. ์•ž์œผ๋กœ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ž์›์˜ ์–‘์ด ์–ผ๋งˆ๋‚˜ ๋งŽ๋ƒ๋ฅผ ๋ณธ๋‹ค.
=> ์•ž์œผ๋กœ ์ž์›์„ ๋งŽ์ด ์‚ฌ์šฉํ•  ์• ๋“ค์„ ๋จผ์ € ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

5. ์ตœ์†Œํ•œ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ์„œ ๋ฐ๋“œ๋ฝ์„ ํ•ด์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์„ ์ฐพ์ž.

6. interactiveํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ background job์„ ๋จผ์ € ์ข…๋ฃŒ์‹œํ‚ค์ž.

์ด๊ฑด ์ •ํ•˜๊ธฐ ๋‚˜๋ฆ„์ด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ OS๋Š” ์‚ฌ์‹ค ๋ฐ๋“œ๋ฝ์„ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๊ณ ๋ฏผ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

Recovery of Deadlocks: Resource Preemption

๋ฐ๋“œ๋ฝ์— ๊ฑธ๋ฆฐ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๋บ๋Š”๋‹ค. abort ์‹œํ‚ค์ง€๋Š” ์•Š๊ณ  ์ž์›๋งŒ ๋บ๋Š”๋‹ค
=> ๊ทธ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ž‘ ๊ฐ€๋Šฅํ•˜๋‹ค.

์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ victim์œผ๋กœ ์„ ์ •ํ• ๊นŒ

1. Minimize cost: ์ตœ์†Œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋„๋ก victim์„ ์„ ์ •ํ•˜์ž.

2. Rollback: ์ด์ „์˜ Safe State๋กœ ๋˜๋Œ๋ฆฌ์ž.

์Œ ์–ด์งœํ”ผ ์ด๋•Œ ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋˜ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋ƒ?
์•„๋‹ˆ๋‹ค. ๋ฐ๋“œ๋ฝ์ด๋ผ๋Š” ๊ฒƒ์€ ์Šค์ผ€์ค„๋ง์ด ์ ˆ๋ฌ˜ํ•˜๊ฒŒ ๋˜์–ด์„œ ์›ํ˜• ๋Œ€๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.
๋‹ค์‹œ ๋Œ์•„๊ฐ”๋‹ค๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋ฉด OS๋Š” ์›Œ๋‚™ dynamicํ•˜๊ฒŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋˜ ๊ทธ๋Ÿฐ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

Resource Preemption์„ ์‚ฌ์šฉํ•˜๋ฉด Startvation์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

=> victim์„ ์„ ์ •ํ•  ๋•Œ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ victim์œผ๋กœ ์„ ์ •๋˜์—ˆ๋ƒ๋ฅผ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.

 

Avoidance vs Detection

Avoidance๋Š” ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•ด์„œ ์•ˆ์ „ํ•œ ๊ธธ๋กœ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

Detection์€ ํ˜„์žฌ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ๊ณ , ๋ฐ๋“œ๋ฝ์„ ํ—ˆ์šฉํ•œ๋‹ค.

 

Avoidance

๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ๋Œ€ ์ž์› ์‚ฌ์šฉ๋Ÿ‰์„ ์š”์ฒญํ–ˆ์„ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด์„œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— Worst case๋ฅผ assumptonํ•œ๋‹ค.

๋„ˆ๋ฌด ์†Œ๊ทน์ ์œผ๋กœ ์ผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชป ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

Detection

๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ์š”์ฒญํ•˜๊ณ  ์žˆ๋Š” ์ž์›์˜ ์–‘ ์ด์ƒ์œผ๋กœ ์š”์ฒญํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  Detectionํ•˜๊ธฐ ๋•Œ๋ฌธ์— Best case๋ฅผ assumptionํ•œ๋‹ค.

 

728x90

'HYU > ์šด์˜์ฒด์ œ(OS)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

12. File System  (2) 2023.05.27
11. Virtual Memory (2)  (0) 2023.05.19
10. Virtual Memory (1)  (1) 2023.05.12
9. Memory Management (2)  (0) 2023.05.07
8. Memory Management (1)  (0) 2023.05.02