# [OS] ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์Ÿ์ƒํƒœ์™€ ํ•ด๊ฒฐ์ฑ…์— ๋Œ€ํ•ด
Study Repository

[OS] ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์Ÿ์ƒํƒœ์™€ ํ•ด๊ฒฐ์ฑ…์— ๋Œ€ํ•ด

by rlaehddnd0422

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์Ÿ์ƒํƒœ

 

์‹œ์Šคํ…œ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•จ๊ป˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž์›์„ ๊ณต์œ  ์ž์›(Shared Resource)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ, ๋ฐ์ดํ„ฐ ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณต์œ  ์ž์›์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๋ฉด, ์‹คํ–‰ ์ˆœ์„œ๋‚˜ ํƒ€์ด๋ฐ์— ๋”ฐ๋ผ ๊ฒฐ๊ด๊ฐ’์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ๊ฒฝ์Ÿ์ƒํƒœ(Race Condition)์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

 

 

์ž„๊ณ„ ์˜์—ญ

 

์ถ”๊ฐ€๋กœ ์ด ๊ณต์œ ์ž์›์— ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋ถ€๋ถ„์„ ์ž„๊ณ„ ์˜์—ญ(Critical Area)์ด๋ผ๊ณ  ํ•จ.

 

์ฆ‰, ๊ณต์œ ์ž์›์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋ฃŒ์˜ ์ผ๊ด€์„ฑ์„ ํ•ด์น˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž์›์ธ ์ „์—ญ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

๊ฒฝ์Ÿ์ƒํƒœ ๋ฐœ์ƒ X / ๊ฒฝ์Ÿ์ƒํƒœ ๋ฐœ์ƒ O

์Šค๋ ˆ๋“œ 1์ด ์‹คํ–‰๋˜๊ณ  ์ปค๋ฐ‹๋œ ์ดํ›„์—, ์Šค๋ ˆ๋“œ 2๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ์Ÿ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™์ด ์Šค๋ ˆ๋“œ 1์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ์Šค๋ ˆ๋“œ 2๊ฐ€ ๋ผ์–ด๋“ค์–ด ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ์Ÿ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์˜๋„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ฒ˜๋Ÿผ ํ”„๋กœ์„ธ์Šค๋‚˜ ์Šค๋ ˆ๋“œ์˜ ๋™์ž‘์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฒฝ์Ÿ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. 

๊ฒฝ์Ÿ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด, ์˜ˆ์ƒ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์˜ ๋ฌธ์ œ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜ ๋ฌธ์ œ(๋™์‹œ ๋‹ค๋ฐœ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ๊ณ„์ขŒ์—์„œ ์ถœ๊ธˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ 0์›์—์„œ๋„ ๋ˆ์„ ์ถœ๊ธˆํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜์˜ ์กฐ๊ฑด๋“ค์„ ๋งŒ์กฑ์‹œ์ผœ ๊ฒฝ์Ÿ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 1. ์ƒํ˜ธ ๋ฐฐ์ œ ( Mutual Exclusion ) : ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ์˜์—ญ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • 2. ํ•œ์ • ๋Œ€๊ธฐ ( Bounded Waiting ) : ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„ ์˜์—ญ ์ง„์ž…์„ ์š”์ฒญํ•œ ํ›„ ํ•ด๋‹น ์š”์ฒญ์ด ์Šน์ธ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„์˜์—ญ์— ์ง„์ž…ํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒƒ.
    • ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜์›ํžˆ ์ž„๊ณ„ ์˜์—ญ์— ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€.
  • 3. ์ง„ํ–‰์˜ ์œตํ†ต์„ฑ ( Progress ) : ์ง€๊ธˆ ๋‹น์žฅ ์–ด๋– ํ•œ ํ”„๋กœ์„ธ์Šค๋„ ์ž„๊ณ„์˜์—ญ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ž„๊ณ„ ์˜์—ญ ์™ธ๋ถ€์˜ ์–ด๋– ํ•œ ํ”„๋กœ์„ธ์Šค๋„ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๋•Œ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ์„œ๋กœ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ.

 

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

 

Race Condition Solution 1. ๋ฎคํ…์Šค(Mutex)

๋ฎคํ…์Šค

  • ๊ณต์œ  ์ž์›์„ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ ์ „ lock()์„ ํ†ตํ•ด ์ž ๊ธˆ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•œ ํ›„์— unlock()์„ ํ†ตํ•ด ์ž ๊ธˆ์„ ํ’€์–ด, ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ์ž์›์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.
  • Windows, Linux ๋“ฑ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋™๊ธฐํ™” ๋„๊ตฌ.
    • ์ด ๋•Œ ๋ฝ์„ ๊ฑธ์€ ์“ฐ๋ ˆ๋“œ๋งŒ์ด ์ž„๊ณ„ ๊ตฌ์—ญ์„ ๋‚˜๊ฐˆ ๋•Œ ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ์ž„๊ณ„์˜์—ญ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž„๊ณ„์˜์—ญ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ ์ „๋žต.
  • ๋ฎคํ…์Šค ์ ‘๊ทผ ํ•จ์ˆ˜ : wait() - ๋ฎคํ…์Šค ์ง„์ž… ์š”์ฒญ,  unlock() - ๋ฎคํ…์Šค ์ง„์ถœ ์š”์ฒญ

 

Race Condition Solution 2. ์„ธ๋งˆํฌ์–ด (Semaphore)

์„ธ๋งˆํฌ์–ด

  • ์ผ๋ฐ˜ํ™”๋œ ๋ฎคํ…์Šค๋กœ, ์ •์ˆ˜ S์™€ wait(), signal()๋กœ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ „๋žต์ž…๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋™๊ธฐํ™” ๋„๊ตฌ 
    • S๋Š” ํ˜„์žฌ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ณต์œ  ์ž์› ์ˆ˜๋ฅผ ์˜๋ฏธ. 
      • S๋ฅผ 1๋กœ ์„ค์ •ํ•œ๋‹ค๋ฉด ๋ฎคํ…์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, (์ „๋žต์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—) ๋ฎคํ…์Šค๋Š” ์•„๋‹˜. - ์ด๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด๋ผ๊ณ  ํ•จ.
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ธ๋งˆํฌ์–ด์— ์ง„์ž…ํ•˜๊ธฐ ์œ„ํ•ด wait()์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด, S๋ฅผ 1 ๊ฐ์†Œ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๋•Œ S๊ฐ€ ์Œ์ˆ˜๊ฐ€ ๋œ๋‹ค๋ฉด ๊ณต์œ ์ž์›์„ ์“ธ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค์˜ ์ง„์ž…์„ ์ฐจ๋‹จํ•˜๊ณ  ๋Œ€๊ธฐ์—ด์— ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง‘์–ด๋„ฃ์Šต๋‹ˆ๋‹ค. 
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ธ๋งˆํฌ์–ด ์ง„์ž…์— ์„ฑ๊ณตํ•˜์—ฌ ๊ณต์œ ์ž์›์„ ๋‹ค ์“ฐ๊ณ  ๋งˆ์น˜๋ฉด, signal() ํ˜ธ์ถœํ•˜์—ฌ S๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์„ธ๋งˆํฌ์–ด์—์„œ ๋‚˜์˜ค๊ฒŒ ํ•จ์œผ๋กœ์จ ๋Œ€๊ธฐ์—ด์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฎคํ…์Šค์™€ ๋‹ฌ๋ฆฌ ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ ํ˜น์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํŠน์ง•.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํŠน์ • ์ž์›์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ๊ฒฝ์Ÿ ์ƒํ™ฉ์„ ์ค„์ด๊ณ , ์ž์›์˜ ์‚ฌ์šฉ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐจ์ด์  ๋ฎคํ…์Šค ์„ธ๋งˆํฌ์–ด
์ „๋žต Locking ์ „๋žต : ๋ฝ์„ ๊ฑด ์“ฐ๋ ˆ๋“œ๋งŒ์ด ์ž„๊ณ„์˜์—ญ์—์„œ ๋‚˜๊ฐˆ ๋•Œ unlock์œผ๋กœ ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค. Signaling ์ „๋žต : ๋ฝ์„ ๊ฑธ์ง€ ์•Š์€ ์“ฐ๋ ˆ๋“œ๋„ signal์„ ์‚ฌ์šฉํ•ด ๋ฝ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Œ.
๊ณต์œ  ์ž์› ์ ‘๊ทผ ๊ฐ€๋Šฅ
ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜ 
์˜ค์ง 1๊ฐœ ์„ธ๋งˆํฌ์–ด ๋ณ€์ˆ˜ S ์ˆ˜๋งŒํผ.

 

 

์„ธ๋งˆํฌ์–ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด, ์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด๋กœ ๋‚˜๋‰จ.

 

๋ฐ”์ด๋„ˆ๋ฆฌ ์„ธ๋งˆํฌ์–ด

S์— 0๊ณผ 1 ๋‘ ๊ฐœ์˜ ๊ฐ’๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์„ธ๋งˆํฌ์–ด๋กœ ๋ฎคํ…์Šค๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ๋ฎคํ…์Šค๋Š” ๋ฝ ์ „๋žต, ์„ธ๋งˆํฌ์–ด๋Š” ์‹œ๊ทธ๋„๋ง ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฎคํ…์Šค๋กœ ๋ณผ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค.

 

์นด์šดํŒ… ์„ธ๋งˆํฌ์–ด

์œ„์—์„œ ๋งํ•œ ์ผ๋ฐ˜์ ์ธ ์„ธ๋งˆํฌ์–ด๋กœ S์— 2์ด์ƒ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์„ธ๋งˆํฌ์–ด.

 

Race Condition Solution 3. ๋ชจ๋‹ˆํ„ฐ (Monitor)

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

 

๊ณผ์ •

  1. ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‹ˆํ„ฐ์— ์ง„์ž…ํ•˜๋ ค๊ณ  ํ•จ.
  2. ์ด ๋•Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ด๋ฏธ ๋ฝ์„ ํš๋“ํ•œ ์ƒํƒœ๋ผ๋ฉด ํ˜„์žฌ ์Šค๋ ˆ๋“œ๋Š” ๋Œ€๊ธฐํ•˜๋Š”๋ฐ ๋Œ€๊ธฐ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋Š” ๋ชจ๋‹ˆํ„ฐ ๋‚ด๋ถ€์˜ Waiting Queue์— ์ €์žฅ. ๋งŒ์•ฝ ๋ชจ๋‹ˆํ„ฐ ๋‚ด์˜ ์กฐ๊ฑด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑ๋  ๋•Œ ๊นŒ์ง€ ์Šค๋ ˆ๋“œ๋ฅผ ๋Œ€๊ธฐ์‹œํ‚ค๊ณ ์ž ํ•œ๋‹ค๋ฉด, ์ด ๊ฒฝ์šฐ์—๋Š” Waiting Queue๊ฐ€ ์•„๋‹Œ Condition Waiting Queue์—์„œ ๋Œ€๊ธฐ.
  3. Queue์— ๋“ค์–ด๊ฐ„ ์Šค๋ ˆ๋“œ๋“ค์€ ์šฐ์„  ์ž‘์—…์„ ์ผ์‹œ ์ค‘์ง€ ์‹œํ‚ค๊ณ  ์Šค๋ ˆ๋“œ ๋ชฉ๋ก์„ ์œ ์ง€.
  4. ์Šค๋ ˆ๋“œ๊ฐ€ ์ผ์‹œ ์ค‘์ง€๋œ ์ƒํƒœ์—์„œ ํ•ด๋‹น ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด, ๋ชจ๋‹ˆํ„ฐ๋Š” ๋Œ€๊ธฐ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๊นจ์šฐ๊ณ  ๋‹ค์‹œ ์‹คํ–‰๋˜๋„๋ก ํ•˜์—ฌ ๋ชจ๋‹ˆํ„ฐ๋กœ ์ง„์ž…์‹œํ‚ด.
  5. ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๋น ์ ธ๋‚˜๊ฐˆ ๋•Œ ๋ฝ์„ ๋ฐ˜๋‚ฉํ•˜์—ฌ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์ด ๋ชจ๋‹ˆํ„ฐ์— ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ฎคํ…์Šค์™€์˜ ์ฐจ์ด
    • ๋ชจ๋‹ˆํ„ฐ๋Š” ๋ชจ๋‹ˆํ„ฐํ์— ์ž‘์—…์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์Œ“์•„๋‘๊ณ , ํ•œ๋ฒˆ์— ํ•œ ํ”„๋กœ์„ธ์Šค/์“ฐ๋ ˆ๋“œ๋งŒ ์ž„๊ณ„ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜์—ฌ ๊ฐœ๋…์ ์œผ๋กœ๋Š” ์ด์ง„ ์„ธ๋งˆํฌ์–ด, ๋ฎคํ…์Šค ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๋ฎคํ…์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„์— ์˜ํ•ด ์ œ๊ณต๋˜๋ฏ€๋กœ ๋ฌด๊ฒ๊ณ  ๋Š๋ฆฌ์ง€๋งŒ, ๋ชจ๋‹ˆํ„ฐ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋™๊ธฐํ™”์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

  • ์„ธ๋งˆํฌ์–ด์™€์˜ ์ฐจ์ด
    • ์„ธ๋งˆํฌ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž„๊ณ„ ๊ตฌ์—ญ์— ๋ช…์‹œ์ ์œผ๋กœ ์ƒํ˜ธ ๋ฐฐ์ œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋ชจ๋‹ˆํ„ฐ๋Š” ์ด ์ƒํ˜ธ ๋ฐฐ์ œ ๋กœ์ง์„ ์ถ”์ƒํ™”ํ•˜๊ณ , ๊ณต์œ  ์ž์› ์ ‘๊ทผ์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์„ ์ œ๊ณตํ•˜๊ณ  ๊ณต์œ  ์ž์›๋„ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์บก์Šํ™”ํ•˜์—ฌ ์ˆจ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, ์„ธ๋งˆํฌ์–ด์— ๋น„ํ•ด ์ข€ ๋” ๊ณ ์ˆ˜์ค€์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
    • ์„ธ๋งˆํฌ์–ด๋Š” ์ •์ˆ˜ ๊ฐ’๊ณผ ๋‘ ๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ ( wait(), signal() )๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋™๊ธฐํ™” ๊ธฐ๋ณธ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ˜๋ฉด, ๋ชจ๋‹ˆํ„ฐ๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ๋™๊ธฐํ™” ์ถ”์ƒํ™”๋กœ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•œ๋‹ค๋Š” ์ .

 

์ด๋ ‡๊ฒŒ ๊ฒฝ์Ÿ์ƒํƒœ์™€ ๊ฒฝ์Ÿ ์ƒํƒœ ํ•ด๊ฒฐ ์กฐ๊ฑด ์„ธ ๊ฐ€์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ๊ฐ€ ๊ฐ€์ง„ ์ž์›์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ์ค‘๋‹จ๋˜๋Š” ๊ต์ฐฉ์ƒํƒœ์™€ ์ด ํ•ด๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค !

 

 

<์ฐธ๊ณ  ์ž๋ฃŒ>

 

 

[OS] Process ๋™๊ธฐํ™”(์„ธ๋งˆํฌ์–ด,๋ฎคํ…์Šค,๋ชจ๋‹ˆํ„ฐ)

๋™๊ธฐํ™”๋ž€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋‚˜ ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ ๊ณต์œ  ์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ  ์ž„๊ณ„ ๊ตฌ์—ญ์ด๋ž€? ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜

peonyf.tistory.com

 

 

๊ฒฝ์Ÿ์ƒํƒœ, ์ž„๊ณ„์˜์—ญ์˜ ๊ฐœ๋…๊ณผ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ƒํ˜ธ๋ฐฐ์ œ ๊ธฐ๋ฒ• (mutex, semaphore, monitor)

๊ฒฝ์Ÿ ์ƒํƒœ (race condition) ๊ฒฝ์Ÿ ์ƒํƒœ๋ž€ ๋‘˜ ์ด์ƒ์˜ ์ž…๋ ฅ, ์กฐ์ž‘์˜ ํƒ€์ด๋ฐ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ฒฝ์Ÿ ์ƒํƒœ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋น„๊ฒฐ์ •์ (nondeterministic)์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์šฐ

hudi.blog

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