Операционные системы реального времени


ITRON - часть


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

Диспетчеризация не производится во время выполнения единицы обработки с более высоким уровнем предшествования, чем у диспетчера, в заблокированном состоянии CPU или в запрещенном состоянии диспетчеризации. Эти три состояния называются состоянием задержки диспетчеризации. Состояние задачи во время задержки диспетчеризации можно изменить только с помощью реализационно-зависимымых расширений. Такие расширения могут делать сервисные вызовы из незадачного контекста, что позволит перевести задачу из состояния “выполняющаяся” в состояние “приостановленная” или “спящая”. Кроме того, расширения могут позволять сервисным вызовам выводить задачу из состояния “приостановленная” в запрещенном состоянии диспетчеризации.

Если задачу в состоянии “выполняющаяся” нужно перевести в состояние “приостановленная” или “спящая”, переход задерживается до тех пор, пока система не выполнит диспетчеризацию. Во время этой задержки считается, что выполняющаяся задача находится в промежуточном состоянии. Интерпретация задачи в этом промежуточном состоянии зависит от реализации. Задача, которая должна поступить следующей на выполнение, остается в состоянии “готова” до тех пор, пока не произойдет диспетчеризация.

Сервисные вызовы классифицируются в следующие три категории:

  • Сервисные вызовы для незадачных контекстов.
  • Сервисные вызовы, которые могут быть вызваны из любых контекстов.
  • Сервисные вызовы для задачных контекстов.

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




- Начало -  - Назад -  - Вперед -