--- id: wiki-2026-0508-program-dependence-graph title: Program Dependence Graph category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Program Dependence Graph]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) Program Dependence Graph(ν”„λ‘œκ·Έλž¨ μ˜μ‘΄μ„± κ·Έλž˜ν”„, PDG)λŠ” μ½”λ“œ λ‚΄μ˜ 데이터 및 μ œμ–΄ μ˜μ‘΄μ„±(data and control dependencies)을 λͺ…μ‹œμ μœΌλ‘œ ν‘œν˜„ν•˜λŠ” λͺ¨λΈμž…λ‹ˆλ‹€ [1]. μ΄λŠ” ν‘œν˜„μ‹μ΄λ‚˜ λ©”μ„œλ“œμ™€ 같은 두 μ½”λ“œ 쑰각 κ°„μ˜ λ°©ν–₯μ„± μžˆλŠ” 관계λ₯Ό λ‚˜νƒ€λ‚΄λ©°, λ¦¬νŒ©ν† λ§ λŒ€μƒμ΄ λ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ 잠재적 문제λ₯Ό νƒμ§€ν•˜κΈ° μœ„ν•œ 정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static program analysis) 등에 ν™œμš©λ©λ‹ˆλ‹€ [1, 2]. κ°œλ³„ PDGλ“€ κ°„μ˜ ν”„λ‘œμ‹œμ € ν˜ΈμΆœμ„ μ—°κ²°ν•˜λ©΄ μ‹œμŠ€ν…œ μ „μ²΄μ˜ μ˜μ‘΄μ„±μ„ λ‚˜νƒ€λ‚΄λŠ” μ‹œμŠ€ν…œ μ˜μ‘΄μ„± κ·Έλž˜ν”„(System Dependence Graph)둜 ν™•μž₯ν•˜μ—¬ 뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€ [1]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μ˜μ‘΄μ„±μ˜ μ •μ˜μ™€ μ’…λ₯˜:** μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ μ˜μ‘΄μ„±μ΄λž€ μ½”λ“œμ˜ 두 λΆ€λΆ„ μ‚¬μ΄μ˜ λ°©ν–₯μ„± μžˆλŠ” 관계λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [2]. μ—¬κΈ°μ—λŠ” κ°’μ˜ μ •μ˜μ™€ μ‚¬μš© μ‚¬μ΄μ—μ„œ λ°œμƒν•˜λŠ” '데이터 μ˜μ‘΄μ„±(data dependencies)'κ³Ό ν•¨μˆ˜μ˜ 선언뢀와 μ‹€μ œ ν˜ΈμΆœλ˜λŠ” μœ„μΉ˜ μ‚¬μ΄μ˜ '호좜 μ˜μ‘΄μ„±(call dependencies)' 등이 ν¬ν•¨λ©λ‹ˆλ‹€ [2]. * **정적 뢄석 λ„κ΅¬λ‘œμ„œμ˜ μ—­ν• :** PDGλŠ” μœ νš¨ν•˜μ§€λ§Œ ν‘œμ€€ μ΄ν•˜(substandard)인 ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰적 문제λ₯Ό νƒμ§€ν•˜κΈ° μœ„ν•œ 정적 뢄석 κΈ°λ²•μ˜ 핡심적인 ν‘œν˜„ λ„κ΅¬λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€ [1]. * **μ‹œμŠ€ν…œ μ˜μ‘΄μ„± κ·Έλž˜ν”„(System Dependence Graph)둜의 ν™•μž₯:** PDGλ“€ μ‚¬μ΄μ˜ ν”„λ‘œμ‹œμ € 호좜 관계λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‹œμŠ€ν…œ μ˜μ‘΄μ„± κ·Έλž˜ν”„κ°€ μ‚¬μš©λ©λ‹ˆλ‹€ [1]. λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈ(Microsoft)의 MaX와 같은 μžλ™ν™” λ„κ΅¬λŠ” ν•¨μˆ˜ μˆ˜μ€€(호좜, μž„ν¬νŠΈ, 읡슀포트 λ“±)μ—μ„œ μ΄λŸ¬ν•œ μ˜μ‘΄μ„± 정보λ₯Ό μΆ”μ ν•˜μ—¬ μ‹œμŠ€ν…œ μ „λ°˜μ˜ μ˜μ‘΄μ„± κ·Έλž˜ν”„λ₯Ό μƒμ„±ν•˜λ©°, 이λ₯Ό λ³€κ²½ 영ν–₯ 뢄석(change impact analysis) 및 톡합 ν…ŒμŠ€νŠΈμ— ν™œμš©ν•©λ‹ˆλ‹€ [2]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. --- *Last updated: 2026-05-03* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ”— 지식 μ—°κ²° (Graph) - **Parent:** [[10_Wiki/Topics]] - **Related:** *(TODO: μ΅œμ†Œ 2개)* - **Opposite / Trade-off:** *(TODO)* - **Raw Source:** 직접 μž…λ ₯ ## πŸ•“ λ³€κ²½ 이λ ₯ (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: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*