ComputerScience ๐Ÿ“š/์šด์˜์ฒด์ œ

[OS] ๊ต์ฐฉ ์ƒํƒœ(Deadlocks)

dkswnkk 2022. 3. 10. 21:17

 

์„œ๋ก 

ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์š”์ฒญํ–ˆ์„ ๋•Œ, ๊ทธ ์‹œ๊ฐ์— ๊ทธ ์ž์›์„ ์ด์šฉํ•  ์ˆ˜ ์—†๋Š” ์‚ฌํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋•Œ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋“ค์ด(๊ทธ๋“ค์ด ์š”์ฒญํ•œ ์ž์›๋“ค์ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์— ์˜ํ•ด์„œ ์ ์œ ๋˜์–ด ์žˆ๊ณ  ๊ทธ๋“ค๋„ ๋‹ค ๋Œ€๊ธฐ ์ƒํƒœ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ๊ฒฐ์ฝ” ๋‹ค์‹œ๋Š” ๊ทธ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์—†์œผ๋ฉด ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๊ต์ฐฉ ์ƒํƒœ๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

 

[OS] ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž๋“ค ๋ฌธ์ œ(The Dining-Philosophers Problem)

์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž๋“ค ๋ฌธ์ œ(_The Dining-Philosophers Problem) ์ƒ๊ฐํ•˜๊ณ  ๋จน์œผ๋ฉด์„œ ๊ทธ๋“ค์˜ ์ƒ์• ๋ฅผ ๋ณด๋‚ด๋Š” 5๋ช…์˜ ์ฒ ํ•™์ž๋ฅผ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค. ์ฒ ํ•™์ž๋“ค์€ ์›ํ˜• ํ…Œ์ด๋ธ”์„ ๊ณต์œ ํ•˜๋ฉฐ, ์ด ํ…Œ์ด๋ธ”์€ ๊ฐ๊ฐ ํ•œ ์ฒ ํ•™์ž์—

dkswnkk.tistory.com

์œ„ ๊ฒŒ์‹œ๊ธ€์˜ ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž๋“ค์ด ์ „๋ถ€ ์™ผ์ชฝ ์ “๊ฐ€๋ฝ์„ ์ง‘์—ˆ์„ ๋•Œ์˜ ๊ฒฝ์šฐ์™€ "๋‘ ๊ธฐ์ฐจ๊ฐ€ ๊ต์ฐจ๋กœ์—์„œ ์„œ๋กœ ์ ‘๊ทผํ•  ๋•Œ๋Š”, ๋‘˜ ๋‹ค ์™„์ „ํžˆ ์ •์ง€ํ•ด์•ผ ํ•˜๋ฉฐ ์ƒ๋Œ€๋ฐฉ์ด ์—†์–ด์ง€์ง€ ์•Š๋Š” ํ•œ ๋ˆ„๊ตฌ๋„ ๋‹ค์‹œ ์ถœ๋ฐœํ•  ์ˆ˜ ์—†๋‹ค."๋ผ๋Š” ์˜ˆ์ œ๊ฐ€ ๊ต์ฐฉ์ƒํƒœ์˜ ์ข‹์€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ต์ฐฉ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์„ธ ๊ฐ€์ง€  ๋ฐฉ๋ฒ•
๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ(Prevention) ๋˜๋Š” ํšŒํ”ผ(Avoidance) ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
๊ต์ฐฉ ์ƒํƒœ ํƒ์ง€(Detection) ๋ฐ ๋ณต๊ตฌ(Recovery) ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ํƒ์ง€๋˜๋ฉด ์‹œ์Šคํ…œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์กฐ์น˜๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค.
๊ต์ฐฉ์ƒํƒœ ๋ฌด์‹œ(Ignore) ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์ •๋ง ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ(1๋…„์— ํ•œ๋ฒˆ) ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ ๋˜๋Š” ํƒ์ง€์™€ ๊ด€๋ จ๋œ ์ง€์†๋œ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐœ์ƒ ์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์žฌ๋ถ€ํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(Unix ๋ฐ window๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•)

์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š”  ์•„๋ž˜์™€ ๊ฐ™์ด ๊ต์ฐฉ์ƒํƒœ ์˜ˆ๋ฐฉ๊ณผ ํšŒํ”ผ๋งŒ ๋‹ค๋ค„ ๋ณผ ๊ฒƒ์ด๋ฉฐ ๋ชฉ์ฐจ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํŠน์ง•์ง“๋Š” 4๊ฐ€์ง€ ํ•„์ˆ˜ ์กฐ๊ฑด์„ ์ •์˜ํ•œ๋‹ค.
  • ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„์—์„œ ๊ต์ฐฉ ์ƒํƒœ ์ƒํ™ฉ์„ ์‹๋ณ„ํ•œ๋‹ค.
  • ๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ์„ ์œ„ํ•œ 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ํ‰๊ฐ€ํ•œ๋‹ค.
  • ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ๋ฅผ ์œ„ํ•ด ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜(Banker's Algorithm)์„ ์ ์šฉํ•œ๋‹ค.

 

๊ต์ฐฉ ์ƒํƒœ ํŠน์„ฑ(_Deadlock Characterization)

(1) ํ•„์š”์กฐ๊ฑด๋“ค(_Necessary Conditions)

๊ต์ฐฉ ์ƒํƒœ๋Š” ํ•œ ์‹œ์Šคํ…œ์— ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋™์‹œ์— ์„ฑ๋ฆฝ๋  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€ ๊ผญ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜)

๊ต์ฐฉ์ƒํƒœ ํ•„์š”์กฐ๊ฑด
1. ์ƒํ˜ธ๋ฐฐ์ œ(mutual exclusion) ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด์„œ๋Š” ํ•œ๋ฒˆ์— ํ•œ ์Šค๋ ˆ๋“œ๋งŒ ๊ทธ ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ์š”์ฒญํ•˜๋ฉด, ์š”์ฒญ ์Šค๋ ˆ๋“œ๋Š” ์ž์›์ด ๋ฐฉ์ถœ๋  ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
2. ์ ์œ ํ•œ ์ƒํƒœ๋กœ ๋Œ€๊ธฐ(hold-and-wait) ์Šค๋ ˆ๋“œ๋Š” ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ž์›์„ ์ ์œ ํ•œ ์ฑ„, ํ˜„์žฌ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ ์œ ๋œ ์ž์›์„ ์ถ”๊ฐ€๋กœ ์–ป๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ๋Œ€๊ธฐํ•ด์•ผ ํ•œ๋‹ค.
3. ๋น„์„ ์ (no preemption) ์ž์›๋“ค์„ ์„ ์ ํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ž์›์ด ๊ฐ•์ œ์ ์œผ๋กœ ๋ฐฉ์ถœ๋  ์ˆ˜๋„ ์—†๊ณ , ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ํƒœ์Šคํฌ๋ฅผ ์ข…๋ฃŒํ•œ ํ›„ ๊ทธ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ž๋ฐœ์ ์œผ๋กœ๋งŒ ๋ฐฉ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค.
4. ์ˆœํ™˜ ๋Œ€๊ธฐ(circular wait) ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ์˜ ์ง‘ํ•ฉ[T0, T1, ..... Tn]์—์„œ T0๋Š” T1์ด ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ , T1๋Š” T2๊ฐ€ ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ , .... T(n-1)์€ Tn์ด ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•˜๋ฉฐ, Tn์€ T0๊ฐ€ ์ ์œ ํ•œ ์ž์›์„ ๋Œ€๊ธฐํ•œ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋ ค๋ฉด ์œ„ ๋„ค ๊ฐ€์ง€ ์กฐ๊ฑด์ด ์„ฑ๋ฆฝ๋˜์–ด์•ผ ํ•จ์„ ๊ผญ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆœํ™˜ ๋Œ€๊ธฐ ์กฐ๊ฑด์€ ์ ์œ ํ•˜๋ฉฐ ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ์•”์‹œํ•˜๋ฏ€๋กœ, ์„œ๋กœ ํ•ฉ์ณ๋„ ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ฐ ์กฐ๊ฑด์„ ๋ณ„๊ฐœ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋ˆ ์กŒ์Šต๋‹ˆ๋‹ค.

(2) ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„(_Resource-Allocation Graph)

๊ต์ฐฉ ์ƒํƒœ๋Š” ์‹œ์Šคํ…œ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•˜๋Š” ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋กœ ๋”์šฑ ์ •ํ™•ํ•˜๊ฒŒ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„๋Š” ์ •์ (vertex) V์˜ ์ง‘ํ•ฉ๊ณผ ๊ฐ„์„ (edge) E์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ •์  V์˜ ์ง‘ํ•ฉ์€ ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ชจ๋“  ํ™œ์„ฑ ์Šค๋ ˆ๋“œ์˜ ์ง‘ํ•ฉ์ธ T = {T1, T2, .... Tn}๊ณผ ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ชจ๋“  ์ž์› ์œ ํ˜•์˜ ์ง‘ํ•ฉ์ธ R = {R1, R2, ... Rm}์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๊ตฌ๋ณ„๋ฉ๋‹ˆ๋‹ค.

 ์Šค๋ ˆ๋“œ Ti๋กœ๋ถ€ํ„ฐ ์ž์› ์œ ํ˜• Rj๋กœ์˜ ๋ฐฉํ–ฅ ๊ฐ„์„ (directed edge)์€ Ti->Rj๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ์ด๊ฒƒ์€ ์Šค๋ ˆ๋“œ Ti๊ฐ€ ์ž์› ์œ ํ˜• Rj์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ˜„์žฌ ์ด ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ž์› ์œ ํ˜• Rj๋กœ๋ถ€ํ„ฐ ์Šค๋ ˆ๋“œ Ti๋กœ์˜ ๋ฐฉํ–ฅ ๊ฐ„์„ฑ์€ Rj -> Ti๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ์ด๊ฒƒ์€ ์ž์› ์œ ํ˜• Rj์˜ ํ•œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์Šค๋ ˆ๋“œ Ti์— ํ• ๋‹น๋œ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ ๊ฐ„์„  Ti -> Rj๋Š” ์š”์ฒญ ๊ฐ„์„ (request edge)์ด๋ผ ๋ถ€๋ฅด๊ณ , ๋ฐฉํ–ฅ ๊ฐ„์„  Rj -> Ti๋Š” ํ• ๋‹น ๊ฐ„์„ฑ(assignment edge)์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.

 ๋„์‹์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ๊ฐ ์Šค๋ ˆ๋“œ Ti๋ฅผ ์›์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ , ๊ฐ ์ž์› ์œ ํ˜• Rj๋Š” ์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋กœ, ์•„๋ž˜ ์ด๋ฏธ์ง€์— ํ‘œ์‹œ๋œ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋Š” ๊ต์ฐฉ์ƒํƒœ ์ƒํ™ฉ์„ ์ž˜ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ต์ฐฉ์ƒํƒœ์ธ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„

first_mutex ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ1์ด second_mutex๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š”๋ฐ  second_mutex๋Š” ์Šค๋ ˆ๋“œ2๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด ์Šค๋ ˆ๋“œ2๋Š” first_mutex๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์–ด์„œ ์˜์›ํžˆ ์„œ๋กœ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์—†๋Š” ๊ต์ฐฉ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 

 ์ž์› ์œ ํ˜• Rj๊ฐ€ ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์งˆ ๋•Œ๋Š” ๊ฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ๊ฐํ˜• ๋‚ด์˜ ํ•˜๋‚˜์˜ ์ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น ๊ฐ„์„ ์€ ๋˜ํ•œ ๋ฐ˜๋“œ์‹œ ์‚ฌ๊ฐํ˜• ์•ˆ์˜ ํ•˜๋‚˜์˜ ์ ์„ ์ง€์ •ํ•ด์•ผ๋งŒ ํ•˜์ง€๋งŒ, ์š”์ฒญ ๊ฐ„์„ ์€ ์‚ฌ๊ฐํ˜• Rj๋งŒ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ๊ฒƒ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 ์Šค๋ ˆ๋“œ Ti๊ฐ€ ์ž์› ์œ ํ˜• Rj์˜ ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์š”์ฒญ ๊ฐ„์„ ์ด ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•ˆ์— ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค. ์ด ์š”์ฒญ์ด ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉด, ์š”์ฒญ ๊ฐ„์„ ์€ ์ฆ‰์‹œ ํ• ๋‹น ๊ฐ„์„ ์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ๋” ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž์›์„ ๋ฐฉ์ถœํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ ํ• ๋‹น ๊ฐ„์„ ์€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

 ์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ์˜ˆ์‹œ๋กœ ์ƒํ™ฉ์„ ํ•œ๋ฒˆ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„

์Šค๋ ˆ๋“œ ์ง‘ํ•ฉ T, ์ž์› ์ง‘ํ•ฉ R, ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” E๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • T = {T1, T2, T3}
  • R = {R1, R2, R3, R4}
  • E = {T1->R1, T2->R3, R1->T2, R2->T2, R2->T1, R3->T3}

์ž์›์˜ ์ธ์Šคํ„ด์Šค๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ž์› ์œ ํ˜• R1์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•œ ๊ฐœ
  • ์ž์› ์œ ํ˜• R2์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‘ ๊ฐœ
  • ์ž์› ์œ ํ˜• R3์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•œ ๊ฐœ
  • ์ž์› ์œ ํ˜• R์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์„ธ ๊ฐœ

์Šค๋ ˆ๋“œ ์ƒํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์Šค๋ ˆ๋“œ T1์€ ์ž์› ์œ ํ˜• R2์˜ ์ธ์Šคํ„ด์Šค ํ•œ ๊ฐœ๋ฅผ ์ ์œ ํ•˜๊ณ , ์ž์› ์œ ํ˜• R1์˜ ์ธ์Šคํ„ด์Šค ํ•œ ๊ฐœ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋Œ€๊ธฐํ•œ๋‹ค.
  • ์Šค๋ ˆ๋“œ T2๋Š” R1๊ณผ R2์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ๊ฐ ํ•œ ๊ฐœ์”ฉ ์ ์œ ํ•˜๊ณ , ์ž์› ์œ ํ˜• R3์˜ ์ธ์Šคํ„ด์Šค ํ•œ ๊ฐœ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  • ์Šค๋ ˆ๋“œ T3๋Š” R3์˜ ์ธ์Šคํ„ด์Šค ํ•œ ๊ฐœ๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋‹ค.

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„์˜ ์ •์˜๋กœ๋ถ€ํ„ฐ, ์šฐ๋ฆฌ๋Š” ๋งŒ์ผ ๊ทธ๋ž˜ํ”„๊ฐ€ ์‚ฌ์ดํด(cycle)์„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ์Šคํ…œ ๋‚ด ์–ด๋А ์Šค๋ ˆ๋“œ๋„ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๊ทธ๋ž˜ํ”„๊ฐ€ ์‚ฌ์ดํด์„ ํฌํ•จํ•˜๋ฉด ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐ˜๋“œ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๊ฑด ์•„๋‹˜)

 ๋งŒ์ผ ๊ฐ ์ž์› ์œ ํ˜•์ด ์ •ํ™•ํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ์„ ๊ฐ€์ง€๋ฉด, ํ•˜๋‚˜์˜ ์‚ฌ์ดํด์€ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Œ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ์‚ฌ์ดํด์ด ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๊ฐ–๋Š” ์ž์› ์œ ํ˜•์˜ ์ง‘ํ•ฉ๋งŒ์„ ํ‘œํ•จ ํ•œ๋‹ค๋ฉด, ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์ดํด์— ํฌํ•จ๋œ ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๊ต์ฐฉ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์— ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ํ•œ ์‚ฌ์ดํด์€ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์œ„ํ•œ ํ•„์š”์ถฉ๋ถ„์กฐ๊ฑด์ด ๋ฉ๋‹ˆ๋‹ค.

 ๋งŒ์ผ ๊ฐ ์ž์› ์œ ํ˜•์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ง€๋ฉด, ์‚ฌ์ดํด์ด ๋ฐ˜๋“œ์‹œ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ์‚ฌ์ดํด์€ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ฐ ํ•„์š”์กฐ๊ฑด์ด๋ฉฐ ์ถฉ๋ถ„์กฐ๊ฑด์ด ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

 ์ด ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค์‹œ ์œ„ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์Šค๋ ˆ๋“œ T3๊ฐ€ ์ž์› ์œ ํ˜• R2์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜๋ฅผ ์š”์ฒญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž์›์ด ํ˜„์žฌ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์š”์ฒญ ๊ฐ„์„  T3 -> R2๋ฅผ ๊ทธ๋ž˜ํ”„์— ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. 

