Хотя вложенный захват ресурсов является допустимым, запрещается вложенный захват задачей одного и того же ресурса.
Не допускается применение сервиса TerminateTask и WaitEvent внутри критической секции. Перед завершением задача обязана освободить все захваченные ресурсы.
Кроме того, запрещается использование критических секций в обработчиках прерываний.
Обработка прерываний
В этом разделе приводится информация, необходимая для реализации обработки прерываний в проекте 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. При этом происходит только планирование задачи (постановка задачи в очередь готовых)..
Использование вложенных прерываний не допускается.






