๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป/CS

[์šด์˜์ฒด์ œ] Synchronization - 1

ํ•˜๋‚˜์˜ address space์— ์„œ๋กœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค์ด ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

Race Condition

  • ๋‘ ๊ฐœ ์ด์ƒ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๊ฐ€ shared resource์— ๋™์‹œ์— concurrentํ•˜๊ฒŒ ์ ‘๊ทผํ•จ์œผ๋กœ์จ ๊ฒฐ๊ณผ ๊ฐ’์ด ํ™•์ • ๋˜์ง€๊ฐ€ ์•Š๊ณ , ๊ทธ๋•Œ ๊ทธ๋•Œ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋ฐ”๋€Œ๋Š” ํ˜„์ƒ
  • ๋‘ ๊ฐœ ์ด์ƒ์˜ concurrent ํ•œ ํ”„๋กœ์„ธ์Šค, ์Šค๋ ˆ๋“œ๋“ค์ด ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ ํ•  ๋•Œ ๋™๊ธฐํ™” ํ•ด๊ฒฐ ๊ณผ์ •์—†์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ƒํ™ฉ

race condition์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ• → synchronization

 

Critical Section

  • ์ฝ”๋“œ์—์„œ ๋‘๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๊ฐ„.
  • ๊ฐ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋ถ€๋ถ„.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค/์Šค๋ ˆ๋“œ๋“ค์ด ๊ณต์œ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ ์˜์—ญ

critical section์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์ ธ์•ผ ํ•˜๋Š” 3๊ฐ€์ง€

  • Mutual exclusion
    • critical section์— ์˜ค์ง ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ.
    • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰ ์ค‘์ธ ์ƒํƒœ์—์„œ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ˆ๋Œ€ ์ˆ˜ํ–‰ ์ค‘์ธ critical section์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ.
  • Progress
    • lock์— ๋Œ€ํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์š”์ฒญํ–ˆ์„ ๋•Œ, lock์„ ์žก๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์•„๋ฌด๋„ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์š”์ฒญํ•œ ์—ฌ๋Ÿฌ ๊ฐœ ์ค‘์— ํ•˜๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ lock์„ ์žก์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ. critical section์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.
  • Bounded waiting
    • lock์„ ์žก์œผ๋ ค๊ณ  ํ•˜๋Š”๋ฐ ํ•œ๋ช…์ด ๊ณ„์† lock์„ ๋ชป ์žก๋Š” ์ƒํ™ฉ ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ๋จ. starvaiton ํ˜„์ƒ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•จ.
    • critical section์— ๋“ค์–ด๊ฐ€๊ณ ์ž ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์–ธ์  ๊ฐ€๋Š” ๊ผญ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ.