Как реализовать планировщик в крошечной ОСРВ, которая способна прерывать задачи, когда они выходят из времени - PullRequest
0 голосов
/ 08 ноября 2018

Я читаю о RTOS, и есть концепция, касающаяся реализации планировщика, которую я не понимаю.

Одним из способов разработки задач программного обеспечения в реальном времени является разделение выполнения по временным интервалам. Это означает, что, если задача T начинает выполняться, но не может завершить свою работу в течение определенного временного интервала, ОСРВ должна сохранить состояние T, прервать его и повторно поставить в очередь для последующего выполнения.

Скажем, реализация задачи - это просто процедура, которую вызывает ОСРВ. Мой вопрос:

Как реализовать механизм прерывания? Я имею в виду, что если ОСРВ начнет выполнять пользовательскую процедуру, она не сможет проверить, является ли задача устаревшей, если процедура возвращается, и при необходимости она не сможет ее прервать, верно?

Насколько я понимаю, должен существовать механизм, с помощью которого ОСРВ может выполнять действия между выполнением инструкций каждой пользовательской задачи. Я полагаю, что это достигается через тиковое прерывание , означает ли это, что ОСРВ должна выполнять операции такого рода (перепланирование, прерывание задач, сохранение их состояния и т. Д.) При тиковом прерывании обработчик

1 Ответ

0 голосов
/ 14 ноября 2018

Любой упреждающий планировщик, не только так называемые RTOS, имеет возможность остановить «нормальный» поток выполнения кода пользовательского пространства.Источником прерываний является не обязательно «тиковый» таймер, но также любой другой внешний источник, который система была спроектирована и настроена для приема.Под внешним в этом смысле подразумевается выполнение инструкций ЦП вне зависимости от того, насколько хорошо вы хотите увидеть это различие.Даже подсистема кеша / памяти находится "снаружи" в некоторых (большинстве) современных операционных системах, чтобы облегчить загрузку с диска после пропуска страницы, например

ИМХО, этот вопрос слишком широкий и должен быть перенесен в более подходящий стековый обменсайт.

...