콜 스택

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

콜 스택(call stack) 이란 컴퓨터 과학에서 실행할 컴퓨터 프로그램 코드 정보를 저장하는 스택 자료구조이다. 또한 실행 스택(execution stack), 제어 스택 (control stack), 런 타임 스택 (run-time) 스택 혹은 기계 스택 (machine stack) 이라고도 하며 그냥 줄여서 스택 (the stack) 이라고도 한다. 소프트웨어 프로그램의 기능 수행에 있어 콜 스택의 유지 보수가 중요함에도 불구하고 구현 상세는 고급 프로그래밍 언어에서는 보통 감추어지며 자동화되어 있다.

콜 스택은 몇 가지 목적을 위해 이용할 수 있다. 하지만 콜 스택이라는 걸 사용하는 주 이유는 현재 실행 중인 서브루틴을 실행한 다음 어디로 돌아가야 할지 그 절차들을 따라가기 위함이다. 실행 중인 서브루틴은 이제 막 호출되었으나 명령을 전부 끝나치기 전에도 다른 호출에 의해 또 다른 서브루틴으로 넘어가버릴 수도 있다. 이러한 서브루틴의 행동은 (재귀나 기타 특별한 경우를 처리할 때) 수많은 단계를 따라 저장된다. 이는 스택 자료구조의 특성 대로이다. 예를 들어 만약 DrawSqure 라는 서브루틴이 있고 DrawSquare 가 DrawLine을 호출한다고 해보자. (Square는 Line 4개니까 4번 호출하게 될 것이다.) DrawLine 서브루틴은 자신이 호출된 뒤 어디로 돌아가야할지 알고 있어야만 한다. (그래야 4번만 불릴 것이다.) 이를 구현하기 위해, 메모리 주소가 서브루틴이 끝날 때 반환 주소(return address)를 확인하도록 하고, 이를 위해 서브루틴 호출시 콜 스택에 반환 주소를 제일 먼저 집어넣는다.