Автоматизация сбора и первичной обработки информации
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. Алгоритмические языки разработки для СРВ
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy