Автоматизация сбора и первичной обработки информации

77 имеет свои особенности при обработке прерываний. Кроме того, свою специфику может накладывать используемая аппаратная платформа. Синхронизация по времени . Как правило, в ОСРВ задается эталонный интервал (квант) времени, который иногда называют тиком (Tick) и который используется в качестве базовой единицы измерения времени. Размерность этой единицы для разных ОСРВ может быть разной, как, впрочем, разными могут быть набор функций и механизмы взаимодействия с таймером. Функции по работе с таймером используют для приостановки выполнения задачи на какое-то время, для запуска задачи в определенное время, для относительной синхронизации нескольких задач по времени и т.п. Множество задач одновременно могут запросить сервис таймера, поэтому если для каждого такого запроса используется элемент в таблице временных интервалов, то накладные расходы системы по обработке прерываний от аппаратного таймера растут пропорционально размерности этой таблицы и могут стать недопустимыми. Для решения этой проблемы можно вместо таблицы использовать связный список и алгоритм так называемого дифференциального таймера, когда во время каждого тика уменьшается только один счетчик интервала времени. Зачем нужны ОСРВ ? Рассмотрим следующий фрагмент программы: for (;;) { if (PressedKey ) Beep(); if (!Bufer_Empy) ReadBuffer(); ShowTime(); /* Делаем задержку */ for (I=0;I<DelayTicks;I++); } Для ОСРВ перепишем этот кусок так: for (;;) { if (PressedKey) Beep(); if (!Bufer_Empy) ReadBuffer(); ShowTime(); /* Делаем задержку */ Wait(Delay); } Между этими двумя фрагментами есть существенное различие. В обоих случаях генерируется одинаковая задержка по времени. В первом случае во время задержки процессор работает <<в холостую>>. При выполнении второго фрагмента под управлением ОСРВ, во время задержки может работать другая задача. Нетрудно заметить, что в обоих случаях мы фактически пытаемся реализовать циклический алгоритм запуска задач. В случае, когда задачи, которые мы организуем в очередь имеют разные временные ограничения (например, с какой частотой нужно запускать каждую задачу), когда требуется синхронизация с внешними или внутренними событиями, когда важно, чтобы все задачи стабильно отработали в отведенный промежуток времени, становится значительно сложнее реализовать наши требования. ОСРВ специально разрабатываются для решения подобных проблем, освобождая программиста от дополнительной головной боли. 4.1.2. Алгоритмические языки разработки для СРВ

RkJQdWJsaXNoZXIy MTY0OTYy