--- id: wiki-2026-0508-stop-the-world title: Stop the world category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-D2D9B2] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Stop-the-world" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Stop-the-world|Stop-the-world]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 'Stop-the-world'(STW)λŠ” κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(GC)이 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ λ©”λͺ¨λ¦¬λ₯Ό μ •λ¦¬ν•˜κΈ° μœ„ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 싀행이 μΌμ‹œμ μœΌλ‘œ μ™„μ „νžˆ μ€‘λ‹¨λ˜λŠ” ν˜„μƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€ [1, 2]. κ°€λΉ„μ§€ 컬렉터가 νž™(Heap) λ©”λͺ¨λ¦¬μ— λŒ€ν•œ 배타적 μ ‘κ·Ό κΆŒν•œμ„ μ–»μ–΄μ•Ό ν•˜λ―€λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μŠ€λ ˆλ“œκ°€ λ©ˆμΆ”κ²Œ λ©λ‹ˆλ‹€ [1, 3]. 이둜 인해 λ°œμƒν•˜λŠ” μ§€μ—°(Latency)κ³Ό ν™”λ©΄ λŠκΉ€(Jank)을 쀄이기 μœ„ν•΄ ν˜„λŒ€μ˜ GC μ•Œκ³ λ¦¬μ¦˜λ“€μ€ STW μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜κ±°λ‚˜ νšŒν”Όν•˜λŠ” 병렬 및 λ™μ‹œ 처리 λ°©μ‹μœΌλ‘œ λ°œμ „ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [2, 4, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **원인 및 λ©”μ»€λ‹ˆμ¦˜** κ°€λΉ„μ§€ 컬렉터가 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 객체λ₯Ό μ •λ¦¬ν•˜κ³  λ©”λͺ¨λ¦¬λ₯Ό μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” νž™ μ˜μ—­μ— λ°°νƒ€μ μœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν•˜λ©°, 이 κ³Όμ •μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 처리 μž‘μ—…μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ μ •μ§€(halt)ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1]. V8 μ—”μ§„μ˜ 경우, μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행을 λ©ˆμΆ”κ³  메인 μŠ€λ ˆλ“œμ—μ„œ 순차적으둜 GC μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 κ°€μž₯ 직관적인 STW λ°©μ‹μž…λ‹ˆλ‹€ [2, 6]. * **μ„±λŠ₯에 λ―ΈμΉ˜λŠ” 영ν–₯** STW 쀑단 μ‹œκ°„μ΄ κΈΈμ–΄μ§€λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯ μ €ν•˜λ₯Ό μ΄ˆλž˜ν•©λ‹ˆλ‹€. 특히 메인 μŠ€λ ˆλ“œμ— μ§€μ—°κ³Ό ν™”λ©΄ λŠκΉ€(Jank) ν˜„μƒμ„ μœ λ°œν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ„ λ–¨μ–΄λœ¨λ¦¬κ³  전체 ν”„λ‘œκ·Έλž¨μ˜ μ²˜λ¦¬λŸ‰(Throughput)을 κ°μ†Œμ‹œν‚΅λ‹ˆλ‹€ [2]. GC λ‘œκ·Έμ—μ„œ κΈ΄ 'Duration' 값은 κΈ΄ STW 쀑단을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€ [7]. V8μ—μ„œ 병렬(Parallel) 기법을 μ‚¬μš©ν•˜λ”λΌλ„ μ΄λŠ” 본질적으둜 'stop-the-world' 방식이며 μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행이 λ©ˆμΆ”κ²Œ λ˜μ§€λ§Œ, 총 쀑단 μ‹œκ°„μ„ μŠ€λ ˆλ“œ 수둜 λ‚˜λˆ„μ–΄ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [8]. * **μ£Όμš” λ°œμƒ μ‹œμ ** * μŠ€μœ„ν”„(Sweep) μž‘μ—…μ΄λ‚˜ 마크(Mark) 단계가 배타적 μ ‘κ·Ό κΆŒν•œμ„ κ°€μ§€κ³  싀행될 λ•Œ STW 쀑단이 λ°œμƒν•©λ‹ˆλ‹€ [3, 9]. * IBM JVM의 'gencon' μ •μ±…μ—μ„œλŠ” 'nursery' μ˜μ—­μ„ μ •λ¦¬ν•˜λŠ” μŠ€μΊλΉˆμ§€([[Scavenge|Scavenge]]) μž‘μ—…μ΄λ‚˜ κΈ€λ‘œλ²Œ μ‚¬μ΄ν΄μ˜ 초기 및 μ΅œμ’… 마크 단계가 짧은 STW 쀑단 λ™μ•ˆ μ‹€ν–‰λ©λ‹ˆλ‹€ [10]. * λ™μ‹œ 마크(Concurrent mark) μž‘μ—…μ„ μ‚¬μš©ν•˜λ”λΌλ„ λ©”λͺ¨λ¦¬κ°€ κ³ κ°ˆλ˜μ–΄ μŠ€μœ„ν”„ μž‘μ—…μ΄ μ‹œμž‘λ  λ•Œλ‚˜, 루트 객체λ₯Ό λ‹€μ‹œ μŠ€μΊ”ν•  λ•ŒλŠ” STW 쀑단이 ν•„μš”ν•©λ‹ˆλ‹€ [9]. * **STW μ™„ν™” 및 νšŒν”Ό 기법** * **점진적 및 λ™μ‹œ 처리:** 점진적 λ™μ‹œ 마크(Incremental concurrent mark [[Processing|Processing]]) μ²˜λ¦¬λŠ” κΈ€λ‘œλ²Œ STW κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ„ ν”Όν•¨μœΌλ‘œμ¨ 쀑단 μ‹œκ°„μ„ κ³ λ₯΄κ²Œ λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€ [4]. * **[[Orinoco|Orinoco]] κ°€λΉ„μ§€ 컬렉터:** V8 μ—”μ§„μ˜ μ΅œμ‹  κ°€λΉ„μ§€ 컬렉터인 OrinocoλŠ” 기쑴의 'stop-the-world' νœ΄μ‹ λͺ¨λΈμ—μ„œ λ²—μ–΄λ‚˜, 메인 μŠ€λ ˆλ“œμ˜ λΆ€ν•˜λ₯Ό 쀄이기 μœ„ν•΄ 병렬(Parallel), 점진적(Incremental), λ™μ‹œ(Concurrent) μŠ€μœ„ν•‘ 및 λ§ˆν‚Ή κΈ°μˆ μ„ λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [5, 11]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Garbage Collection|Garbage Collection]], Heap memory, Orinoco, [[Mark-Sweep|Mark-Sweep]] - **Projects/Contexts:** [[V8 JavaScript Engine|V8 JavaScript Engine]], IBM Java Virtual Machine (VM) - **Contradictions/Notes:** 제곡된 μ†ŒμŠ€λ“€ μ‚¬μ΄μ—μ„œ λ‚΄μš© μƒμ˜ λͺ¨μˆœμ€ μ—†μœΌλ©°, V8 μ—”μ§„κ³Ό IBM JVM ν™˜κ²½ λͺ¨λ‘μ—μ„œ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜ 쀑 λ°œμƒν•˜λŠ” 'Stop-the-world'의 κΈ°λ³Έ κ°œλ…κ³Ό 이λ₯Ό μ΅œμ ν™”(병렬, λ™μ‹œ, 점진적 처리)ν•˜μ—¬ μΌμ‹œ μ •μ§€ μ‹œκ°„μ„ μ€„μ΄λ €λŠ” κ³΅ν†΅λœ λ°œμ „ λ°©ν–₯을 λ³΄μ—¬μ€λ‹ˆλ‹€ [3-5, 8]. --- *Last updated: 2026-04-19* --- ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*