Я начал исследовать FreeRTOS и рассмотрел процедуру сохранения контекста задачи. В этой подпрограмме хранятся регистры и указатель стека. Мой вопрос о стеке в разных потоках. Что делать, если есть поток, который выполняет push и pops, сгенерированные компилятором. Не удалось бы переписать стопку другого потока?Переключатель контекста микропроцессора
ответ
Каждому потоку должно быть выделено достаточное количество стека для собственного стека вызовов плюс, который необходим для хранения контекста. Объем дополнительного пространства стека, необходимого для хранения контекста, будет зависеть от цели, но в случае FreeRTOS конкретно константа configMINIMAL_STACK_SIZE
будет иметь по крайней мере такой размер плюс некоторый запас.
В некоторых целях, где стек потоков используется в контекстах прерываний, вам также необходимо будет учитывать использование стека прерываниями. Если прерывания являются гнездовыми; самым худшим условием будет то, что все прерывания станут активными в приоритетном порядке до того, как они завершатся - возможно, маловероятный сценарий, но один из них следует рассмотреть.
Рекомендации по выделению стека для FreeRTOS предоставляется в FAQ на http://www.freertos.org/FAQMem.html#StackSize
- 1. Переключатель контекста подразумевает переключатель режима
- 2. Защита микропроцессора от микропроцессора
- 3. Переключатель начального контекста FreeRTOS
- 4. Размер микропроцессора
- 5. Программирование микропроцессора?
- 6. Занятый переключатель ожидания и контекста
- 7. jQuery Element Переключатель контекста Iteration
- 8. ARM v6 Переключатель контекста IRQ
- 9. Как получить метаданные микропроцессора?
- 10. Программирование микропроцессора Arduino
- 11. Алгоритм генерации микропроцессора мин
- 12. POSIX: как выполнить переключатель контекста между потоками?
- 13. Как переключатель контекста влияет на изменение переменной?
- 14. Что дороже? Переключатель контекста или вызов функции?
- 15. Как сделать переключатель контекста в обработчике прерываний?
- 16. Переключатель контекста между потоками в процессе
- 17. Переключатель контекста при выполнении функции модуля
- 18. 8 бит ALU для микропроцессора
- 19. Стратегия прогнозирования отрасли микропроцессора 8086
- 20. Управление электродвигателем постоянного тока с использованием микропроцессора
- 21. Измерение контекста контекста процесса
- 22. Насколько лучше переключение потока-контекста из контекста-контекста процесса?
- 23. C# winforms в отладчике .... обнаружен переключатель тупика контекста
- 24. Переключатель контекста на C++ и проблема с мьютексом
- 25. Переключатель контекста темы в одном процессе и два процесса
- 26. Насколько дорогой переключатель контекста? Лучше ли реализовать ручной переключатель задач, чем полагаться на потоки ОС?
- 27. Какой лучший графический симулятор для микропроцессора 68K?
- 28. Управление 7-сегментным дисплеем с использованием микропроцессора
- 29. Вместо контекста контекста контекста OpenGL или контекста контекста контекста, что предпочтительнее?
- 30. системный вызов и контекстный переключатель
Если нет защиты памяти вы можете делать что угодно. Если есть, то нет. Но почему, по-вашему, стек может быть перезаписан? Каждый поток, который там работает, будет иметь push и pops, сгенерированные компилятором, поэтому ...? –
Но что, если есть какие-то нажатия и всплывающие окна в зависимости от конкретного состояния? Затем стек другого потока может быть перезаписан. – Gustavo
По-прежнему объясните, как это произойдет. В потоках есть отдельные стеки, зачем они переписывают друг друга? И каково это конкретное условие? –