๐Ÿ”– etc

[์šด์˜์ฒด์ œ] ๋ฐ๋“œ๋ฝ(Deadlock)์ด๋ž€? ๊ต์ฐฉ์ƒํƒœ์— ๋Œ€ํ•˜์—ฌ

a n u e 2022. 2. 26. 10:07
๋ชฉ์ฐจ
 ๋ฐ๋“œ๋ฝ์ด๋ž€?
 ๋ฐ๋“œ๋ฝ์˜ ๋ฐœ์ƒ์กฐ๊ฑด
 ๋ฐ๋“œ๋ฝ์˜ ์ฒ˜๋ฆฌ

 

๋ฐ๋“œ๋ฝ(๊ต์ฐฉ์ƒํƒœ, Deadlock)์ด๋ž€?

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

 ์˜ˆ๋ฅผ ๋“ค์–ด, Processโ‘  ์ด ์–ด๋–ค ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ, ์ž์›์ธ Resource(1)์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ทผ๋ฐ ๊ทธ ์ž‘์—…์„ ์œ„ํ•ด์„œ๋Š” Resource (2)๋„ ํ•„์š”ํ•˜์—ฌ, Resource(2)๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ์‹œ๋„ํ•˜์˜€์œผ๋‚˜ ์ด๋ฏธ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค.

๋ฐ”๋กœ Processโ‘ก๋‹ค.  Processโ‘ก๋Š” ๋ณธ์ธ์˜ ์ž‘์—…์„ ์œ„ํ•ด Resource(2)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ทผ๋ฐ, Processโ‘ก๋Š” Resource(1)๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ด๋‹ค.

 ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ Processโ‘ ์ด Resource(2)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, Process(2)๊ฐ€ ์‚ฌ์šฉ์ค‘์ด๋ผ ๋Œ€๊ธฐํ•œ๋‹ค. Processโ‘ก๋Š” Resource(1)์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, Process(1)๊ฐ€ ์‚ฌ์šฉ์ค‘์ด๋ผ ๋Œ€๊ธฐํ•œ๋‹ค.

 ๋‘ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋กœ์˜ ์ž‘์—…์ด ๋๋‚˜๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

 


๋ฐ๋“œ๋ฝ์˜ ๋ฐœ์ƒ์กฐ๊ฑด

ํ•˜๋‹จ์˜ ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์„ฑ๋ฆฝํ•˜์—ฌ์•ผ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒ๋œ๋‹ค. ๋‹จ, ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋‹ค ์„ฑ๋ฆฝํ•œ๋‹ค๊ณ ํ•˜์—ฌ ๊ผญ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋‹จ์ง€ ํ•„์š”์กฐ๊ฑด์ด๋‹ค.

1. ์ƒํ˜ธ๋ฐฐ์ œ(Mutual Exclusion)

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

2. ์ ์œ ๋Œ€๊ธฐ(Hold and wait)

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

3. ๋น„์„ ์ (No preemption)

 ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์€ ์‚ฌ์šฉ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ๋บ์„ ์ˆ˜ ์—†๋‹ค. 

4. ์ˆœํ™˜๋Œ€๊ธฐ(Circular Wait)

 ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์—์„œ ์ˆœํ™˜ ํ˜•ํƒœ๋กœ ์ž์›์„ ๋Œ€๊ธฐํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋œ ์ž์›์„ ๊ฐ€์ง€๋ฉด์„œ๋„, ์ƒ๋Œ€๋ฐฉ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ์ƒํ˜ธ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ. ์„œ๋กœ ๋งž๋ฌผ๋ฆฌ๋Š” ์›ํ˜• ๊ตฌ์กฐ์˜ ํ˜•ํƒœ์ผ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์˜๋ฏธ!

 


๋ฐ๋“œ๋ฝ์˜ ์ฒ˜๋ฆฌ

1. ์˜ˆ๋ฐฉ

๋ฐ๋“œ๋ฝ ํ•„์š”์กฐ๊ฑด์„ ๋ถ€์ •. ์• ์ดˆ์— ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ. ๊ฐœ๋ฐœ์ž์˜ ์—ญ๋Ÿ‰์ด ์ค‘์š”ํ•˜๋‹ค.

์ƒํ˜ธ ๋ฐฐ์ œ ๋ถ€์ •/์ ์œ ๋Œ€๊ธฐ ๋ถ€์ •/๋น„์„ ์  ๋ถ€์ •/์ˆœํ™˜๋Œ€๊ธฐ ๋ถ€์ •

2. ํšŒํ”ผ

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

 

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

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ€์šฉ ์ž์›์ด ๊ธฐ๋Œ€ ์ž์›๋ณด๋‹ค ํฌ๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์•ˆ์ •์ ์ธ ์ƒํƒœ๋‹ค.

๊ฐ€์šฉ์ž์›์ด ๊ธฐ๋Œ€ ์ž์›๋ณด๋‹ค ํฌ์ง€ ์•Š๋‹ค๋ฉด, ํ• ๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ถˆ์•ˆ์ •ํ•œ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•ˆ์ •์  ์ƒํƒœ๋ฅผ ๊ทธ๋ฆฌ์ž๋ฉด ์ด๋ ‡๋‹ค.

 

์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•ˆ์ •์  ์ƒํƒœ

2๊ฐœ์˜ ๊ฐ€์šฉ ์ž์›์„ P2 ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹นํ•˜๋ฉด, P2์˜ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๋ฉด์„œ 6๊ฐœ์˜ ์ž์›์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

๋งŒ์•ฝ, ๊ฐ€์šฉ ์ž์›์ด 1๊ฐœ๋ผ๋ฉด P1, P2, P3 ์–ด๋А ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜์–ด๋„ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋“œ๋ฝ์ด ํ•ด์†Œ๋˜์ง€ ์•Š๋Š”๋‹ค.

3. ํƒ์ง€

 ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํƒ์ง€ํ•˜๊ณ , ํƒ์ง€๋˜์—ˆ๋‹ค๋ฉด ๊ต์ฐฉ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•œ๋‹ค. ์›์ธ์„ ๊ทœ๋ช…ํ•˜์—ฌ ํ•ด๊ฒฐํ•œ๋‹ค. ์ด ๋˜ํ•œ, ์ง€์†์  ํ™•์ธ ์ž‘์—…์ด ๋“ค์–ด๊ฐ€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์— ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋ณต๊ตฌ ๋ฐฉ๋ฒ•์—๋Š” ๋ฐ๋“œ๋ฝ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ/๋ฐ๋“œ๋ฝ ํ”„๋กœ์„ธ์Šค์˜ ์ž์› ์„ ์  ๋“ฑ์ด ์žˆ๋‹ค.

4. ๋ฌด์‹œ

 ๋ฌด์‹œํ•œ๋‹ค. ๋ฐ๋“œ๋ฝ์˜ ๋ฐœ์ƒ ํ™•๋ฅ ์ด ๋น„๊ต์  ๋‚ฎ์€ ๊ฒฝ์šฐ์—๋Š” ๋ณ„ ๋‹ค๋ฅธ ์กฐ์น˜๋ฅผ ์ทจํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•ด๊ฒฐ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ธํ•œ ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋ฐฉ์น˜ํ•  ๋•Œ๋ณด๋‹ค ๋” ํด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 


 

 

References

[์šด์˜์ฒด์ œ] ๋ฐ๋“œ๋ฝ(Deadlock, ๊ต์ฐฉ ์ƒํƒœ)์ด๋ž€?