스택의 응용인 시스템 스택 알아보기
평소 프로그램의 함수 호출과 복귀 수행 순서를 보자면, 호출 순서와 복귀 순서가 반대하는 것을 볼 수 있습니다.
구조
결국 나중에 호출된 함수가 먼저 나와 실행하고 끝나는 구조이므로 LIFO입니다.
스택의 이런 구조는 응용하여 관리하는 것을 시스템 스택이라고 합니다.
호출
함수나 프로그램이 호출되면 호출한 함수의 수행에 필요한 지역 변수와 매개 변수 그리고 수행 후 복귀할 주소들의 정보를 스택 프레임에 저장하며,
시스템 스택에 push하여 삽입하게 됩니다.
시스템 스택의 최상위 top은 항상 현재 실행 중인 함수이며, 스택 프레임입니다.
복귀
함수의 실행이 끝나면 시스템 스택의 최상위 스택 프레임을 pop하여 삭제하면서 프레임에 저장된 주소를 확인하고 종료되게 됩니다.
함수는 호출과 종료에 따라 반복되며, 수행 종료시 시스템 스택은 공백 스택이 됩니다.
실행 순서
우선 프로그램이 실행을 시작하며 메인 함수가 실행됩니다. 동시에 메인 함수와 관련된 정보를 스택 프레임에 저장하며 시스템 스택에 삽입하게 됩니다.
그리고 메인 함수가 실행되면서 별도로 구현된 함수들이 실행됩니다. 함수를 담게된다면 호출과 복귀 정보를 스택 프레임에 담아 시스템 스택에 담게 됩니다.
이럴때는 메인 함수로 복귀하기 위한 주소 값이 스택 프레임에 저장되게 됩니다.
불러들인 별도의 함수가 실행되며, 복귀 할 때는 pop하여 스택 프레임에 있는 정보를 알게 됩니다
마지막에는 메인 함수가 남게되지만, 메인 함수는 복귀할 주소가 없으므로 프로그램이 종료되며 시스템 스택은 공백 스택으로 됩니다.