๊ต์ฐฉ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š” ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„

์ด ์‹œ์ ์—์„œ ์‹œ์Šคํ…œ ๋‚ด์— ๋‘ ๊ฐœ์˜ ์ตœ์†Œ ์‚ฌ์ดํด์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • T1 -> R1 -> T2 -> R3 -> T3 -> R2 -> T1
  • T2 -> R3 -> T3 -> R2 -> T2

์Šค๋ ˆ๋“œ T1, T2 ๊ทธ๋ฆฌ๊ณ  T3๋Š” ๊ต์ฐฉ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ T2๋Š” ์Šค๋ ˆ๋“œ T3์ด ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์› R3์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ T3๋Š” ๋ฐ˜๋ฉด์— ์Šค๋ ˆ๋“œ T1์ด๋‚˜ T2๊ฐ€ ์ž์› R2๋ฅผ ๋ฐฉ์ถœํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šค๋ ˆ๋“œ T1์€ T2๊ฐ€ ์ž์› R1์„ ๋ฐฉ์ถœํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

 ์ด์ œ ์•„๋ž˜ ์ด๋ฏธ์ง€์— ์žˆ๋Š” ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. 

์‚ฌ์ดํด์ด ์žˆ์ง€๋งŒ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„

์ด ์˜ˆ์—์„œ๋„ ์—ญ์‹œ ์‚ฌ์ดํด์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

  • T1 -> R1 -> T3 -> R2 -> T1 

