--- id: P-REINFORCE-AUTO-30E929 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์“ฐ๊ธฐ ์žฅ๋ฒฝ(Write Barrier)" --- # [[แ„Šแ…ณแ„€แ…ต แ„Œแ…กแ†ผแ„‡แ…งแ†จ(Write Barrier)|์“ฐ๊ธฐ ์žฅ๋ฒฝ(Write Barrier)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์“ฐ๊ธฐ ์žฅ๋ฒฝ(Write Barrier)์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC) ํ™˜๊ฒฝ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ์ž‘์—… ์งํ›„์— ์‹คํ–‰๋˜์–ด ํŠน์ •ํ•œ ํฌ์ธํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ  ๊ธฐ๋กํ•˜๋Š” ์งง์€ ์ฝ”๋“œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค [1, 2]. ์ฃผ๋กœ ๊ตฌ์„ธ๋Œ€(Old-space) ๊ฐ์ฒด๊ฐ€ ์‹ ์„ธ๋Œ€(New-space) ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜, ์ด๋ฏธ ์Šค์บ”์„ ๋งˆ์นœ ๊ฐ์ฒด๊ฐ€ ์Šค์บ”๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ฐธ์กฐํ•  ๋•Œ ์ด๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [1, 3]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํž™ ์ „์ฒด๋ฅผ ๋ฌด์˜๋ฏธํ•˜๊ฒŒ ๋‹ค์‹œ ์Šค์บ”ํ•˜๋Š” ๋น„์šฉ์„ ์ค„์ด๊ณ , ์Šค์บ๋นˆ์ง€(Scavenge) ๋ฐ ์ ์ง„์ /๋™์‹œ์„ฑ ๋งˆํ‚น ๊ณผ์ •์„ ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค [3-5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์„ธ๋Œ€๋ณ„ ์ˆ˜์ง‘(Generational GC)์—์„œ์˜ ํฌ์ธํ„ฐ ์ถ”์ :** ๋งˆ์ด๋„ˆ GC(์Šค์บ๋นˆ์ง€)๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‹ ์„ธ๋Œ€์— ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ์—ฌ์ „ํžˆ ์‚ด์•„์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ธ๋Œ€ ์ „์ฒด์˜ ํฌ์ธํ„ฐ๋ฅผ ์Šค์บ”ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋งŽ์€ ๋น„์šฉ์„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค [4]. ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ณ ์ž ์“ฐ๊ธฐ ์žฅ๋ฒฝ์€ ๊ตฌ์„ธ๋Œ€ ๊ฐ์ฒด์˜ ํ•„๋“œ์— ์‹ ์„ธ๋Œ€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์ž‘์„ฑ๋  ๋•Œ ํ•ด๋‹น ์œ„์น˜๋ฅผ '์ €์žฅ ๋ฒ„ํผ(Store Buffer)'์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค [1, 6]. ์ด๋ ‡๊ฒŒ ํ™•๋ณด๋œ ๊ตฌ์„ธ๋Œ€-์‹ ์„ธ๋Œ€ ์ฐธ์กฐ ๋ชฉ๋ก(old-to-new references)์„ ํ†ตํ•ด ์Šค์บ๋นˆ์ง€๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 5]. * **์ ์ง„์  ๋ฐ ๋™์‹œ์„ฑ ๋งˆํ‚น(Incremental/Concurrent Marking)์—์„œ์˜ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ๋™๊ธฐํ™”:** ์ ์ง„์  ๋งˆํ‚น์ด๋‚˜ ๋™์‹œ์„ฑ ๋งˆํ‚น์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ์—๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ณ„์† ์‹คํ–‰๋˜๋ฏ€๋กœ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๊ฐ€ ์–ธ์ œ๋“  ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 7, 8]. ์“ฐ๊ธฐ ์žฅ๋ฒฝ์€ ์ด๋ฏธ ์™„์ „ํžˆ ์Šค์บ”๋œ ๊ฐ์ฒด(Black)๊ฐ€ ์Šค์บ”๋˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ ๊ฐ์ฒด(White)๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋Š” 'Black-to-White' ํฌ์ธํ„ฐ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค [3]. ์ด๋Ÿฌํ•œ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ์“ฐ๊ธฐ ์žฅ๋ฒฝ์€ ํ•ด๋‹น Black ๊ฐ์ฒด๋ฅผ ๋‹ค์‹œ Grey ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋งˆํ‚น ๋ฐํฌ(Marking Deque)๋กœ ๋˜๋Œ๋ ค ๋ณด๋‚ด, ์ˆœ์„œ๋ฅผ ๋ณด์กดํ•˜๊ณ  White ๊ฐ์ฒด๊ฐ€ ์ž˜๋ชปํ•˜์—ฌ ๊ฐ€๋น„์ง€๋กœ ๋ถ„๋ฅ˜๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค [2, 3]. * **์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ์™€ ์ตœ์ ํ™” ์ „๋žต:** ํฌ์ธํ„ฐ๋ฅผ ์“ธ ๋•Œ๋งˆ๋‹ค ์“ฐ๊ธฐ ์žฅ๋ฒฝ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€์ ์ธ CPU ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋Š” ๊ด€๋ฆฌํ˜• ๋ฉ”๋ชจ๋ฆฌ(Managed Memory)์˜ ํŽธ๋ฆฌํ•จ์„ ์–ป๋Š” ๋Œ€๊ฐ€ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค [1, 9]. ๊ทธ๋Ÿฌ๋‚˜ ์“ฐ๊ธฐ ์ž‘์—…์€ ์ฝ๊ธฐ ์ž‘์—…๋ณด๋‹ค ํ›จ์”ฌ ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ํ•˜๋“œ์›จ์–ด ์ง€์›์ด ํ•„์š”ํ•œ ์ฝ๊ธฐ ์žฅ๋ฒฝ(Read Barrier)์— ๋น„ํ•ด ๋น„์šฉ์ด ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค [1]. V8 ์—”์ง„์€ ์ปดํŒŒ์ผ๋Ÿฌ(Crankshaft) ๋ถ„์„์„ ํ†ตํ•ด ์‹ ์„ธ๋Œ€์— ์†ํ•˜๊ฑฐ๋‚˜ ์Šคํƒ์— ํ• ๋‹น๋œ ๊ฐ์ฒด์ž„์ด ์ •์ ์œผ๋กœ ์ฆ๋ช…๋˜๋ฉด ์“ฐ๊ธฐ ์žฅ๋ฒฝ ์ฝ”๋“œ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค [10]. ๋˜ํ•œ, ํŽ˜์ด์ง€ ํ—ค๋”์˜ ๊ณต๊ฐ„ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ new-to-new ๋˜๋Š” old-to-old ํฌ์ธํ„ฐ๋ฅผ ๋ช‡ ๊ฐœ์˜ ๋ช…๋ น์–ด๋งŒ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฌด์‹œํ•˜๊ณ , ์ €์žฅ ๋ฒ„ํผ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ •๋ ฌ ๋ฐ ์ค‘๋ณต ์ œ๊ฑฐํ•˜์—ฌ ์„ฑ๋Šฅ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค [10]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Garbage Collection|Garbage Collection]], Generational Collection, [[Incremental Marking|Incremental Marking]], Concurrent Marking, Store Buffer - **Projects/Contexts:** [[V8 JavaScript Engine|V8 JavaScript Engine]], IBM OpenJ9 GC - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด ์“ฐ๊ธฐ ์žฅ๋ฒฝ์€ ๊ฐ์ฒด ๊ฐฑ์‹ ๋งˆ๋‹ค ์ถ”๊ฐ€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ถˆ๊ฐ€ํ”ผํ•œ CPU ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์œ ๋ฐœํ•˜์ง€๋งŒ [9], ์ด๋Š” ๋ฌด๊ฑฐ์šด ์ฝ๊ธฐ ์žฅ๋ฒฝ(Read Barrier)์„ ํ”ผํ•˜๊ณ  ํšจ์œจ์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ด๊ณ  ํ•ฉ๋ฆฌ์ ์ธ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„์ž…๋‹ˆ๋‹ค [1]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/์“ฐ๊ธฐ ์žฅ๋ฒฝ(Write Barrier).md ---