Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RTOS. Common Specification.doc
Скачиваний:
1
Добавлен:
13.08.2019
Размер:
155.65 Кб
Скачать

4.Управление ресурсами

4.1Организация управления ресурсами

Управление ресурсами используются для организации совместного использования разделяемых ресурсов (общих областей памяти, аппаратных средств и т. п.) несколькими задачами. Конкретный протокол управления ресурсами, который должен быть реализован в проекте, определен в индивидуальном задании.

Для управления ресурсами используются системные сервисы для обозначения начала использования ресурса (GetResource, PIP_GetRes, P) и для обозначения его конца (ReleaseResource, PIP_ReleaseRes, V). Вызовы этих сервисов ограничивают критическую секцию в пользовательской задаче. Любое использование ресурса задачей допускается только внутри критической секции.

ОСРВ должна обеспечивать неограниченную вложенность критических секций. Другими словами, задача может захватить и удерживать произвольное количество ресурсов одновременно. На порядок освобождения захваченных ресурсов также не накладывается никаких ограничений. Это означает, что оба фрагмента программы, показанных в таблице 2, являются корректными.

Таблица 1

GetResource(res1);

GetResource(res2);

ReleaseResource(res2);

ReleaseResource(res1);

GetResource(res1);

GetResource(res2);

ReleaseResource(res1);

ReleaseResource(res2);

4.2Ограничения при управлении ресурсами

Хотя вложенный захват ресурсов является допустимым, запрещается вложенный захват задачей одного и того же ресурса.

Не допускается применение сервиса TerminateTask и WaitEvent внутри критической секции. Перед завершением задача обязана освободить все захваченные ресурсы.

Кроме того, запрещается использование критических секций в обработчиках прерываний.

5.Обработка прерываний

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

Наряду с задачами в пользовательских приложениях могут использоваться обработчики прерываний (interrupt service routine – ISR). Тем не менее, на их использование накладывается важное ограничение: целый ряд сервисов ОСРВ из обработчика вызывать запрещается. С другой стороны, в ISR можно использовать некоторые сервисы, которые запрещено вызывать из пользовательских задач. Более подробная информация приведена в таблице 1.

Таблица 2

Сервис ОСРВ

Вызов из обработчика

Вызов из задачи

ActivateTask

запрещён

разрешён

ISRActivateTask

разрешён

запрещён

TerminateTask

запрещён

разрешён

GetResource

запрещён

разрешён

ReleaseResource

запрещён

разрешён

PIP_GetRes

запрещён

разрешён

PIP_ReleaseRes

запрещён

разрешён

P

запрещён

разрешён

V

запрещён

разрешён

WaitEvent

запрещён

разрешён

SetEvent

разрешен

разрешён

ClearEvent

запрещен

разрешен

GetEvent

запрещён

разрешён

WaitSysEvent

запрещён

разрешён

SetSysEvent

разрешен

разрешён

GetSysEvent

запрещён

разрешён

EnterISR

разрешён

запрещён

LeaveISR

разрешён

запрещён

StartOS*

запрещён

запрещён

ShutdownOS

разрешён

разрешён

*сервис StartOS может вызываться только когда система ещё не запущена, но не может вызываться в процессе её работы (задачами или обработчиками прерываний).

Вызов сервиса EnterISR должен предшествовать вызову любого другого сервиса ОС из ISR. Сервис LeaveISR всегда располагается в конце обработчика и вызывается только если ранее был вызван EnterISR

Вызов сервиса ActivateTask из обработчика запрещается. Вместо этого для активизации задач используется сервис ISRActivateTask. При этом происходит только планирование задачи (постановка задачи в очередь готовых). .

Использование вложенных прерываний не допускается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]