๊ทธ๋Ÿฌ๋‚˜ ์œ„ ์˜ˆ์—์„œ๋Š” ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค T4๊ฐ€ ์ž์› ์œ ํ˜• R2์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ์Œ์„ ์ž์„ธํžˆ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์–ด ๊ทธ ์ž์›์ด T3์— ํ• ๋‹น๋  ์ˆ˜ ์žˆ๊ณ , ๊ทธ ๊ฒฝ์šฐ ์‚ฌ์ดํด์ด ์—†์–ด์ง‘๋‹ˆ๋‹ค.

 ์š”์•ฝํ•˜์ž๋ฉด, ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„์— ์‚ฌ์ดํด์ด ์—†๋‹ค๋ฉด, ์‹œ์Šคํ…œ์€ ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์—, ์‚ฌ์ดํด์ด ์žˆ๋‹ค๋ฉด ์‹œ์Šคํ…œ์€ ๊ต์ฐฉ ์ƒํƒœ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ต์ฐฉ ์ƒํƒœ ์˜ˆ๋ฐฉ(_Deadlock Prevention)

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

์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusion)์˜ ๋ถ€์ • - ์ฝ๊ธฐ ์ „์šฉ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ ์œ  ๋ฐ ๋Œ€๊ธฐ(Hold and Wait)์˜ ๋ถ€์ • - ํ”„๋กœ์„ธ์Šค ๋Œ€๊ธฐ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. (์ž์› ๋‚ญ๋น„ ๋ฐœ์ƒ)
- ์ž์›์„ ์ ์œ ํ•˜์ง€ ์•Š๊ณ  ์žˆ์„ ๋•Œ์—๋งŒ ๋‹ค๋ฅธ ์ž์›์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. (๊ธฐ์•„์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ)
๋น„์„ ์ (No Preemption) ์˜ ๋ถ€์ • - ๋ชจ๋“  ์ž์›์— ๋Œ€ํ•œ ์„ ์ ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
- ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์—†๋Š” ์ž์›์„ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ์กด์— ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์ž์›์„ ๋ชจ๋‘ ๋ฐ˜๋‚ฉํ•˜๊ณ  ์ƒˆ ์ž์›๊ณผ ์ด์ „ ์ž์›์„ ์–ป๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. (์ž์› ๋‚ญ๋น„ ๋ฐœ์ƒ)
์ˆœํ™˜ ๋Œ€๊ธฐ(Circular Wait)์˜ ๋ถ€์ • - ์ž์›์— ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ž์›์„ ์š”๊ตฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. (์ž์› ๋‚ญ๋น„ ๋ฐœ์ƒ)

 

 

