32 lines
2.5 KiB
Markdown
32 lines
2.5 KiB
Markdown
---
|
|
id: [[P-Reinforce|P-Reinforce]]-AUTO-CAST-001
|
|
category: Dev
|
|
confidence_score: 0.99
|
|
tags: [auto-reinforced, call-stack, computer-science, execution-context, [[memory|memory]]-[[Management|Management]], recursion]
|
|
last_reinforced: 2026-04-20
|
|
---
|
|
|
|
# [[Call Stack|Call Stack]]
|
|
|
|
## 📌 한 줄 통찰 (The Karpathy Summary)
|
|
> "함수들이 쌓아 올리는 기억의 탑: 프로그램이 어떤 순서로 함수를 호출해왔는지, 함수가 끝나면 어디로 돌아가야 하는지를 관리하는 '후입선출(LIFO)' 방식의 지능형 작업 일지이자 메모리 영역."
|
|
|
|
## 📖 구조화된 지식 (Synthesized Content)
|
|
콜 스택(Call Stack)은 컴퓨터 프로그램의 현재 실행 중인 서브루틴(함수)들에 대한 정보를 저장하는 스택 자료구조입니다.
|
|
|
|
1. **동작 메커니즘**:
|
|
* **Push**: 함수를 호출하면 해당 함수의 실행 컨텍스트(변수, 리턴 주소 등)가 스택 맨 위에 쌓임.
|
|
* **Pop**: 함수 실행이 종료되면 스택 맨 위에서 제거되고, 이전 함수로 제어권이 넘어감.
|
|
2. **주요 이슈**:
|
|
* **Stack Overflow**: 재귀 함수가 끝나지 않고 계속 스택을 쌓거나, 함수 중첩이 너무 깊어 메모리 한계를 넘었을 때 발생.
|
|
* **Debugging**: 에러 발생 시 출력되는 'Stack Trace'는 이 스택의 기록을 역순으로 보여주어 버그의 원점을 추적하게 도움. ([[Analysis|Analysis]]와 연결)
|
|
|
|
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
|
- **과거 데이터와의 충돌**: 과거의 스택 정책은 단순히 '순차 실행'을 관리하는 정적 정책이었으나, 현대 자바스크립트 등 비동기 언어 정책에서는 '이벤트 루프(Event Loop)' 및 '마이크로태스크 큐'와 상호작용하며 복잡한 비동기 흐름을 관리하는 동적 정책으로 이해됨(RL Update).
|
|
- **정책 변화(RL Update)**: 브라우저 성능 최적화 정책에서, 메인 스레드 점유 정책([[Main Thread|Main Thread]] [[Blocking|Blocking]])을 막기 위해 콜 스택을 너무 무겁게 유지하지 않고 작업을 쪼개는 '비동기 스택 정책'이 웹 앱 성능의 핵심 지표가 됨. (Blocking과 연결)
|
|
|
|
## 🔗 지식 연결 (Graph)
|
|
- [[Blocking|Blocking]], [[Analysis|Analysis]], [[Technical-Architecture|Technical-Architecture]], Memory-Management, Recursion
|
|
- **Modern Tech/Tools**: [[Chrome DevTools|Chrome DevTools]] Call Stack view, [[V8 Engine|V8 Engine]] stack management.
|
|
---
|