- •Основная часть Концепция абсолютного и относительного времени в вычислительных системах
- •Аппаратная реализация источников времени в компьютере
- •Стандарт posix api для работы с системными часами
- •Методология определения длительности выполнения кода
- •Функции задержки выполнения задач и дискретизация времени
- •Программные таймеры: создание, настройка и схемы уведомления
- •Управление периодическими задачами и аппаратные прерывания
- •Взаимосвязь службы времени и информационной безопасности систем
- •Временные метки и аудит событий
- •Криптографические протоколы и сроки действия сертификатов
- •Заключение
- •Список источников
МИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра информационной безопасности
Реферат
по дисциплине «Системы реального времени»
Тема: Время в ОС РВ; таймеры
Студент _________________
Преподаватель _________________ Сидельников В.В.
Санкт-Петербург
2026
Основная часть Концепция абсолютного и относительного времени в вычислительных системах
В теории систем реального времени и системном программировании фундаментальное значение имеет разделение времени на две основные категории: абсолютное (календарное) и относительное (интервальное). Абсолютное время определяет положение конкретного момента в общепринятой шкале координат, отправной точкой которой для большинства современных операционных систем является Эпоха Unix — 00:00:00 UTC 1 января 1970 года. Данный тип времени подвержен корректировкам со стороны системы или администратора, например, для синхронизации с внешними эталонами через протоколы NTP или PTP. Это делает абсолютное время ненадежным для измерения длительности коротких процессов, так как системный вызов может вернуть значение, меньшее, чем предыдущее, из-за коррекции часов назад.
Относительное время, напротив, представляет собой монотонно возрастающую величину, которая отсчитывается с некоторого фиксированного, но произвольного момента, чаще всего — с момента старта или инициализации ядра операционной системы. Главным свойством относительного времени является его непрерывность и невозможность изменения в обратную сторону. В стандартах POSIX это реализуется через концепцию монотонных часов (CLOCK_MONOTONIC). Использование именно этой шкалы является обязательным условием для измерения временных интервалов внутри программы, реализации алгоритмов планирования и обеспечения детерминизма в системах реального времени, где точность измерения промежутков между событиями критичнее, чем знание текущей календарной даты.
Аппаратная реализация источников времени в компьютере
Функционирование программных служб времени опирается на иерархию аппаратных компонентов. Первичным источником является кварцевый генератор, формирующий стабильную частоту. На его основе работают различные устройства: программируемый интервальный таймер (PIT i8254), часы реального времени (RTC) и современные высокоточные средства. Исторически PIT использовался для генерации системных прерываний, однако его низкая частота (1.193182 МГц) ограничивает разрешение системных часов. Более совершенным инструментом является HPET (High Precision Event Timer), обеспечивающий частоту свыше 10 МГц и позволяющий более точно управлять квантованием времени.
Особое место в иерархии занимает счетчик тактов процессора TSC (Time Stamp Counter), представляющий собой 64-битный регистр, значение которого увеличивается с каждым тактом центрального процессора. TSC обеспечивает максимально возможное разрешение (наносекунды и доли наносекунд), однако его использование требует осторожности. В многопроцессорных системах значения TSC на разных ядрах могут различаться, а функции энергосбережения современных процессоров могут изменять частоту инкрементации TSC. Тем не менее, для измерения сверхкоротких участков кода TSC остается незаменимым инструментом, к которому операционные системы, такие как QNX, предоставляют доступ через специализированные функции, например, ClockCycles().
Стандарт posix api для работы с системными часами
Стандарт POSIX.1b унифицирует программный интерфейс для взаимодействия со службой времени, вводя структуру struct timespec, которая хранит время в секундах и наносекундах. Основным механизмом получения времени является функция clock_gettime(), которая принимает идентификатор часов. Наиболее важными идентификаторами являются CLOCK_REALTIME (абсолютное время) и CLOCK_MONOTONIC (относительное время). Функция clock_getres() позволяет программе определить минимальный шаг изменения времени (разрешение) для конкретных часов, что критично для оценки погрешности измерений.
Помимо получения времени, API включает функции его установки, такие как clock_settime(), однако их использование обычно ограничено привилегированными процессами. Важно отметить, что стандарт разделяет понятия «время в системе» и «процессорное время». Для анализа потребления ресурсов конкретным процессом или потоком используются идентификаторы CLOCK_PROCESS_CPUTIME_ID и CLOCK_THREAD_CPUTIME_ID, которые учитывают только то время, в течение которого поток фактически выполнялся на процессоре, исключая время нахождения в очереди или блокировки.