๊ต์ฐฉ์ƒํƒœ ํšŒํ”ผ(_Deadlock Avoidance)

๋ฐ”๋กœ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ต์ฐฉ์ƒํƒœ ์˜ˆ๋ฐฉ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์žฅ์น˜์˜ ์ด์šฉ๋ฅ ์ด ์ €ํ•˜๋˜๊ณ  ์‹œ์Šคํ…œ ์ด ์ฒ˜๋ฆฌ์œจ(throughput)์ด ๊ฐ์†Œํ•œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

๊ต์ฐฉ์ƒํƒœ๋ฅผ ํšŒํ”ผํ•˜๋Š” ๋Œ€์•ˆ์€ ์ž์›์ด ์–ด๋–ป๊ฒŒ ์š”์ฒญ๋ ์ง€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž์› R1๊ณผ R2๋ฅผ ๊ฐ€์ง„ ์‹œ์Šคํ…œ์—์„œ ์Šค๋ ˆ๋“œ P๊ฐ€ ๋‘ ์ž์›์„ ๋ชจ๋‘ ๋ฐฉ์ถœํ•˜๊ธฐ ์ „์— ๋จผ์ € R1์„ ์š”์ฒญํ•˜๊ณ , ๋‹ค์Œ์— R2๋ฅผ ์š”์ฒญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ์Šค๋ ˆ๋“œ Q๋Š” ๋จผ์ € R2๋ฅผ ์š”์ฒญํ•˜๊ณ , ๋‹ค์Œ์— R1์„ ์š”์ฒญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ์˜ ์š”์ฒญ๊ณผ ๋ฐฉ์ถœ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ˆœ์„œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ž˜์— ๊ต์ฐฉ ์ƒํƒœ์˜ ๋ฐœ์ƒ์„ ํ”ผํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š”์ง€ ๋งˆ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ์œ„์™€ ๊ฐ™์€ ๊ฒฐ์ •์„ ํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ์€ ํ˜„์žฌ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ๋˜๋Š” ๋ฐ˜๋“œ์‹œ ๋Œ€๊ธฐํ•ด์•ผ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ์„ธ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ๊ฐ€์šฉ ์ž์›
  • ํ˜„์žฌ ๊ฐ ์Šค๋ ˆ๋“œ์— ํ• ๋‹น๋œ ์ž์›
  • ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์•ž์œผ๋กœ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ๋ฐฉ์ถœํ•œ ์ž์›

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

 

