인프런 커뮤니티 질문&답변

research님의 프로필 이미지
research

작성한 질문수

FreeRTOS 프로그래밍

스택오버플로우 검사

task를 생성 할 때에 stackDepth 설정 관련하여 궁금한게 있습니다.

해결된 질문

작성

·

319

2

강의를 보던 도중에 메모리 할당에 관련하여 몇가지 궁금한점이 있어 질문드립니다.

  1. 아래그림과 같이 stack 사이즈를 128로 지정하는 경우 task에 사용되는 메모리는 bss 영역에 할당되는게 맞는지요?

  1. 아래 그림과 같이 stack 사이즈를 변경하게되면 메모리에 할당이 되어 Memory Regions 창에 변화량이 보여야 하는데 반영되지 않는거 같아 질문드립니다.

     

 

 

  1. 테스크를 생성 할 때에 stack 사이즈는 어떤 메모리에서 할당되는건지요?

감사합니다.

 

 

 

 

답변 1

0

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. research님!

질문에 대하여 답변드리겠습니다.

우선, 태스크를 하나씩 생성할때마다 BSS 영역이 늘어나는 것은 아닙니다.

image

그리고, 태스크 스택은 BSS 영역을 사용합니다.

다음과 같이 스크린캡쳐 내용과 계속되는 설명을 참고해주세요

image▲그림1

image▲그림2

image▲그림3

그림3 과 같이 FreeRTOSConfig_base.h 파일내 configTOTAL_HEAP_SIZE 값을 변경하면 그림1과 그림2에 변화가 관찰되실 겁니다.

모든 태스크들이 나누어 사용할 태스크 스택의 총량은 configTOTAL_HEAP_SIZE 으로 결정됩니다.

이처럼 FreeRTOS 의 태스크들이 사용할 스택 메모리는 BSS 영역에 프로그램 실행 시작하기 전부터 컴파일 과정을 통해서 결정된다고 보시면 됩니다.

 

research님의 프로필 이미지
research
질문자

아~ 궁금한점이였는데 답변 너무 감사드립니다.

 

 

research님의 프로필 이미지
research

작성한 질문수

질문하기