Разница между ISR RTOS и ОС общего назначения

Я изучаю ISR, но не могу найти, в чем разница между процедурой обслуживания прерываний RTOS и ОС общего назначения. Может ли кто-нибудь объяснить разницу между ними, если она есть?


person Dinesh Maurya    schedule 30.03.2017    source источник
comment
Что вы подразумеваете под нормальной ОС?   -  person kkrambo    schedule 30.03.2017
comment
@kkrambo, под обычной ОС я подразумеваю любую операционную систему, такую ​​​​как Windows, Linux и т. Д.   -  person Dinesh Maurya    schedule 30.03.2017
comment
@DineshMaurya: универсальная или настольная ОС, вероятно, является лучшим описанием, чем обычное.   -  person Clifford    schedule 30.03.2017
comment
@Clifford, спасибо за ваше предложение. Изменено слово «нормальный» на «общего назначения», чтобы сделать его более понятным.   -  person Dinesh Maurya    schedule 31.03.2017


Ответы (1)


В RTOS выход из контекста прерывания обычно приводит к запуску планировщика (в ISR будет эпилог прерывания, который делает это), чтобы определить готовую задачу с наивысшим приоритетом (которая могла измениться, если ISR сигнализирует о задаче каким-либо образом). С другой стороны, в GPOS (ОС общего назначения) переключение задач обычно выполняется на основе временных интервалов, поэтому планировщик запускается только по прерыванию часов ОС.

Другими словами, в GPOS по завершении ISR он обычно возвращается к той задаче, которая была прервана, в то время как в RTOS он оценивает расписание задачи и переключает контекст на задачу с наивысшим приоритетом в состоянии готов. штат.

person Clifford    schedule 30.03.2017
comment
Хм... есть ли у вас примеры GPOS, где "планировщик запускается только по прерыванию часов ОС"? Windows и Linux определенно не попадают в эту категорию. - person ThingyWotsit; 31.03.2017
comment
@Clifford, если я понимаю пункты из unix.stackexchange.com/questions/84107/ правильно, тогда планировщик должен вызываться при возврате из ISR даже в ОС общего назначения. - person Dinesh Maurya; 31.03.2017
comment
@DineshMaurya «ISR» (т.е. драйвер), у кода есть выбор. Он может выполнить нормальный возврат прерывания или запросить запуск по расписанию. Возможно, он заполнил только часть большого сетевого буфера и поэтому просто возвращается. Позже, в другом прерывании, когда поступило больше данных, он может сигнализировать семафор/событие/что угодно и (вызов/переход/установка/что угодно) запросить, чтобы ОС выполнила выполнение планирования при выходе из состояния прерывания, чтобы сделать поток, который ожидал данных, готовых/запущенных «немедленно». Нет необходимости или желания ждать какого-либо таймера - производительность была бы очень плохой, если бы это произошло. - person ThingyWotsit; 31.03.2017
comment
@DineshMaurya: ответ был общим; разные ОС могут отличаться. Дело в том, что в RTOS необходимо запустить планировщик для упреждающего планирования на основе приоритета в реальном времени. Политики планирования GPOS менее ограничены. - person Clifford; 31.03.2017