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

๐Ÿ’ป/CS

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

Spinlock

: ์žก์œผ๋ ค๋Š” lock์ด avaliable ํ•ด ์งˆ ๋•Œ ๊นŒ์ง€ ๊ณ„์† ๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ์ง„์ž…์„ ์žฌ์‹œ๋„ํ•œ๋‹ค.

์ด๋ฅธ๋ฐ” ๋ฐ”์˜๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ๋Š” busy waiting์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค.

 

Busy waiting

: lock์„ ์žก๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ.


  • Sofrware-only Algorithm
    • Peterson's Algorithm
      • ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜์Œ์œผ๋กœ ๊ณ ์•ˆ๋œ ๋ฐฉ๋ฒ•
      • ์˜ค์ง ๋‘๊ฐœ์˜ context๋งŒ์ด ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•œ๋‹ค.
      • ์ „์—ญ๋ณ€์ˆ˜ flag, turn ์„ ์–ธ
        • flag: critical section์— ๋“ค์–ด๊ฐˆ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€, flag[0] = true;
        • turn: ๋ˆ„๊ฐ€ critical section์— ๋“ค์–ด๊ฐˆ ์ฐจ๋ก€์ธ์ง€
      • ๋ฌธ์ œ์  
        • ๋‘๊ฐœ์˜ context๋งŒ ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋งŒ ๊ฐ€๋Šฅ
        • atomicํ•˜์ง€ ์•Š์€ ์•„ํ‚คํ…์ณ์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ
  • Hardware Approaches
    • Disabling Interrupts
      • ์ธํ„ฐ๋ŸฝํŠธ ๋„๊ณ  ํ‚ค๋Š” ๊ฒƒ์€ instruction์œผ๋กœ ๋˜์–ด ์žˆ์Œ. -> priviliged instruction์ด๋ฏ€๋กœ ์ปค๋„ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•จ.
      • ์šด์˜์ฒด์ œ ํ˜ธ์ถœ
      • ๋ฌธ์ œ์ 
        • ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์Šค์—์„œ๋งŒ ๊ฐ€๋Šฅ
        • ๋ฉ€ํ‹ฐ ์ฝ”์–ด ํ™˜๊ฒฝ์—์„œ ์ ์šฉํ•˜๊ธฐ ํž˜๋“ฌ
        • ์šด์˜์ฒด์ œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ cost ๋น„์šฉ ์ฆ๊ฐ€
    • ํ•˜๋“œ์›จ์–ด์ ์ธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 2๊ฐ€์ง€
      • Test-And-Set
        • Atomic instruction์„ ์ œ๊ณต. ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ์ˆ˜ํ–‰.
        • ํ•œ๊ฐœ์˜ ์ธ์ŠคํŠธ๋Ÿญ์…˜์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฐ’ ์“ฐ๊ณ  ์˜›๋‚  ๊ฐ’ ๋ฆฌํ„ด๋˜๋Š” ๊ฒƒ์ด ํ•œ๋ฒˆ์— ์ผ์–ด๋‚จ.
        • ์™„์ „ํžˆ ๋™์‹œ์— ๋“ค์–ด์™€๋„ ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์—์„œ ๋จผ์ € ๋“ค์–ด์˜จ ๊ฒƒ์ด ๊ฒฐ์ •๋˜๊ณ  ๊ฑ”๋Š” ๋ฌด์กฐ๊ฑด lock์„ ์žก๋Š”๋‹ค.
        • ๊ฐ’์ด return๋˜๋Š” ๊ฒƒ์„ test ๊ฒฐ๊ณผ๋ผ๊ณ  ๋ด์„œ test and set์ธ ๊ฒƒ์ด๋‹ค.
          • ์˜›๋‚  ๊ฑฐ๋ฅผ test ํ•˜๋„๋ก ๊ฐ€์ ธ์˜ค๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ setํ•ด๋ผ.
      • Compare-And-Swap
        • Atomic instruction์„ ์ œ๊ณต. ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ์ˆ˜ํ–‰
        • condition์„ ์ค˜์„œ ์˜ˆ์ƒํ•˜๋Š” ๊ฐ’์ด๋ฉด ์ƒˆ๋กญ๊ฒŒ ๋ฐ”๊พธ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜›๋‚  ๊ฐ’ returnํ•ด๋ผ.