์ด์ œ ๋‘ ๊ฐœ์˜ ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜)์„ ์•Œ์•„๋ณผ ๊ฑด๋ฐ ๊ทธ์ „์— ์•ˆ์ „ ์ƒํƒœ๋ผ๋Š” ์šฉ์–ด์— ๋Œ€ํ•ด ๋จผ์ € ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ์ „ ์ƒํƒœ(_Safe State)

์‹œ์Šคํ…œ ์ƒํƒœ๊ฐ€ ์•ˆ์ „(safe)ํ•˜๋‹ค๋Š” ๋ง์€ ์‹œ์Šคํ…œ์ด ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ์Šค๋ ˆ๋“œ๋“ค์ด ์š”์ฒญํ•˜๋Š” ๋ชจ๋“  ์ž์›์„(์ตœ๋Œ€ ์š”๊ตฌ ์ˆ˜๋ฅผ ์š”๊ตฌํ•˜๋”๋ผ๋„) ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ์•ผ๊ธฐ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ฐจ๋ก€๋กœ ๋ชจ๋‘ ํ•  ๋‹นํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ์ด ์•ˆ์ „ ์ˆœ์„œ(safe sequence)๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‹œ์Šคํ…œ์€ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. <T1, T2, ..., Tn>๊ณผ ๊ฐ™์€ ์Šค๋ ˆ๋“œ ์ˆœ์„œ๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค๋Š” ๋ง์€(๋ชจ๋“  Ti์— ๋Œ€ํ•ด) ๊ทธ Ti๊ฐ€ ์š”์ฒญํ•˜๋Š” ์ž์›์„ ์‹œ์Šคํ…œ์— ํ˜„์žฌ ๋‚จ์•„์žˆ๋Š” ์ž์›๊ณผ ์•ž์—์„œ ์ˆ˜ํ–‰์„ ๋งˆ์น  ๋ชจ๋“  ์Šค๋ ˆ๋“œ Tj๋“ค์ด(j <i) ๋ฐ˜๋‚ฉํ•˜๋Š” ์ž์›๋“ค๋กœ ๋งŒ์กฑ์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ์Œ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ด์˜ ๊ฒฝ์šฐ Ti๊ฐ€ ์š”์ฒญํ•  ์ž์›๋“ค์„ ์ฆ‰์‹œ ๋งŒ์กฑ์‹œ์ผœ์ค„ ์ˆ˜ ์—†์„ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋˜๋ฉด Ti๊ฐ€ ๋ชจ๋“  Tj๋“ค์ด ๋งˆ์นœ ํ›„ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Ti๋Š” ๋ชจ๋“  Tj๋“ค์ด ๋ฐ˜๋‚ฉํ•œ ์ž์›๋“ค์„ ๊ฐ€์ง€๊ณ  ์ˆ˜ํ–‰์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Ti๊ฐ€ ๋๋‚ฌ์„ ๋•Œ T(i+1)์€ ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ์–ป๊ฒŒ ๋˜๊ณ  ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋ฅผ ๋ฌด์‚ฌํžˆ ๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ์‹œํ€€์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ๋ถˆ์•ˆ์ „(unsafe)ํ•˜๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

 ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค๋ฉด ๋ฌผ๋ก  ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๊ต์ฐฉ ์ƒํƒœ์— ์žˆ๋Š” ์‹œ์Šคํ…œ์€ ๋ถˆ์•ˆ์ „ํ•œ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ ์ƒํƒœ๊ฐ€ ๋ถˆ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ๊ต์ฐฉ ์ƒํƒœ๋กœ ๊ฐ„๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์•ˆ์ „, ๋ถˆ์•ˆ์ „, ๊ทธ๋ฆฌ๊ณ  ๊ต์ฐฉ ์ƒํƒœ ๊ณต๊ฐ„

์‹œ์Šคํ…œ์ด ๋ถˆ์•ˆ์ „ํ•˜๋‹ค๋Š” ๋ง์€ ์•ž์œผ๋กœ ๊ต์ฐฉ ์ƒํƒœ๋กœ ๊ฐ€๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์‹œ์Šคํ…œ์ด ์•ˆ์ „ ์ƒํƒœ์— ๋จธ๋ฌด๋Š” ํ•œ ์šด์˜์ฒด์ œ๋Š” ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋‚˜ ๊ต์ฐฉ ์ƒํƒœ ๋ชจ๋‘๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋‹จ ๋ถˆ์•ˆ์ „ ์ƒํƒœ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด ์šด์˜์ฒด์ œ๋Š” ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ๋Š” ์ž์› ์š”์ฒญ์„ ๋ง‰์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋“ค์˜ ํ–‰๋™ ์–‘ํƒœ๊ฐ€ ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

 ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์‹œ์Šคํ…œ์— 12๊ฐœ์˜ ์ž์›์ด ์žˆ๊ณ  T0, T1, T2 ์„ธ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. T0๊ฐ€ 10๊ฐœ์˜ ์ž์›์„ ํ•„์š”๋กœ ํ•˜๊ณ , T1์ด 4๊ฐœ, T2๊ฐ€ 9๊ฐœ๊นŒ์ง€์˜ ์ž์›์„ ํ•„์š”๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž„์˜์˜ ์‹œ์  t0์—์„œ T0๊ฐ€ 5๊ฐœ, T1์ด 2๊ฐœ, T2๊ฐ€ 2๊ฐœ์˜ ์ž์›์„ ๋ณด์œ  ์ค‘์ž…๋‹ˆ๋‹ค.(๋”ฐ๋ผ์„œ ์ด์ œ 3๊ฐœ์˜ ์ž์›์ด ์‹œ์Šคํ…œ ๋ณด์œ ๋ถ„์œผ๋กœ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.)

