Флуктуации отсчета времени

Флуктуации отсчета времени

Существует еще одно явление, которое вы должны принимать во внимание. Предположим, что разрешающая способность у вас равна 10 миллисекундам, а вы желаете сформировать задержку длительностью в 20 миллисекунд.

Всегда ли вы можете быть уверены, что от момента вызова функции delay() до возврата из нее пройдет ровно 20 миллисекунд?

Никогда.

На это есть две серьезные причины. Первая причина довольно проста: при блокировании поток изымается из очереди готовности. Это означает, что процессор может перейти к другому потоку вашего приоритета. Когда ваши 20 миллисекунд истекут, ваш поток будет помещен в конец очереди готовности по этому приоритету и будет таким образом оставлен на милость потока, выполняющегося в данный момент. Это относится также к обработчикам прерываний и к потокам более высокого приоритета — то, что ваш поток перешел в состояние READY, еще не означает, что ему сразу предоставят процессор.

Вторая причина несколько более хитрая. Чтобы понять ее смысл, посмотрите на нижеприведенный рисунок.

Флуктуации отсчета времени.

Проблема здесь состоит в том, что ваш запрос является асинхронным по отношению к источнику отсчетов. У вас нет никакой возможности синхронизировать аппаратный таймер с вашим запросом. Поэтому в итоге вы получите интервал задержки где-то в диапазоне от 20 до 30 мс — в зависимости от того, в какой момент между отсчетами аппаратных часов возник ваш запрос.

Это очень важный момент. Флуктуации отсчета времени — одна из печальных жизненных реалий. Единственный способ избавиться от этой проблемы заключается в увеличении разрешающей способности так, чтобы получающиеся погрешности укладывались в пределы установленных допусков. (Как это делается, мы рассмотрим ниже, в разделе «Опрос и установка часов реального времени».). Имейте в виду, что флуктуации проявляются только на первом отсчете таймера — задержка на 100 секунд, реализуемая с помощью таймера с разрешением в 10 мс, попадет в интервал между 100 и 100.01 секундами.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Машина времени

Из книги Журнал `Компьютерра` N740 автора Журнал «Компьютерра»

Машина времени Автор: Олег ВолошинЛюбой производитель спит и видит, как бы вырваться вперед, создать что-то такое, что отличит его детище от сонма других. В случае с цифровыми камерами, выпускаемыми в колоссальном избытке, это становится особенно актуально —


Знаки времени

Из книги Журнал "Компьютерра" №711 автора Журнал «Компьютерра»

Знаки времени Автор: Киви БердНа закате правления госадминистрации Клинтона один из видных деятелей ИТ-индустрии, глава Sun Microsystems Скотт Макнили сделал, помнится, весьма сильное публичное заявление, которым многие были просто шокированы. Речь шла о роли технологий в


1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали


1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали


7.2. Работа с конкретными датами (после точки отсчета)

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

7.2. Работа с конкретными датами (после точки отсчета) Большинству программ нужно работать только с датами, относящимися к будущему или недавнему прошлому. Для таких целей класса Time достаточно. Наиболее интересны методы mktime, local, gm и utc.Метод mktime создает новый объект Time на


7.7. Вычисление промежутка времени, прошедшего от точки отсчета

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

7.7. Вычисление промежутка времени, прошедшего от точки отсчета По разным причинам может понадобиться перейти от внутреннего (традиционного) представления времени к стандартному. В системе время хранится как число секунд, прошедших с точки отсчета.Метод класса Time.at


7.18. Работа с конкретными датами (до точки отсчета)

Из книги VBA для чайников автора Каммингс Стив

7.18. Работа с конкретными датами (до точки отсчета) В стандартной библиотеке Date есть одноименный класс для работы с датами, предшествующими полуночи 1 января 1970 года.Несмотря на некоторое перекрытие с классом Time, между ними есть существенные различия. Самое главное состоит


18.1.1. Представление времени

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

18.1.1. Представление времени В системах Unix и Linux время отслеживается в секундах до или после начала эпохи, которое определяется как полночь 1 января 1970 года по UTC[148]. Положительные значения времени относятся к периоду после начала эпохи; отрицательные — до начала эпохи. Для


Математика дат и времени

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб


Интервал времени

Из книги Новый ум короля [О компьютерах, мышлении и законах физики] автора Пенроуз Роджер

Интервал времени Ошибочно предполагать, что тип TIME может хранить интервал времени. Он не может. Для вычисления интервала времени вычтите более позднюю дату или время из более раннего. Результатом будет число NUMERIC(18,9), выражающее интервал в днях. Поскольку точность


Разрешающая способность отсчета времени

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Разрешающая способность отсчета времени Пусть отсчеты времени таймера генерируются чуть чаще, чем раз в 10 миллисекунд. Смогу ли я надежно обеспечить ожидание длительностью в 3 миллисекунды?Не-а.Подумайте, что происходит в ядре. Мы вызываем стандартную библиотечную


12.1. Ограничения по времени

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

12.1. Ограничения по времени После выбора этой ссылки появится сетка ограничений по времени на каждый день недели. Настройка ограничений производится очень просто: необходимо щелкнуть кнопкой мыши на пересечении дня недели и нужного времени суток, что приведет к


Квант времени

Из книги автора

Квант времени Квант времени (timeslice[20]) — это численное значение, которое характеризует, как долго может выполняться задание до того момента, пока оно не будет вытеснено. Стратегия планирования должна устанавливать значение кванта времени, используемое по умолчанию, что


Немного времени

Из книги автора

Немного времени Игра «О счастливчик»Игрок: Прошу убрать два неверных варианта.Ведущий: Итак, дорогой компьютер, уберите, пожалуйста, два неверных варианта.Надпись на мониторах: «Программа выполнила недопустимую ошибку и будет закрыта».Ведущий: Что ж, по просьбе компании