Skip to content

Latest commit

ย 

History

History
61 lines (37 loc) ยท 5.19 KB

04_Synchronization.md

File metadata and controls

61 lines (37 loc) ยท 5.19 KB

๋™๊ธฐํ™”

Race Condition ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

  • Race Condition์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์— ์–ด๋–ค ์ˆœ์„œ๋กœ ์ ‘๊ทผํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ์ƒํ™ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ž„๊ณ„๊ตฌ์—ญ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ณ  ์ž„๊ณ„๊ตฌ์—ญ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ํ•„์ˆ˜ ์š”๊ตฌ์กฐ๊ฑด์„ ๋งํ•ด๋ณด์„ธ์š”.

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

์ž„๊ณ„๊ตฌ์—ญ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด์ ์ธ ๋ฐฉ๋ฒ•์„ ๋งํ•ด๋ณด์„ธ์š”.

  • Test & Set ๊ณผ Compare-and-Swap ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ์ž„๊ณ„๊ตฌ์—ญ ์ง„์ž…์„ ์œ„ํ•œ ์›์ž์ ์ธ ์—ฐ์‚ฐ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ๋ฐฐ์ œ์™€ ์ง„ํ–‰ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ๋ฒˆ ์ž„๊ณ„๊ตฌ์—ญ์— ์ง„์ž…ํ–ˆ๋˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค์‹œ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ์žฌ์ง„์ž…ํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ์ • ๋Œ€๊ธฐ ์š”๊ตฌ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋งˆํฌ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋งํ•ด๋ณด์„ธ์š”.

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

์„ธ๋งˆํฌ์–ด์˜ ๋‹จ์ ์ด ๋ฌด์—‡์ธ์ง€ ๋งํ•ด๋ณด์„ธ์š”.

  • ์„ธ๋งˆํฌ์–ด๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์ž„๊ณ„๊ตฌ์—ญ์— ์ž๋ฆฌ๊ฐ€ ์ƒ๊ธธ ๋•Œ๊นŒ์ง€ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๋Š” ์Šคํ•€๋ฝ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ CPU Time ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋ฎคํ…์Šค๋Š” ๋ญ”๊ฐ€์š”?

  • ๋ฎคํ…์Šค๋Š” lock ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ๋ฎคํ…์Šค ๋ฝ์„ ํš๋“ํ•˜๊ณ  ์ž„๊ณ„๊ตฌ์—ญ์— ์ง„์ž…ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๋ฎคํ…์Šค๋ž‘ ์„ธ๋งˆํฌ์–ด๋ž‘ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”?

  • ๋ฎคํ…์Šค๋Š” ๋ฝ์„ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ๋งŒ์ด ๋ฝ์„ ๋ฐฉ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด์— ์„ธ๋งˆํฌ์–ด๋Š” signal ํ•จ์ˆ˜์— ์˜ํ•ด ๋ฝ์„ ํš๋“ํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์Šค๋ ˆ๋“œ๋„ ์„ธ๋งˆํฌ์–ด์˜ ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์ž„๊ณ„๊ตฌ์—ญ์œผ๋กœ ์ง„์ž…์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Deadlock ์— ๋ฌด์—‡์ธ๊ฐ€์š”?

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

Deadlock ์˜ ๋ฐœ์ƒ์กฐ๊ฑด์€?

  • ๋„ค ๊ฐ€์ง€ ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    1. ์ƒํ˜ธ ๋ฐฐ์ œ : ํ•œ ์Šค๋ ˆ๋“œ๋งŒ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ์ ์œ  ๋Œ€๊ธฐ : ์ด๋ฏธ ํ•˜๋‚˜์˜ ์ž์›์„ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ํ• ๋‹น๋œ ์ž์›์„ ์ ์œ ํ•˜๋ ค๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    3. ๋น„์„ ์  : ํ•œ ์Šค๋ ˆ๋“œ์— ํ• ๋‹น๋œ ์ž์›์€ ์Šค์Šค๋กœ ๋ฐฉ์ถœํ•  ๋•Œ๊นŒ์ง€ ์„ ์ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    4. ์ˆœํ™˜๋Œ€๊ธฐ : ์ž์›์„ ์ ์œ ํ•˜๋ ค๋Š” ์Šค๋ ˆ๋“œ๋“ค์ด ์ˆœํ™˜ํ˜•ํƒœ๋กœ ์ž์› ์ ์œ ๋ฅผ ์œ„ํ—ค ๋Œ€๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Deadlock ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ด๋ณด์„ธ์š”.

  • ๋„ค ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    1. ์˜ˆ๋ฐฉ : ๊ต์ฐฉ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋„ค ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋งŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
    2. ํšŒํ”ผ : ์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„๋‚˜ ์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    3. ํšŒ๋ณต : ๋ฐœ์ƒํ•œ ๊ต์ฐฉ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
    4. ๋ฌด์‹œ : ๊ต์ฐฉ์ƒํƒœ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

์ž์› ํ• ๋‹น ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

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

์€ํ–‰์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

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