인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

작성자 없음

작성자 정보가 삭제된 글입니다.

FreeRTOS 프로그래밍

실습-Deferred Interrupt

dfi 부분 설명 잘못하신거 아닌가요

작성

·

107

·

수정됨

0

dfi 부분 설명 잘못하신거 아닌가요? timer 인터럽트는 계속 발생 되는 거구, 다만 버튼을 눌렀을 때 해당 버튼 누른 만큼 인터럽트가 처리를 할수 있냐 없냐 확인하는게 아닌가 싶어서요

인터럽트에 heavy() 이 들어 있으면 인터럽트를 놓치는 거구

dfi 를 하게 되면 인터럽트를 놓치지 않게 처리 할 수 있다. 그 부분을 설명하는거 같은데 타이머 인터럽트는 계속 백단에서 처리되고 있는거는 동일한거 아닌가 해서요 헷갈리네요
(실습 8번에서 설명하는 영상입니다.)

답변 2

1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, ctk103님, 인프런 AI 인턴입니다.

질문해주신 DFI(Deferred Function Invocation)와 관련된 설명에 대한 혼란을 정리해드리겠습니다. DFI는 주로 인터럽트가 발생했을 때 무거운 작업을 즉시 처리하지 않고, 우선 경량화된 작업만 처리한 후 나중에 무거운 작업을 처리할 수 있게 함으로써 시스템 효율성을 높이는 기법입니다.

  1. 인터럽트 처리의 기본 개념:

    • 모든 인터럽트는 트리거가 발생하면 ISR(Interrupt Service Routine) 내에서 우선 처리됩니다.
    • 일반적으로 인터럽트는 가능한 한 빠르게 반환되어야 하며, 이런 이유로 무거운 작업을 인터럽트 내에서 직접 처리하면 인터럽트 응답 시간이 증가할 수 있습니다.
  2. DFI의 역할과 효용:

    • DFI는 무거운 작업을 임시적으로 연기시키고 ISR에서는 우선 선행되어야 할 작업만 처리한 뒤, 나중에 메인루프나 특정 태스크에서 처리할 수 있게 합니다.
    • 이를 통해 인터럽트를 놓치지 않으면서 시스템을 효율적으로 운영할 수 있습니다.
  3. 타이머 인터럽트의 지속 여부:

    • 타이머 인터럽트는 백그라운드에서 일정 주기로 계속 발생하며, 이는 시스템의 시간 기반 작업 등을 위해 필수적입니다.
    • 중요한 것은 인터럽트가 발생할 때마다 무거운 작업을 모두 다른 곳으로 넘겨 큰 연산 부하를 미리 방지하고, 시스템 반응성을 유지한다는 점입니다.

비슷한 내용이 다루어졌던 관련 질문 및 답변 링크도 함께 보시면, 추가적인 이해에 도움이 되실 것입니다:
- deferred interrupt 처리에서 portYIELD_FROM_ISR api의 용도

DFI에 대한 정확한 이해는 특히 실시간 시스템에서의 성능 최적화에 큰 도움이 될 수 있습니다. 추가적으로 궁금한 점이 있으시면 질문 주셔도 됩니다. 감사합니다!

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

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

안녕하세요. 작성자님!

FreeRTOS에서 DFI(Deferred Interrupt)는 시간이 많이 소요되는 인터럽트 작업을 연기하여 처리하는 기법을 말합니다.

DFI가 필요한 이유는 매우 짧게 실행되어야 하며, 높은 우선순위를 가지는 인터럽트 핸들러의 고유한 특성 때문인데요.

인터럽트 핸들러에 긴 작업이 포함되면 다른 중요한 인터럽트가 지연될 수 있습니다.

DFI 의 처리 방식은 인터럽트 핸들러는 최소한의 작업만 수행하고 빠르게 종료한 후 시간이 많이 소요되는 작업은 매우 높은 우선순위의 태스크에서 처리하도록 위임하는 것입니다.

위의 AI 인턴도 잘 설명해 놓은 것같아요. 그 글도 참고하시면 좋겠네요 ^^

이를 이용하면 다른 인터럽트의 지연 가능성을 줄임으로써 실시간 성능이 향상됨과 동시에 인터럽트 지연으로 인해 발생할 수 있는 시스템 위험을 제거함으로 전체 시스템 안정성까지 확보할 수 있게 됩니다.

 

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기