์ตœ๋Œ€ ์†Œ์š”๋Ÿ‰๊ณผ ํ˜„์žฌ ์‚ฌ์šฉ๋Ÿ‰

t0์—์„œ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋Š” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. <T1, T0, T2> ์ˆœ์„œ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์•ˆ์ „ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด T1์ด ์‹œ์Šคํ…œ ๋ณด์œ ๋ถ„์œผ๋กœ ๋จผ์ € ๋๋‚ด๊ณ  ๋‚˜๋ฉด(์ด์   ์›๋ž˜ ๋ณด์œ ๋ถ„ 3๊ฐœ ๋‚จ์•˜๋˜ ๊ฒƒ์— T1์ด ๋ฐ˜๋‚ฉํ•˜๋Š” 2๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ 3 + 2 = 5๊ฐœ๊ฐ€ ์‹œ์Šคํ…œ ๋ณด์œ ๋ถ„์ด ๋ฉ๋‹ˆ๋‹ค), T0์ด ๊ทธ ๋‹ค์„ฏ ๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€ ๋๋‚ผ ์ˆ˜ ์žˆ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ T2๊ฐ€ ๋๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค(์ด์ œ ์‹œ์Šคํ…œ ๋ณด์œ ๋ถ„์€ ๋‹ค์‹œ 12๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค).

 ์‹œ์Šคํ…œ์€ ์•ˆ์ „ ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€๋„ ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋กœ ์ „์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์˜ˆ๋ฅผ ๋“ค์–ด t1์—์„œ T2๊ฐ€ ์ž์› ํ•œ ๊ฐœ๋ฅผ ์ถ”๊ฐ€๋กœ ์š”์ฒญํ•˜์—ฌ ๊ทธ๊ฒƒ์„ ์ฃผ์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.
  2. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์‹œ์Šคํ…œ ์ƒํƒœ๋Š” ๋” ์ด์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  3. ์ด ์ƒํƒœ์—์„œ๋Š” T1 ๋งŒ์ด ์›ํ•˜๋Š” ์ž์›์„ ๋‹ค ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. T1์ด ๋งˆ์น˜๊ณ  ์ž์›์„ ๋ฐ˜๋‚ฉํ•ด๋„ ์‹œ์Šคํ…œ ๋ณด์œ ๋ถ„์€ 4๊ฐœ๋ฟ์ž…๋‹ˆ๋‹ค.
  5. T0๊ฐ€ 5๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ตœ๋Œ€ 10๊ฐœ๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€๋กœ 5๊ฐœ๊นŒ์ง€๋ฅผ ๋” ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ๊ทธ๋Ÿด ๊ฒฝ์šฐ ์ž์›์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฏ€๋กœ T0์€ ๋๋‚ด์ง€ ๋ชปํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆด ์ˆ˜๋ฐ–์— ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ T2๋„ 6๊ฐœ๊นŒ์ง€์˜ ์ž์›์„ ์ถ”๊ฐ€๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด ์Šค๋ ˆ๋“œ๋„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  7. ๊ฒฐ๊ณผ๋Š” ๊ต์ฐฉ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์œ„์—์„œ T2๊ฐ€ ์ž์›์„ ํ•œ ๊ฐœ ๋” ๋‹ฌ๋ผ๊ณ   ํ•  ๋•Œ ๊ทธ ์š”์ฒญ์„ ๊ทธ๋Œ€๋กœ ๋“ค์–ด์ฃผ๋ฉด ์‹ค์ˆ˜๋ฅผ ๋ฒ”ํ•˜๋Š” ์…ˆ์ด ๋ฉ๋‹ˆ๋‹ค. T2๊ฐ€ ํ•œ ๊ฐœ๋ฅผ ์š”์ฒญํ–ˆ๋”๋ผ๋„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ–ˆ๋‹ค๊ฐ€ ๊ทธ๊ฒƒ์„ ์ฃผ์—ˆ๋‹ค๋ฉด ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํ”ผํ•  ์ˆ˜๋„ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์•ˆ์ „์ด๋ผ๋Š” ๊ฐœ๋…์ด ์ดํ•ด๋˜์—ˆ๋‹ค๋ฉด ํšŒํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ด๋–ป๊ฒŒ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํšŒํ”ผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์›์น™์€ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๊ฐ€ ํ•ญ์ƒ ์•ˆ์ „ ์ƒํƒœ๋ฅผ ๋– ๋‚˜์ง€ ์•Š๋„๋ก ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์ดˆ์˜ ์ƒํƒœ๋Š” ๋ฌผ๋ก  ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์Šค๋ ˆ๋“œ๋“ค์ด ์ž์›์„ ์š”์ฒญํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ์ž์›์„ ์ฆ‰์‹œ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•„๋‹ˆ๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ ๋Œ€๊ธฐํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญํ•œ ์ž์›์„ ์ฆ‰์‹œ ์Šน๋‚™ํ•ด ์ฃผ๋Š” ๊ฒฝ์šฐ๋Š” ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๊ฐ€ ์•ˆ์ „ ์ƒํƒœ์—์„œ ์•ˆ์ „ ์ƒํƒœ๋กœ ์˜ฎ๊ธธ ๋•Œ๋ฟ์ž…๋‹ˆ๋‹ค.

 ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์—์„œ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์š”์ฒญํ•œ ์ž์›๋ณด๋‹ค ๋งŽ์€ ์–‘์„ ์‹œ์Šคํ…œ์ด ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๊ทธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฒŒ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž์›์˜ ์ด์šฉ๋ฅ ์€ ํšŒํ”ผ๋ฅผ ์•ˆ ์“ธ ๋•Œ ๋น„ํ•ด์„œ ๋‚ฎ์•„์งˆ ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

 

