• 카테고리

    질문 & 답변
  • 세부 분야

    임베디드 · IoT

  • 해결 여부

    미해결

TaskDelay() 함수처럼 Context Switching을 유발하는 함수는 모두 내부적으로 ISR을 통해 실행되는 것일까요?

23.05.14 15:50 작성 조회수 355

1

상호배제방법-인터럽트금지 강의를 듣다가 궁금한 점이 생겨서 질문드립니다.

TaskDelay() 함수처럼 Context Switching을 유발하는 함수는 모두 내부적으로 ISR을 통해 실행되는 것일까요?

특히 Systick Interrupt를 통해 실행되는 것 같은데, 제가 제대로 이해한 게 맞는지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

beSlow님의 프로필

beSlow

질문자

2023.05.15

명쾌하게 이해가 되었습니다. ^^ 좋은 강의 감사합니다!

0

안녕하세요. kt y님!

결론부터 말씀드리자면, 문맥전환은 모두 ISR(PendSV_Handler) 에 의하여 처리되는 것 맞습니다.

freeRTOS 기반 소프트웨어에서 문맥전환이 실행되는 경로는 다음의 2가지입니다. (1)freeRTOS 커널 API 내부에서 트리거, (2)systick 인터럽트를 포함한 제반 인터럽트 핸들러에서 트리거

비록 트리거가 시작되는 경로는 서로 다르지만 둘다다 PendSV_Handler 에 의해 문맥 전환이 수행되게 됩니다.

PendSV_Handler 동작에 관하여는 과거 질문 글을 참고하시면 좋습니다.