--- id: [[P-Reinforce|P-Reinforce]]-AUTO-52B523 category: Unified confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Cheneys Algorithm" --- # [[Cheneys Algorithm|Cheneys Algorithm]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Cheney's Algorithm์€ V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๋งˆ์ด๋„ˆ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์ธ ์Šค์บ๋นˆ์ €([[Scavenge|Scavenge]]r)์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค [1, 2]. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฉ”๋ชจ๋ฆฌ์˜ '์ƒˆ๋กœ์šด ๊ณต๊ฐ„(New-space)'์„ ๋™์ผํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ 'from-space'์™€ 'to-space'๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋ฐ˜๊ณต๊ฐ„(Semi-space)์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋งŒ์„ from-space์—์„œ to-space๋กœ ๋ณต์‚ฌํ•˜๊ณ  ์••์ถ•(compact)ํ•จ์œผ๋กœ์จ, ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์บ์‹œ ์ง€์—ญ์„ฑ ํ–ฅ์ƒ์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [1]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๋ฐ˜๊ณต๊ฐ„(Semi-space) ๊ตฌ์กฐ ๋ฐ ์—ญํ•  ๊ตํ™˜**: ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ• ๋‹น ๊ณต๊ฐ„์ด ๊ฐ€๋“ ์ฐฐ ๋•Œ to-space์™€ from-space์˜ ์—ญํ• ์„ ๋งž๋ฐ”๊พธ๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค [1]. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๊ธฐ์กด ๊ฐ์ฒด๋Š” from-space์— ์œ„์น˜ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ดํ›„ ์‹œ์Šคํ…œ์€ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋งŒ์„ ์ฐพ์•„๋‚ด์–ด to-space๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ '์˜ค๋ž˜๋œ ๊ณต๊ฐ„(old-space)'์œผ๋กœ ์Šน๊ฒฉ(promote)์‹œํ‚ต๋‹ˆ๋‹ค [1]. - **ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)**: ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‚ด๋ถ€์ ์œผ๋กœ to-space๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค [3]. - `allocationPtr`: ๋‹ค์Œ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ์œ„์น˜์˜ ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค [3]. - `scanPtr`: ์‚ด์•„์žˆ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์Šค์บ”ํ•  ๋‹ค์Œ ๊ฐ์ฒด์˜ ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค [3]. - ์ด ๋‘ ํฌ์ธํ„ฐ๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS) ๋Œ€๊ธฐ์—ด(Queue)์˜ ๋งจ ์•ž๊ณผ ๋งจ ๋’ค์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [3]. - **๊ฐ์ฒด ์Šค์บ” ๋ฐ ๋ณต์‚ฌ ๊ณผ์ •**: 1. ๋ฃจํŠธ(roots)์—์„œ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์˜ ๊ฐ์ฒด๋“ค์„ ๋ณต์‚ฌํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค [4]. 2. `scanPtr`๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ๋Œ€๊ธฐ์—ด์—์„œ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด๊ณ , ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ํฌ์ธํ„ฐ๋“ค์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค [4]. 3. ๋ฐœ๊ฒฌํ•œ ํฌ์ธํ„ฐ๊ฐ€ ์•„์ง ๋ณต์‚ฌ๋˜์ง€ ์•Š์€ from-space์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋ฉด, `allocationPtr`๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ to-space์˜ ๋์œผ๋กœ ๋ณต์‚ฌํ•˜๊ณ  ๊ธฐ์กด ๊ฐ์ฒด์˜ ์ฒซ ๋ฒˆ์งธ ์›Œ๋“œ(word)์— ์ƒˆ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ „๋‹ฌ ์ฃผ์†Œ(forwarding address)๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค [4]. 4. ๋งŒ์•ฝ ํฌ์ธํ„ฐ๊ฐ€ ์ด๋ฏธ ๋ณต์‚ฌ๋œ from-space์˜ ๊ฐ์ฒด(์ „๋‹ฌ ์ฃผ์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด)๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋ฉด, ํ•ด๋‹น ํฌ์ธํ„ฐ๊ฐ€ to-space์˜ ์ƒˆ๋กœ์šด ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค [4]. - **์ข…๋ฃŒ ์กฐ๊ฑด ๋ฐ ๊ฐ€๋น„์ง€ ์ฒ˜๋ฆฌ**: `scanPtr`๊ฐ€ `allocationPtr`์— ๋„๋‹ฌํ•˜์—ฌ ๋” ์ด์ƒ ์ฒ˜๋ฆฌํ•  ๊ฐ์ฒด๊ฐ€ ๋‚จ์ง€ ์•Š๊ฒŒ ๋˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค [5]. ์ด ์‹œ์ ์— from-space์— ๋‚จ์•„์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€๋น„์ง€(์“ฐ๋ ˆ๊ธฐ)๋กœ ๊ฐ„์ฃผ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [5]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** Scavenge (Minor GC), Semi-space Design, [[Garbage Collection|Garbage Collection]] - **Projects/Contexts:** [[V8 JavaScript Engine|V8 JavaScript Engine]] - **Contradictions/Notes:** ๊ณผ๊ฑฐ์˜ V8 ๋ฒ„์ „๋“ค์€ ๋™๊ธฐ์‹(synchronous) ๊ตฌ์กฐ์˜ ๊ธฐ๋ณธ Cheney's algorithm์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, V8 v6.2 ์ดํ›„๋ถ€ํ„ฐ๋Š” ๋‹ค์ค‘ ์ฝ”์–ด ํ™˜๊ฒฝ์˜ ์ด์ ์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด Halstead semispace copying collector์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์˜ ๋ณ‘๋ ฌ ์Šค์บ๋นˆ์ €(Parallel Scavenger) ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐœ์ „ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [6]. --- *Last updated: 2026-04-19* ---