[CS] ๋ฐ๋“œ๋ฝ

 

โ˜‘๏ธ ๋ฐ๋“œ๋ฝ์˜ ๋ฐœ์ƒ์กฐ๊ฑด

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

 

โ˜‘๏ธ ๋ฐ๋“œ๋ฝ์˜ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๐Ÿ“Œ ๋ฐ๋“œ๋ฝ ์˜ˆ๋ฐฉ(Prevention)

: ๋ฐ๋“œ๋ฝ์˜ ๋ฐœ์ƒ์กฐ๊ฑด 4๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ (๊ฐ๊ฐ์˜ ์กฐ๊ฑด์„ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ฐœ์ƒ๊ฐ€๋Šฅ์„ฑ ์ฐจ๋‹จ)

  • ์ž์›์˜ ์ƒํ˜ธ ๋ฐฐ์ œ ์กฐ๊ฑด ๋ฐฉ์ง€ : ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
    • but, ์ถ”ํ›„ ๋™๊ธฐํ™” ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ์ ์œ  ๋Œ€๊ธฐ ์กฐ๊ฑด ๋ฐฉ์ง€ : ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›์„ ํ•œ๊บผ๋ฒˆ์— ์š”๊ตฌํ•˜๊ณ  ํ—ˆ์šฉํ•  ๋•Œ๊นŒ์ง€ ์ž‘์—…์„ ๋ณด๋ฅ˜ํ•ด์„œ, ๋‚˜์ค‘์— ๋˜ ๋‹ค๋ฅธ ์ž์›์„ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€๊ธฐ ์กฐ๊ฑด์„ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋„๋ก ํ•จ
  • ๋น„์„ ์  ์กฐ๊ฑด ๋ฐฉ์ง€ : ์ด๋ฏธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ํ• ๋‹น๋œ ์ž์›์ด ์„ ์ ๊ถŒ์ด ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ๋†’์€ ์šฐ์„  ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด๋‹น ์ž์›์„ ์„ ์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • ์ˆœํ™˜ ๋Œ€๊ธฐ ์กฐ๊ฑด ๋ฐฉ์ง€ : ์ž์›์„ ์ˆœํ™˜ ํ˜•ํƒœ๋กœ ๋Œ€๊ธฐํ•˜์ง€ ์•Š๋„๋ก ์ผ์ •ํ•œ ํ•œ ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ž์›์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

๐Ÿ‘‰๐Ÿป ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์„ ๋ฐฉ์ง€ํ•ด์„œ ๋ฐ๋“œ๋ฝ์„ ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‹œ์Šคํ…œ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์ด๋‚˜ ํšจ์œจ์„ฑ์„ ๋–จ์–ดํŠธ๋ฆฌ๋Š” ๋‹จ์ ์ด ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์Œ

 

๐Ÿ“Œ ๋ฐ๋“œ๋ฝ ํšŒํ”ผ(Avoidance)

  • ์•ˆ์ • ์ƒํƒœ(Safe State) : ์‹œ์Šคํ…œ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์š”์ฒญํ•˜๋Š” ๋ชจ๋“  ์ž์›์„, ๋ฐ๋“œ๋ฝ์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ๋„ ์ฐจ๋ก€๋กœ ๋ชจ๋‘์—๊ฒŒ ํ• ๋‹นํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ
  • ์•ˆ์ „ ์ˆœ์„œ(Safe Sequence) : ํŠน์ •ํ•œ ์ˆœ์„œ๋กœ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ์ž์›์„ ํ• ๋‹น, ์‹คํ–‰ ๋ฐ ์ข…๋ฃŒ ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ๋•Œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ˆœ์„œ
  • ๋ถˆ์•ˆ์ • ์ƒํƒœ๋Š” ์•ˆ์ •์ƒํƒœ๊ฐ€ ์•„๋‹Œ ์ƒํ™ฉ์„ ๋งํ•จ → ๋ฐ๋“œ๋ฝ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ƒํ™ฉ
    • ๊ต์ฐฉ ์ƒํƒœ(๋ฐ๋“œ๋ฝ)๋Š” ๋ถˆ์•ˆ์ • ์ƒํƒœ์ผ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    • ์ฆ‰, ๋ถˆ์•ˆ์ • ์ƒํƒœ๊ฐ€ ๊ต์ฐฉ ์ƒํƒœ๋ณด๋‹ค ์ข€ ๋” ํฐ ์ง‘ํ•ฉ
  • ํšŒํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ž์›์„ ํ• ๋‹นํ•œ ํ›„์—๋„ ์‹œ์Šคํ…œ์ด ํ•ญ์ƒ Safe state์— ์žˆ์„ ์ˆ˜ ์žˆ๋„๋ก ํ• ๋‹น์„ ํ—ˆ์šฉํ•˜์ž๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ํŠน์ง• → ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๐Ÿ”‘ **์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜**(Banker’s Algorithm) ์–ด๋–ค ์ž์›์˜ ํ• ๋‹น์„ ํ—ˆ์šฉํ•˜๋Š”์ง€์— ๊ด€ํ•œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์ „์—, ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋œ ๋ชจ๋“  ์ž์›๋“ค์˜ ์ตœ๋Œ€ ๊ฐ€๋Šฅํ•œ ํ• ๋‹น๋Ÿ‰์„ ๊ฐ€์ง€๊ณ  ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ Safe state์— ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•จ. (์ฆ‰, ๋Œ€๊ธฐ์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํ™œ๋™์— ๋Œ€ํ•œ ๊ต์ฐฉ ์ƒํƒœ ๊ฐ€๋Šฅ์„ฑ์„ ๋ฏธ๋ฆฌ ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ)→ ๋ฏธ๋ฆฌ ์ตœ๋Œ€ ์ž์› ์š”๊ตฌ๋Ÿ‰์„ ์•Œ์•„์•ผ ํ•˜๊ณ , ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ž์› ์ˆ˜๊ฐ€ ์ผ์ •ํ•ด์•ผํ•˜๋Š” ๋“ฑ ์‚ฌ์šฉ์— ์žˆ์–ด ์ œ์•ฝ์กฐ๊ฑด์ด ๋งŽ๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ์ž์› ์ด์šฉ๋„ ํ•˜๋ฝ ๋“ฑ ๋‹จ์ ๋„ ์กด์žฌ

๐Ÿ“Œ ๋ฐ๋“œ๋ฝ ํƒ์ง€(Detection) ๋ฐ ํšŒ๋ณต(Recovery)

  • ์‹œ์Šคํ…œ์ด ๋ฐ๋“œ๋ฝ ์˜ˆ๋ฐฉ์ด๋‚˜ ํšŒํ”ผ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
    → ์ด ๋ฐ๋“œ๋ฝ์„ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ๋“œ๋ฝ์„ ํƒ์ง€ํ•˜๊ณ , ํšŒ๋ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ
  • ํƒ์ง€ ๊ธฐ๋ฒ•
    • Allocation, Request, Available ๋“ฑ์œผ๋กœ ์‹œ์Šคํ…œ์— ๋ฐ๋“œ๋ฝ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํƒ์ƒ‰
      → ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ์ž์› ํ• ๋‹น ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ํŒŒ์•…
    • ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ํƒ์ง€
  • ํšŒ๋ณต ๊ธฐ๋ฒ• : ์ˆœํ™˜ ๋Œ€๊ธฐ์—์„œ ๋ฒ—์–ด๋‚˜ ๋ฐ๋“œ๋ฝ์œผ๋กœ๋ถ€ํ„ฐ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ
    • ๋‹จ์ˆœํžˆ ํ”„๋กœ์„ธ์Šค๋ฅผ 1๊ฐœ ์ด์ƒ ์ค‘๋‹จ
      • ๊ต์ฐฉ ์ƒํƒœ์— ๋น ์ง„ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• : ๊ณ„์† ์—ฐ์‚ฐ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค๋“ค๋„ ๋ชจ๋‘ ์ผ์‹œ์— ์ค‘๋‹จ๋˜์–ด ๋ถ€๋ถ„ ๊ฒฐ๊ณผ๊ฐ€ ํ๊ธฐ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
      • ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ์ค‘๋‹จ์‹œํ‚ฌ ๋•Œ๋งˆ๋‹ค ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ๋“œ๋ฝ์„ ํƒ์ง€ํ•˜๋ฉด์„œ ํšŒ๋ณต์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• : ๋งค๋ฒˆ ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ˜ธ์ถœ ๋ฐ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ถ€๋‹ด์ด ์ฃ„๋Š” ์ž‘์—…์ผ ์ˆ˜ ์žˆ์Œ
    • ์ž์› ์„ ์ ํ•˜๊ธฐ
      • ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์„ ์„ ์ ํ•ด์„œ ๊ต์ฐฉ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ๊นŒ์ง€ ๊ทธ ์ž์›์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•

'CS > OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[CS] ์„ธ๋งˆํฌ์–ด(Semaphore) & ๋ฎคํ…์Šค(Mutex)  (0) 2024.02.25
[CS] ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)  (0) 2024.02.25
[CS] CPU ์Šค์ผ€์ค„๋ง  (0) 2024.02.06
[CS] IPC(Inter Process Communication)  (0) 2024.02.06
[CS] PCB & Context Switching  (0) 2024.02.01