임베디드 시스템과 펌웨어
MMU가 없는 작은 마이크로컨트롤러에서 스택 과다 사용에 대해 주의해야 할 점으로 올바른 것은 무엇입니까?
- A스택은 자동으로 얼마든지 커지므로 신경 쓰지 않아도 된다
- B스택이 넘치면 반드시 오류 화면이 표시된다
- C스택이 넘쳐도 즉시 검출되지 않고 이웃한 데이터를 조용히 망가뜨릴 수 있으므로, 깊은 재귀나 큰 지역 배열을 피하고 사용량을 추정한다
정답과 해설 보기
정답: C. 스택이 넘쳐도 즉시 검출되지 않고 이웃한 데이터를 조용히 망가뜨릴 수 있으므로, 깊은 재귀나 큰 지역 배열을 피하고 사용량을 추정한다
PC의 OS에서는 스택 끝에 접근 금지 페이지를 두어 오버플로를 검출할 수 있지만, MMU가 없는 마이크로컨트롤러에는 그런 구조가 없는 경우가 많아, 스택이 넘치면 그 앞에 있는 변수 등을 조용히 덮어씁니다. 증상이 다른 곳에 나타나므로 원인을 찾기 어려워집니다. 깊은 재귀나 큰 지역 배열을 피하고, 도구로 최대 사용량을 추정하거나, 스택 끝에 표식을 써 두고 손상되지 않았는지 검사합니다.