(1) ๊ต์ฐฉ์ƒํƒœ ํšŒํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1: ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋งŒ์•ฝ ๊ฐ ์ž์› ์œ ํ˜•๋งˆ๋‹ค ๋‹จ์ง€ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ–๋Š” ์ž์› ํ• ๋‹น ์‹œ์Šคํ…œ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ๋ฅผ ์œ„ํ•ด ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„์˜ ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ ๊ฐ„์„ ๊ณผ ํ• ๋‹น ๊ฐ„์„ ์— ์ถ”๊ฐ€ํ•˜์—ฌ, ์šฐ๋ฆฌ๋Š” ์˜ˆ์•ฝ ๊ฐ„์„ (claim edge)์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ํƒ€์ž…์˜ ๊ฐ„์„ ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์•ฝ ๊ฐ„์„ (Ti -> Rj)์€ Pi๊ฐ€ ๋ฏธ๋ž˜์— ์ž์› Rj๋ฅผ ์š”์ฒญํ•  ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ„์„ ์˜ ๋ฐฉํ–ฅ์€ ์š”์ฒญ ๊ฐ„์„ ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ ์„ (dashed line)์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค Ti๊ฐ€ ์ž์› Rj๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์˜ˆ์•ฝ ๊ฐ„์„  Ti -> Rj๋Š” ์š”์ฒญ ๊ฐ„์„ ์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ  Ti๊ฐ€ ์ž์› Rj๋ฅผ ๋ฐฉ์ถœํ•  ๋•Œ, ํ• ๋‹น ๊ฐ„์„  Rj -> Ti๋Š” ์˜ˆ์•ฝ ๊ฐ„์„  Ti -> Rj๋กœ ๋‹ค์‹œ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

 ์šฐ๋ฆฌ๋Š” ์‹œ์Šคํ…œ์—์„œ ์ž์›์ด ๋ฐ˜๋“œ์‹œ ์˜ˆ์•ฝ๋˜์–ด์•ผ ํ•จ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์Šค๋ ˆ๋“œ Ti๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์—, ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ์˜ˆ์•ฝ ๊ฐ„์„ ์ด ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„์— ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ Ti์™€ ์—ฐ๊ด€๋œ ๋ชจ๋“  ๊ฐ„์„ ๋“ค์ด ์˜ˆ์•ฝ ๊ฐ„์„ ์ผ ๋•Œ๋งŒ ์˜ˆ์•ฝ ๊ฐ„์„  Ti -> Rj๋ฅผ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•˜๋„๋ก ํ—ˆ์šฉํ•จ์œผ๋กœ์จ ์šฐ๋ฆฌ๋Š” ์•ž์˜ ์กฐ๊ฑด์„ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 ์Šค๋ ˆ๋“œ Ti๊ฐ€ ์ž์› Rj๋ฅผ ์š”์ฒญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์š”์ฒญ ๊ฐ„์„  Ti -> Rj๋ฅผ ํ• ๋‹น ๊ฐ„์„  Rj -> Ti๋กœ ๋ณ€ํ™˜ํ•ด๋„ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„์— ์‚ฌ์ดํด์„ ํ˜•์„ฑํ•˜์ง€ ์•Š์„ ๋•Œ๋งŒ ์š”์ฒญ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋งŒ์•ฝ ์‚ฌ์ดํด์ด ์—†๋‹ค๋ฉด ์ž์›์„ ํ• ๋‹นํ•ด๋„ ์‹œ์Šคํ…œ์€ ์•ˆ์ „ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์ดํด์ด ๋ฐœ๊ฒฌ๋˜๋ฉด, ํ• ๋‹น์€ ์‹œ์Šคํ…œ์„ ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋กœ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์Šค๋ ˆ๋“œ Ti๋Š” ์ž์‹ ์˜ ์š”์ฒญ์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋“œ์‹œ ๋Œ€๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์˜ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค.

๊ต์ฐฉ ์ƒํƒœ ํšŒํ”ผ๋ฅผ ์œ„ํ•œ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„

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

๋ถˆ์•ˆ์ „ ์ƒํƒœ์˜ ์ž์›ํ• ๋‹น ๊ทธ๋ž˜ํ”„

์‚ฌ์ดํด์€ ์‹œ์Šคํ…œ์ด ๋ถˆ์•ˆ์ „ํ•œ ์ƒํƒœ์— ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ T1์ด R2๋ฅผ ์š”์ฒญํ•˜๊ณ , T2๊ฐ€ R1์„ ์š”์ฒญํ•˜๋ฉด ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

