League Of Legends - Link Select [๋ฉ€ํ‹ฐ์ฝ”์–ดCPU] 09. ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ & ํ•˜์ด์   ๋ฒ„๊ทธ
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค“ Study/์ปดํ“จํ„ฐ ๊ตฌ์กฐ

[๋ฉ€ํ‹ฐ์ฝ”์–ดCPU] 09. ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ & ํ•˜์ด์   ๋ฒ„๊ทธ

by GAMEMING 2024. 4. 11.
728x90

 

 

- ์›์ž์  ์—ฐ์‚ฐ (atomic operation)

 : ์›์ž ์—ฐ์‚ฐ → ๋” ์ด์ƒ ๋‚˜๋ˆ ์ง€์ง€ ์•Š๋Š” ์—ฐ์‚ฐ

 : DataRace ๋ฌธ์ œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ → ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ  ์ž์›์„ ๋†“๊ณ  ์„œ๋กœ ๊ฒฝ์ œ์ ์œผ๋กœ ๊ฐ’์„ ์ฝ๊ณ  ์จ์„œ ๋ฐœ์ƒํ•จ

 : ์›์ž ์—ฐ์‚ฐ์ด ๋˜๋„๋ก ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•จ

 

๋ฎคํ…์Šค(mutex)
์„ธ๋งˆํฌ์–ด(semaphore)
 ์–ด๋–ค ์ฝ”๋“œ ์˜์—ญ์ด๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๋ฐฐํƒ€์  ์ ‘๊ทผ (์ƒํ˜ธ๋ฐฐ์ œ)์„ ๋ณด์žฅํ•˜๋Š” ๊ฐ์ฒด
 Critical section ๋˜๋Š” lock์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
 ์„ธ๋งˆํฌ์–ด๋Š” ์ตœ๋Œ€ n๋ช…์ด ๊ณต์œ  ์ž์›์„ ๋™์‹œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๊ฐ์ฒด๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๋ช…๋งŒ ๊ณต์œ  ์ž์›์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•จ
์กฐ๊ฑด ๋ณ€์ˆ˜(conditional variable)
์ด๋ฒคํŠธ(event)
 ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์–ด๋–ค ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๊ฑฐ๋‚˜ ์‹ ํ˜ธ๊ฐ€ ์˜ฌ ๋•Œ๊นŒ์ง€ ์ž ์ž๋„๋ก ํ•จ. ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ด ๋ณ€์ˆ˜ ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด ์ž ์ž๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๊นจ์šธ ์ˆ˜ ์žˆ์Œ
๋ฐฐ๋ฆฌ์–ด(barrier)   ์ฐธ์—ฌ ์ค‘์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ๋ฐฐ๋ฆฌ์–ด๋ฅผ ๋ถ€๋ฅธ ์ง€์ ์— ๋„๋‹ฌํ•ด์•ผ๋งŒ ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ
 ํ•˜๋‚˜๋ผ๋„ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋Œ€๊ธฐ ์ƒํƒœ
์Šค๋ ˆ๋“œ ํฌํฌ(fork)
์กฐ์ธ(join)
 ํฌํฌ : ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ๋‚˜๋ˆ„์–ด ์ง„๋‹ค
 ์กฐ์ธ : ๋‚˜๋ˆ„์–ด์ง„ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋จ
 ๋ฐฐ๋ฆฌ์–ด์™€ ์œ ์‚ฌํ•œ ๋ฉด์ด ์žˆ์œผ๋‚˜ ์Šค๋ ˆ๋“œ ์กฐ์ธ ํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ๋ฐ›์€ ์Šค๋ ˆ๋“œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ชจ๋‘ ์†Œ๋ฉธ๋˜๊ฑฐ๋‚˜ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ ์†Œ๋ฉธ๋˜์–ด์•ผ ๋ฐ˜ํ™˜๋จ

 

 

 

