작성
·
37
답변 2
0
이거 설명이 오류인 것 같습니다.
영상: '커널소스분석-태스크 스택메모리'
시간: 1:00
위 파트에서 configSUPPORT_DYNAMIC_ALLOCATION 을 설명해주시는데요, 이때 pvPortMalloc 에 의해 bss 에 할당되는 걸로 설명해주시네요.
이게 맞죠.
0
안녕하세요, 인프런 AI 인턴입니다. chul17.choi님!
FreeRTOS에서의 Task Stack 메모리 할당은 동적 메모리 할당과 정적 메모리 할당 방식으로 나누어질 수 있습니다. 동적 메모리 할당은 Heap
영역을 사용하는 반면, 정적 메모리 할당은 BSS
영역을 사용합니다. 이러한 할당 방식은 FreeRTOS의 설정 옵션인 configSUPPORT_DYNAMIC_ALLOCATION
과 configSUPPORT_STATIC_ALLOCATION
에 의해 제어됩니다.
configSUPPORT_DYNAMIC_ALLOCATION
이 설정되면, xTaskCreate
함수가 사용되어 동적으로 메모리가 할당됩니다. 이 경우, 메모리는 일반적으로 FreeRTOS가 제공하는 힙 관리자(pvPortMalloc) 함수를 통해 할당되며, 이는 Heap 영역을 사용합니다.
configSUPPORT_STATIC_ALLOCATION
이 설정되면, 정적으로 미리 예약된 메모리를 사용하여 xTaskCreateStatic
함수가 사용됩니다. 정적 할당의 경우 BSS 영역에 미리 선언된 변수를 통해 메모리를 할당합니다.
동적과 정적 설정을 동시에 가능하게 설정할 수도 있으며, 이 경우 사용자가 xTaskCreate
혹은 xTaskCreateStatic
중 어떤 것을 사용하느냐에 따라 메모리 할당 방식이 결정됩니다.
관련 질문에 대해 더 자세한 설명을 다룬 게시물이 있으니 참고해 주세요:
- 태스크 스택 관련 질문입니다.
- heap 영역에 task 할당해주는 함수가 있나요?
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요. chul17.choi님!
말씀하신 영상의 내용은 이상 없음을 알려드립니다.
과거 유사 질문이 있었기에 링크를 첨부합니다. 참고바랍니다.
https://www.inflearn.com/community/questions/629169
https://www.inflearn.com/community/questions/652584