Переменная jiffies

Переменная jiffies

Глобальная переменная jiffies содержит количество импульсов системного таймера, которые были получены со времени загрузки системы. При загрузке ядро устанавливает значение этого параметра в нуль и он увеличивается на единицу при каждом прерывании системного таймера. Так как в секунду возникает HZ прерываний системного таймера, то за секунду значение переменной jiffies увеличивается на HZ. Время работы системы (uptime) поэтому равно jiffies/HZ секунд.

Этимология слова jiffy

Происхождение слова jiffy (миг, мгновение) точно неизвестно. Считается, что фразы типа "in a jiffy" (в одно мгновение) появились в Англии в восемнадцатом веке. В быту термин jiffy (миг) означает неопределенный, но очень короткий промежуток времени.

В научных приложениях слово jiffy используется для обозначения различных интервалов времени (обычно порядка 10 ms). В физике это слово иногда используется для указания интервала времени, который требуется свету, чтобы пройти определенное расстояние (обычно, фут, сантиметр, или расстояние, равное размеру нуклона).

В вычислительной технике термин jiffy — это обычно интервал времени между двумя соседними импульсами системного таймера, которые были успешно обработаны. В электричестве jiffy — период переменного тока. В США jiffy — это 1/60 секунды.

В приложении к операционным системам, в частности к Unix, jiffy — это интервал времени между двумя соседними успешно обработанными импульсами системного таймера. Исторически это значение равно 100 ms. Как уже было показано, интервал времени jiffy в операционной системе Linux может иметь разные значения.

Переменная jiffies определена в файле <linux/jiffies.h> следующим образом.

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 и использовать какой-либо другой тип будет неправильным.

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

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

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

5.6.3 Переменная PATH

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

5.6.3 Переменная PATH Еще одна очень важная переменная имеет имя PATH. Она задает перечень путей к каталогам, в которых bash осуществляет поиск файлов (в частности, файлов с командами) в тех случаях, когда полный путь к файлу не задан в командной строке. Отдельные каталоги в этом


5.6.4 Переменная IFS

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

5.6.4 Переменная IFS Эта переменная задает разделители полей (Internal Field Separator), которые используются при операции разделения слов при преобразованиях командной строки, выполняемых оболочкой перед тем, как запустить командную строку на исполнение. Значение этой переменной по


4.2.1. Библиотека jcode и переменная $KCODE

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

4.2.1. Библиотека jcode и переменная $KCODE Чтобы использовать в Ruby разные наборы символов, вы должны знать о глобальной переменной $KCODE, от значения которой зависит поведение многих системных методов, манипулирующих строками. (Кстати говоря, буква K — напоминание о кандзи, одной


Что содержит переменная перед тем, как ей присваивается значение?

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

Что содержит переменная перед тем, как ей присваивается значение? Во время выполнения процедуры VBA выделяет для каждой переменной из этой процедуры пространство в памяти и приписывает переменной начальное значение; означающее, что в переменной ничего не хранится. Чаще


Системная переменная для задания имени пути.

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Системная переменная для задания имени пути. PGP использует несколько специальных файлов для своих целей, таких, как ваши стандартные каталоги ключей "pubring.pgp" и "secring.pgp", файл начального числа для генерации случайных чисел "randseed.bin", файл конфигурации PGP "config.txt" и файл перевода


Условная переменная

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

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


Переменная FIREBIRD (или INTERBASE)

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Переменная FIREBIRD (или INTERBASE) Если установлена переменная окружения FIREBIRD (INTERBASE для версии 1.0.x), то она используется и при инсталляции, и в процессе работы на всех платформах для указания корневого каталога сервера Firebird. Если она присутствует, то перекрываются все другие


Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста

Из книги C++ для начинающих автора Липпман Стенли

Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста #!/bin/bash# Если переменная $IFS инициализирована "пустым" значением,# то "$*" и "$@" содержат аргументы не в том виде, в каком ожидается.mecho () # Вывод аргументов.{echo "$1,$2,$3";}IFS="" # Инициализация "пустым" значением.set a b c #


Пример 9-9. Переменная "подчеркивание"

Из книги Разработка ядра Linux автора Лав Роберт

Пример 9-9. Переменная "подчеркивание" #!/bin/bashecho $_ # /bin/bash # Для запуска сценария был вызван /bin/bash.du >/dev/null # Подавление вывода.echo $_ # duls -al >/dev/null # Подавление вывода.echo $_ # -al (последний аргумент):echo $_ # :$?Код возврата команды, функции


Внутреннее представление переменной jiffies

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

Внутреннее представление переменной jiffies Переменная jiffies исторически всегда представлялась с помощью типа unsigned long и, следовательно, имеет длину 32 бит для 32-разрядных аппаратных платформ и 64 бит для 64-разрядных. В случае 32-разрядного значения переменной jiffies и частоты


Переполнение переменной jiffies

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

Переполнение переменной jiffies Переменная jiffies, так же как и любое целое число языка программирования С, после достижения максимально возможного значения переполняется. Для 32-разрядного беззнакового целого числа максимальное значение равно 2??- 1. Поэтому перед тем как


Переменная Self

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

Переменная Self Внутри каждого нестатического метода неявно определяется переменная Self, ссылающаяся на объект, вызвавший этот метод.Например: type A = class i: integer; constructor Create(i: integer); begin Self.i := i; end; end; В момент вызова конструктора Create объект будет уже создан.