- ์ง๋ ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณ‘๋ ฌํ™”ํ•˜๋ ค๋ฉด

 1) ์ ํ•ฉํ•œ ๋ณ‘๋ ฌํ™” ๋Œ€์ƒ ์ฐพ๊ธฐ 

  → ๊ฐ€์žฅ ๋งŽ์€ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ํ•จ์ˆ˜๋‚˜ ๋ฃจํ”„

 2) ๊ทธ ๋Œ€์ƒ์˜ ๋ณ‘๋ ฌํ™” ๊ฐ€๋Šฅํ•œ์ง€ ์ฝ”๋“œ ๋ถ„์„ํ•˜๊ธฐ - ๋ฐ์ดํ„ฐ ์˜์กด์„ฑ ๋ถ„์„ / ์ถฉ๋ถ„ํ•œ ๋ณ‘ํ–‰์„ฑ ์žˆ๋Š”์ง€

  → ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ‘๋ ฌํ™”๊ฐ€ ๋˜๋Š”๊ฐ€, ๋™๊ธฐํ™” ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ€ 

  → ๋ฐ์ดํ„ฐ ์˜์กด์„ฑ ๊ฒ€์‚ฌ / ๋ฃจํ”„์ผ ๊ฒฝ์šฐ ๋ฃจํ”„ ์ „์ด ์˜์กด์„ฑ ์กฐ์‚ฌ ํ•„์š”

  (์•„๋ฌด๋Ÿฐ ๋…ธ๋ ฅํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ๋ณ‘๋ ฌํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฃจํ”„์ผ ๋•Œ embarrassingly parallel์ด๋ผ ํ•จ

 3) ์ฝ”๋“œ ๋ณ‘๋ ฌํ™” ํ•˜๊ธฐ - ์ ‘๊ทผ ๋˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ๊ฐ€/๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ๊ฐ€ & ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ณ‘๋ ฌ์„ฑ์„ ์ฐพ์•„ ์–ด๋–ป๊ฒŒ ๋ณ‘๋ ฌํ™”? & ๋ณ‘๋ ฌํ™”๋œ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‹ค์ œ๋กœ ๋ฉ€ํ‹ฐ์ฝ”์–ด์— ํ• ๋‹น?

  → ์ƒ์œ„ ๋ฃจํ”„๋ฅผ ๋ณ‘๋ ฌํ™”ํ•ด ์Šค๋ ˆ๋“œ ํฌํฌ/์กฐ์ธ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”

 4) ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€ ๊ฒ€์ฆ

 5) ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํŠœ๋‹

 

 

 

- ํ•˜์ด์   ๋ฒ„๊ทธ

 : ๋ฒ„๊ทธ๋ฅผ ์žก์œผ๋ ค๋ฉด ๊ฐ€์žฅ ๋จผ์ € ๋ฐœ๊ฒฌํ•œ ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•ด์•ผ ํ•จ

 : ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋ฒ„๊ทธ๋Š” printf๋ฅผ ๋„ฃ์–ด์„œ ๋ฒ„๊ทธ๋ฅผ ํ™•์ธํ•˜๋ ค ํ•˜๋ฉด ์ด ์ž์ฒด๊ฐ€ ์˜ํ–ฅ์„ ์ฃผ์–ด ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›€

 

 

 1) ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค (DataRace)

 : ์–ด๋–ค ๊ณต์œ  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‘ ์Šค๋ ˆ๋“œ ์ด์ƒ์—๊ฒŒ์„œ ๋™์‹œ์— ์ ‘๊ทผ๋˜๋Š” ์ƒํ™ฉ + ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์ ‘๊ทผ์ด ์“ฐ๊ธฐ์ผ ๊ฒฝ์šฐ

 : ์ด๋กœ ์ธํ•œ ๋ฒ„๊ทธ๋Š” ์žฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค

 2) ์›์ž์„ฑ ์œ„๋ฐ˜, ์ˆœ์„œ ์œ„๋ฐ˜ : ๊ทผ๋ณธ์  ์›์ธ์€ ๋ฉ”๋ชจ๋ฆฌ ์˜ค์—ผ์ž„ 

 3) ๋ฐ๋“œ๋ฝ ๋ฒ„๊ทธ