Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос начинающего
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
_Артём_
Прочитал давеча (FreeRTOS. Операционная система реального времени для микроконтроллеров. Часть 1. Введение)
Цитата
6. Время переключения контекста для AVR с кварцем на 16Мгц составит всего 20.8 мкс. Именно столько нужно для сохранения данных в стек задачи и вызов следующей. ( Интересное замечание, если сравнить это с PIC18xxx, то контроллер от AVR делает это быстрее в 4 раза!!!, скорее всего это связано с качеством компилятора)

и ранее (chibios Context Switch)
Цитата
AVR/ATMega128-16-GCC4.3.0 11.12µS

И в то же время scmRTOS: 38-42 us on AVR @ 8 MHz (что совпадает с ожидаемым результатом при полном сохранении контекста).
При этом список фич FreeRTOS гораздо длиннее чем в scmRTOS.
Как они так сделали?
Или они (FreeRTOS, chibios) о чём-то умалчивают?
Спасибо.
dxp
Переключение контекста или передача управления? Это немного разные вещи. Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления. Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС.
_Артём_
Цитата(dxp @ Feb 2 2012, 06:03) *
Переключение контекста или передача управления?

Ну Вы спросили...
Я бы сам хотел знать, потому и спрашивал.

Цитата(dxp @ Feb 2 2012, 06:03) *
Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления.


Да, заметил: в описании scmRTOS - "process switching".

Цитата(dxp @ Feb 2 2012, 06:03) *
Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС.


Тогда логично: у FreeRTOS 20 мкс на 16 МГц = время сохранения регистрового файла + время загрузки следующего. А вот сколько займёт передача управления при её наворотах?

А с ChibiOs непонятно: 11.12µS - видимо используют не все регистры.

dxp
QUOTE (_Артём_ @ Feb 2 2012, 21:14) *
Ну Вы спросили...
Я бы сам хотел знать, потому и спрашивал.

Сергей Борщ когда-то проводил сравнение на ARM7, там у FreeRTOS не очень шустро выходило даже на простейших сервисах - там всё было сделано на очередях, а это не самый быстрый способ.

QUOTE (_Артём_ @ Feb 2 2012, 21:14) *
А с ChibiOs непонятно: 11.12µS - видимо используют не все регистры.

Либо не все регистры, либо под этим понимается что-то другое.
_Артём_
Цитата(dxp @ Feb 2 2012, 17:31) *
Сергей Борщ когда-то проводил сравнение на ARM7, там у FreeRTOS не очень шустро выходило даже на простейших сервисах - там всё было сделано на очередях, а это не самый быстрый способ.

Я так и подозревал, что не быстрая.
Статья рекламная значит (Курниц. КиТ): тут рассказываем, тут не рассказываем.


Цитата(dxp @ Feb 2 2012, 17:31) *
Либо не все регистры, либо под этим понимается что-то другое.


Видимо так.
Terminator
Цитата(_Артём_ @ Feb 2 2012, 21:14) *
Тогда логично: у FreeRTOS 20 мкс на 16 МГц = время сохранения регистрового файла + время загрузки следующего. А вот сколько займёт передача управления при её наворотах?

Это как бы и есть передача управления, одна задача остановлена, контекст сменён, другая задача запущена.

Прошу заметить что вы сравниваете время для разных тактовых:
Цитата
scmRTOS: 38-42 us on AVR @ 8 MHz
FreeRTOS 20 мкс на 16 МГц

Так что время переключения у них примерно одинакого.
dxp
QUOTE (Terminator @ Feb 3 2012, 16:59) *
Это как бы и есть передача управления, одна задача остановлена, контекст сменён, другая задача запущена.

Не совсем так. Передача управления - это время от "заныривания" в сервисную функцию (которая и инициирует перепланировку и прочее) в одной задаче до "выныривания" из сервисной функции в другой задаче. Т.е. ещё логика сервисов и работа планировщика добавляется. А переключение контекстов - это сохранение контекста текущей задачи в стек, переключение указателя стека на стек следующей задачи и восстановление контекста новой задачи из её стека. Т.е. это только часть процесса передачи управления.
Сергей Борщ
QUOTE (dxp @ Feb 2 2012, 17:31) *
Сергей Борщ когда-то проводил сравнение на ARM7,
Начиная отсюда: http://electronix.ru/forum/index.php?s=&am...st&p=114555
Даже скорее отсюда: http://electronix.ru/forum/index.php?s=&am...st&p=114854
_Артём_
Цитата(Terminator @ Feb 3 2012, 11:59) *
Прошу заметить что вы сравниваете время для разных тактовых:
Так что время переключения у них примерно одинакого.


Ну, логично что одинаково: процессор тот же.



Цитата(Сергей Борщ @ Feb 3 2012, 12:44) *


Спасибо, интересно.
Vasya777
Цитата(dxp @ Feb 2 2012, 10:03) *
Переключение контекста или передача управления? Это немного разные вещи. Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления. Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС.


Передача управления для ChibiOS/RT представлена на этом сайте. Исходный код доступен, так что, если интересно, скачайте и посмотрите, почему так быстро. Разумеется, чем больше функциональность, тем больше времени требуется на её работу. Интересно сколько времени требуется для передачи управления из разных примитивов синхронизации scmRTOS?
haker_fox
А Вы зачем тему годовалой давности-то подняли?
Vasya777
Цитата(haker_fox @ Apr 7 2013, 12:28) *
А Вы зачем тему годовалой давности-то подняли?


Чтобы новой не создавать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.