(2) ๊ต์ฐฉ์ƒํƒœ ํšŒํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 2: ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜(Banker's Algorithm)

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ข…๋ฅ˜๋งˆ๋‹ค ์ž์›์ด ์—ฌ๋Ÿฌ ๊ฐœ์”ฉ ์žˆ๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ๊ธฐ์ˆ ํ•˜๋Š” ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ž์›์ด ์—ฌ๋Ÿฌ ๊ฐœ์”ฉ ์žˆ์„ ๋•Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•ž์˜ ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ณด๋‹ค ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํšจ์œจ์„ฑ์ด ๋‹ค์†Œ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์€ํ–‰์›(banker's)๋ผ๊ณ  ๋ถ™์—ฌ์ง„ ์ด์œ ๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์€ํ–‰์— ์ ์šฉํ•˜๋ฉด ๊ณ ๊ฐ๋“ค์ด ํ˜„๊ธˆ์„ ์ฐพ์œผ๋Ÿฌ ์™€๋„ ์ผ์ •ํ•œ ์ˆœ์„œ์— ์˜ํ•ด ๋ชจ๋“  ๊ณ ๊ฐ์˜ ์š”์ฒญ์„ ๋‹ค ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 ์ด ์‹œ์Šคํ…œ์—์„œ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•  ์ž์›์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ž์› ์ข…๋ฅ˜๋งˆ๋‹ค ๋ฏธ๋ฆฌ ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ์ˆซ์ž๊ฐ€ ์ž์›์˜ ์ด ๋ณด์œ  ์ˆ˜๋ฅผ ๋„˜์–ด์„œ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›๋“ค์„ ์š”์ฒญํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ๊ทธ๊ฒƒ์„ ๋“ค์–ด์ฃผ์—ˆ์„ ๋•Œ ์‹œ์Šคํ…œ์ด ๊ณ„์† ์•ˆ์ „ ์ƒํƒœ์— ๋จธ๋ฌด๋ฅด๊ฒŒ ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์† ์•ˆ์ „ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ทธ ์š”์ฒญ์„ ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ด ์Šค๋ ˆ๋“œ์˜ ์š”์ฒญ์€ ํ—ˆ๋ฝ์ด ์•ˆ ๋œ ์ฑ„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๋จผ์ € ์•„๋ž˜์˜ ์ž๋ฃŒ๋“ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. n์€ ์Šค๋ ˆ๋“œ์˜ ์ˆ˜์ด๊ณ  m์ด ์ž์›์˜ ์ˆ˜๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Available: ๊ฐ ์ข…๋ฅ˜๋ณ„๋กœ ๊ฐ€์šฉํ•œ ์ž์›์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฒกํ„ฐ, ํฌ๊ธฐ m
  • Max: ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์ตœ๋Œ€๋กœ ํ•„์š”๋กœ ํ•˜๋Š” ์ž์›์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ–‰๋ ฌ, n x m
  • Allocation: ๊ฐ ์Šค๋ ˆ๋“œ์— ํ˜„์žฌ ํ• ๋‹น๋œ ์ž์›์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ–‰๋ ฌ, n x m
  • Need: ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ–ฅํ›„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ–‰๋ ฌ, ํฌ๊ธฐ n x m

์œ„ ์ž๋ฃŒ๋“ค์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ์„œ ๊ทธ ๊ฐ’๊ณผ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ํ•œ๋ฒˆ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ์•„๋ด…์‹œ๋‹ค.

  • ํ˜„์žฌ ์‹œ์Šคํ…œ์—๋Š” ๋‹ค์„ฏ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค T0๋ถ€ํ„ฐ T4๊นŒ์ง€ ์žˆ๊ณ , A, B, C ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์ž์›์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์—๋Š” A ์ž์›์ด 10๊ฐœ, B์ž์›์ด 5๊ฐœ, C์ž์›์ด 7๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

Need(ํ•„์š”๋กœ ํ•˜๋Š” ์ˆ˜) ํ–‰๋ ฌ ๊ฐ’์€ (Max - Allocation)์œผ๋กœ ๋ถ€ํ„ฐ ์–ป์–ด์ง‘๋‹ˆ๋‹ค.(์ตœ๋Œ€ ํ•„์š”๋กœ ํ•˜๋Š” ์ˆ˜ - ํ˜„์žฌ ํ• ๋‹น๋œ ์ˆ˜)

์ด ์‹œ์Šคํ…œ์€ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด <T1, T3, T4, T2, T0> ์ˆœ์œผ๋กœ ์ž์›์„ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด ์•ˆ์ „์„ฑ ๊ธฐ์ค€์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ ์ˆœ์„œ(safe sequence)๋ฅผ ๊ฐ€์กŒ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” T1์ด A์ž์› ํ•œ ๊ฐœ์™€ C ์ž์› ๋‘ ๊ฐœ๋ฅผ ์ถ”๊ฐ€๋กœ ์š”์ฒญ, ์ฆ‰ Request = (1, 0, 2)๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ์ด ์š”์ฒญ์„ ์ฆ‰์‹œ ๋“ค์–ด์ค„ ๊ฒƒ์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € Request < Available์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ (1,0,2) <= (3, 3, 2)์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋ฏ€๋กœ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋งˆ์น˜ ์ด ์š”์ฒญ์„ ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

์ด์ œ ์ด ์ƒํƒœ๊ฐ€ ์•ˆ์ „ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. T0๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด ๊ฒฐ๊ตญ <T1, T3, T4, T0, T2>๋ผ๋Š” ์•ˆ์ „ ์ˆœ์„œ(safe sequence)๊ฐ€ ๋‚˜์˜ด์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ T1์˜ ์š”์ฒญ์„ ์ฆ‰์‹œ ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 ๋งŒ์•ฝ ์ด๋Ÿฌํ•œ ์ƒํƒœ์—์„œ T4๊ฐ€ (3, 3, 0)์„ ์š”์ฒญํ•˜๋ฉด ์ž์›์ด ๋ชจ์ž๋ผ๋ฏ€๋กœ ๋“ค์–ด์ค„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ T0๊ฐ€ (0, 2, 0)์„ ์š”์ฒญํ•œ๋‹ค๋ฉด ์ž์›์€ ์ถฉ๋ถ„ํžˆ ์žˆ์ง€๋งŒ ์ƒํƒœ๋ฅผ ๋ถˆ์•ˆ์ „ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋ฏ€๋กœ ์—ญ์‹œ ๊ทธ ์š”์ฒญ์„ ์ฆ‰์‹œ ๋“ค์–ด์ค„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.