Время переключения контекста - роль RTOS и процессора - PullRequest
2 голосов
/ 12 июня 2010

Играет ли ОСРВ главную роль или процессор играет главную роль в определении времени переключения контекста? Каков процент доли между этими двумя основными игроками в определении времени переключения контекста.

Может ли кто-нибудь рассказать об ОСРВ ОС / ОС-II?

Ответы [ 3 ]

10 голосов
/ 13 июня 2010

Я бы сказал, что оба значимы, но на самом деле все не так просто:

Фактическое время переключения контекста просто зависит от количества циклов команд, необходимых для выполнения переключения, как и в любом программном обеспечении, оно может быть эффективно закодировано или нет. С другой стороны, при прочих равных условиях процессору с большим набором регистров потребуется больше циклов команд для сохранения контекста; но наличие большого набора регистров может сделать другой код гораздо более эффективным.

Процессор также может иметь архитектуру, которая напрямую поддерживает быстрое переключение контекста. Например, простой 8-битный 8051 имеет четыре дублирующих банка регистров; поэтому переключение контекста немного больше, чем переключение банка регистров (при условии, что у вас не более четырех потоков), и с учетом того, что Silicon Labs производит устройства на базе 8051 при 100MIPS, это действительно может быть очень быстро!

Более сложные процессоры и операционные системы могут использовать MMU для обеспечения защиты потоковой памяти, это дополнительные издержки переключения контекста, но с преимуществами, которые могут это переопределить. Также, конечно, такие процессоры обычно также имеют высокую тактовую частоту, что помогает.

Таким образом, в целом, скорость процессора, архитектура процессора, качество реализации RTOS и функциональность, предоставляемая RTOS, могут влиять на время переключения контекста. Но, в конце концов, самый простой способ улучшить время переключения - это почти наверняка увеличить тактовую частоту.

Несмотря на то, что было бы неплохо иметь больше запаса, если время переключения контекста является проблемой создания или разрушения для вашего проекта в любой уважаемой ОСРВ, вам следует рассмотреть вопрос о пригодности вашего оборудования или вашего проекта. Вы должны стремиться к дизайну, который минимизирует переключение контекста. Например, если преобразование АЦП занимает 6 с, а переключение контекста - 20 с, то лучше бы подождать, чем использовать прерывание, завершающее преобразование; еще лучше использовать передачи DMA, чтобы избежать переключения контекста для отдельных элементов данных, где это возможно.

2 голосов
/ 13 июня 2010

ОСРВ ОС / ОС-II написана на C, с некоторыми очень специфическими разделами (возможно, в сборке) для специфической обработки процессора.Переключение контекста будет частью разделов, которые очень специфичны для процессора.

Таким образом, время переключения контекста будет очень зависеть от выбранного процессора и конкретных секций, используемых для адаптации uC / OS-II к этому процессору.Я полагаю, что весь исходный код доступен, поэтому вы сможете увидеть, сколько исходного кода необходимо для переключения контекста.Я также думаю, что в uC / OS-II есть обратные вызовы, которые могут позволить вам добавить код для измерения производительности.

1 голос
/ 22 декабря 2011

Просто чтобы завершить то, что говорил Клиффорд, время переключения контекста также зависит от условий, запускающих переключение контекста, поэтому в основном оно зависит от эталона.

В зависимости от реализации RTOS, в некоторых случаях можно переключиться непосредственно на первый процесс ожидания, минуя планировщик.

Это, конечно, дает огромный импульс в некоторых тестах.

Например, мы делаем некоторый эталонный тест, который измеряет издержки (в мкс), необходимые для доставки сигнала и переключения на высокоприоритетный процесс, изменяя конкретную конфигурацию ядра и целевую архитектуру: http://www.bertos.org/discover/context-switch-overhead

...