Найти в Дзене

Ядро Линукс


Система времени

Системные тики (timer ticks):

- На материнской плате есть устройство-генератор импульсов (осциллятор), которое с фиксированной частотой посылает аппаратные прерывания в ядро.
- Каждое такое прерывание называется тик (tick).
- Зная частоту этих тиков, ядро «шагает» по времени, продвигая счётчик времени. Основным таким счётчиком является jiffies (или jiffies_64) — глобальная переменная ядра, которая увеличивается на 1 с каждым тиком. Именно отсчёт jiffies позволяет ядру измерять временные интервалы.
- Время в ядре дискретное (разбитое на интервалы), а не абсолютно непрерывное.

2. Частота тиков (tick rate):

- Частота, с которой приходят тики, задаётся параметром CONFIG_HZ при сборке ядра.
- Проверить её можно так:

grep 'CONFIG_HZ=' /boot/config-$(uname -r)

- Типичные значения: 100, 250, 1000 Гц. Это означает, что ядро получает 100, 250 или 1000 тиков в секунду.
- Чтобы изменить это значение, придётся пересобирать ядро.
- Более точный способ узнать текущую частоту — посмотреть в /proc/timer_list:

grep -E "jiffies|resolution" /proc/timer_list | head -10

/proc/timer_list — это спецфайл, который показывает подробную информацию о таймерах ядра и их состояние.

3. Реальное время (RTC — Real Time Clock):

- Когда компьютер полностью выключен, ядро не может «считать» время, поэтому используется отдельное устройство на материнской плате — Real Time Clock.
- В нём есть своя батарейка и микросхема с кварцевым резонатором.
- RTC хранит текущее время и дату между перезагрузками.
- При старте ядро считывает время из RTC и синхронизирует системные часы.

4. Дополнительно:

- После загрузки Linux обычно запускается демон NTP (Network Time Protocol) или systemd-timesyncd, чтобы синхронизировать время по сети (так как кварц RTC со временем всё равно немного уходит вперёд/назад).
- Современные ядра поддерживают режим tickless (CONFIG_NO_HZ) — в этом случае прерывания таймера приходят не с фиксированной частотой, а только тогда, когда реально нужно (например, для планировщика). В этом режиме ядро "просыпается" по таймеру только когда есть какая-то работа (например, нужно проверить, не истек ли квант времени у выполняемого процесса, или когда ожидается какое-то событие с дедлайном). Это снижает нагрузку на CPU и экономит энергию.
Ядро Линукс  Система времени  Системные тики (timer ticks):  - На материнской плате есть устройство-генератор импульсов (осциллятор), которое с фиксированной частотой посылает аппаратные прерывания в
1 минута