Происхождение слова
В научных приложениях слово
В вычислительной технике термин
В приложении к операционным системам, в частности к Unix,
Переменная jiffies
следующим образом.extern unsigned long volatile jiffies;
Определение этой переменной достаточно специфичное, и оно будет рассмотрено более подробно в следующем разделе. Сейчас давайте рассмотрим пример кода ядра. Пересчет из секунд в значение переменной jiffies
(секунды * HZ)
Отсюда следует, что преобразование из значения переменной jiffies
(jiffies / HZ)
Первый вариант встречается более часто. Например, часто необходимо установить значение некоторого момента времени в будущем.
unsigned long time_stamp = jiffies; /* сейчас */
unsigned long next_tick = jiffies + 1; /* через один импульс таймера
от текущего момента */
unsigned long later = jiffies + 5*HZ; /* через пять секунд от текущего
момента */
Последний пример обычно используется при взаимодействии с пространством пользователя, так как в самом ядре редко используется абсолютное время.
Заметим, что переменная jiffies
unsigned long и использовать какой-либо другой тип будет неправильным.Внутреннее представление переменной jiffies
Переменная jiffies
unsigned long и, следовательно, имеет длину 32 бит для 32-разрядных аппаратных платформ и 64 бит для 64-разрядных. В случае 32-разрядного значения переменной jiffies и частоты появления временных отметок 100 раз в секунду, переполнение этой переменной будет происходить примерно каждые 497 дней, что является вполне возможным событием. Увеличение значения параметра HZ до 1000 уменьшает период переполнения до 49.7 дней! В случае 64-разрядного типа переменной jiffies, переполнение этой переменной невозможно за время существования чего-либо при любых возможных значениях параметра HZ для любой аппаратной платформы.Из соображений производительности и по историческим причинам — в основном, для совместимости с уже существующим кодом ядра — разработчики ядра предпочли оставить тип переменной jiffies
unsigned long. Для решения проблемы пришлось немного подумать и применить возможности компоновщика.Как уже говорилось, переменная jiffies
unsigned long.extern unsigned long volatile jiffies;
Вторая переменная определяется в файле
extern u64 jiffies_64;