Компоненты и технологии • №2 '2011 компоненты


В предыдущей части статьи [1] читатель познакомился с операционной систе-



Pdf көрінісі
бет11/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   7   8   9   10   11   12   13   14   ...   129
Kurniz

В предыдущей части статьи [1] читатель познакомился с операционной систе-
мой реального времени (ОСрВ) для микроконтроллеров (МК) FreeRTOS. Были 
изложены достоинства и недостатки использования ОСрВ в основе про-
граммного обеспечения микроконтроллерных устройств. Произведена 
оценка FreeRTOS с точки зрения потребления памяти и дополнительных за-
трат процессорного времени. В сокращенном виде была описана структура 
дистрибутива FreeRTOS и назначение отдельных файлов, входящих в дис-
трибутив. Во второй части статьи будут затронуты как основы теории работы 
ОСрВ в целом, так и продолжено изучение конкретной реализации ОСрВ 
для МК — FreeRTOS. уделено особое внимание задачам как базовой единице 
программы для FreeRTOS. Приведен пример простейшей программы для МК 
AVR ATmega128, работающей под управлением FreeRTOS.
FreeRTOS — 
операционная система 
для микроконтроллеров
Продолжение. Начало в № 2`2011
рис. 1. Истинно параллельное выполнение задач
рис. 2. Распределение процессорного времени между несколькими задачами в ОСРВ


110
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2011
компоненты
микроконтроллеры
Пример перехода задачи в блокированное 
состояние показан на рис. 3.
Задача 1 исполняется на протяжении 
определенного времени (1). В момент вре-
мени (2) планировщик приостанавливает 
задачу 1 и возобновляет выполнение зада-
чи 2 (момент времени (3)). Во время свое-
го выполнения (4) задача 2 захватывает 
определенный аппаратный ресурс для свое-
го единоличного использования. В момент 
времени (5) планировщик приостанавлива-
ет задачу 2 и восстанавливает задачу 3 (6). 
Задача 3 пытается получить доступ к тому же 
самому аппаратному ресурсу, который занят 
задачей 2. В результате чего задача 3 блокиру-
ется — момент времени (7). Через некоторое 
время управление снова получает задача 2, 
которая завершает работу с аппаратным ре-
сурсом и освобождает его (9). Когда управле-
ние получает задача 3, она обнаруживает, что 
аппаратный ресурс свободен, захватывает его 
и выполняется до того момента, пока не бу-
дет приостановлена планировщиком (10).
Когда задача выполняется, она, как и любая 
программа, использует регистры процессора, 
память программ и память данных. Вместе эти 
ресурсы (регистры, стек и др.) образуют кон-
текст задачи (task execution context). Контекст 
задачи целиком и полностью описывает теку-
щее состояние процессора: флаги процессора, 
какая инструкция сейчас выполняется, какие 
значения загружены в регистры процессора, 
где в памяти находится вершина стека и т. д.
Задача «не знает», когда ядро ОСРВ прио-
становит ее выполнение или, наоборот, воз-
обновит.
На рис. 4а показан абстрактный процессор, 
который выполняет задачу 1, частью которой 
является операция сложения. Операнды за-
гружены в регистры Reg1 и Reg2 (инструкции 
LDI). Пусть перед инструкцией сложения 
ADD ядро приостановило задачу 1 и отдало 
управление задаче 2, которая использует ре-
гистры Reg1 и Reg2 для своих нужд (рис. 4б). 
В какой-то момент времени ядро возобновит 
выполнение задачи 1 с места, где она была 
приостановлена: с инструкции ADD (рис. 4в). 
Однако для задачи 1 изменение ее контекста 
(регистров Reg1 и Reg2) останется незамечен-
ным, произойдет сложение, но его результат 
«с точки зрения» задачи 1 окажется неверным.
Таким образом, одна из основных функ-
ций ядра ОСРВ — это обеспечение идентич-
ности контекста задачи до ее приостановки 
и после ее восстановления. Когда ядро при-
останавливает задачу, оно должно сохранить 
контекст задачи, а при ее восстановлении — 
восстановить. Процесс сохранения и восста-
новления контекста задачи называется пере-
ключением контекста (context switching).
Немаловажным понятием является квант 
времени работы планировщика (tick) — это 
жестко фиксированный отрезок времени, 
в течение которого планировщик не вмеши-
вается в выполнение задачи. По истечении 
кванта времени планировщик получает воз-
можность приостановить текущую задачу 
и возобновить следующую, готовую к вы-
полнению. Далее квант времени работы 
планировщика будет называться систем-
ным квантом. Для отсчета системных кван-
тов в МК обычно используется прерывание 
от таймера/счетчика. Системный квант ис-
пользуется как единица измерения интерва-
лов времени средствами ОСРВ.
Уменьшая продолжительность системного 
кванта, можно добиться более быстрой реак-
ции программы на внешние события, однако 
это приведет к увеличению частоты вызова 
планировщика, что скажется на производи-
тельности вычислительной системы в целом.
Подводя итог, можно выделить три основ-
ные функции ядра любой ОСРВ:
1. Работа планировщика, благодаря которой 
создается эффект параллельного выпол-
нения нескольких задач за счет быстрого 
переключения между ними.
2. Переключение контекста, благодаря кото-
рому выполнение одной задачи не сказы-
вается на остальных задачах (задачи рабо-
тают независимо).
3. Временная база, основанная на системном 
кванте как единице измерения времени.
Вышеприведенное описание основ ОСРВ 
является очень обобщенным. Существует 
еще целый ряд понятий, таких как приорите-
ты задач, средства синхронизации, передача 
информации между задачами и др., которые 
будет раскрыты позже на примере конкрет-
ной ОСРВ — FreeRTOS.


Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет