테크노트 ‘스택 메모리’ 효율적으로 사용하는 노하우
[첨단 헬로티] Stack 메모리 펌웨어, RTOS 사용 등의 MCU 제어를 위한 소프트웨어 동작 중 데이터 영역의 메모리를 쓰고 지우면서 많은 활용을 한다. 이때 중요한 메모리 영역 중 하나로 스택(Stack)영역이 있다. 일반적으로 스택은 후입 선출(LIFO - Last In, First Out) 특성을 가지며 함수의 로컬 변수, 함수 파라미터, 함수 호출을 위한 리턴값, 브랜치 주소 등 동작에 중요한 데이터들이 쓰이고 지워지는 영역이다. 즉, 소프트웨어 동작에 반드시 필요한 메모리 영역이다. 스택 메모리는 중요한 만큼 철저한 관리 또한 필요하다. 사이즈를 너무 작게 설정하면, 동작 중 스택 메모리 영역을 넘어 사용하게 되는(스택 오버플로우) 동작에 문제가 생긴다. 반대로 사이즈를 너무 크게 잡은 경우, 스택 오버플로우 현상은 없지만 다른 데이터가 쓰여질 영역이 줄어들어 메모리 관리에 비효율적이다. 스택 영역의 정적, 동적인 방법으로 검사를 하고 모니터링을 한 후, 적합한 메모리 크기 설정 등 효과적이고 효율적으로 스택을 사용하길 바란다. Stack 사용량 정적 분석 작성된 소프트웨어 빌드 과정 중 링킹 과정에서 정적 분석 방법으로 스택의 최대 사용량을