Главная » Ядро Linux » Таймеры и управление временем

0

тслеживание хода времени очень  важно  для ядра.  Большое количество функций, которые выполняет ядро, управляются временем (time  driven), в отличие

от тех функций, которые выполянются по событиям

(event  driven).  Некоторые из

этих функций выполняются периодически, как, например, балансировка очередей выполнения планировщика или обновление содержимого экрана. Такие  функции вызываются в соответствии с постоянным планом, например 100 раз в секунду.  Другие функции, такие  как отложенные дисковые операции ввода-выпода, ядро  планирует на выполнение в некоторый относительный момент  времени в будущем.  Например, ядро  может  запланировать работу на выполнение в момент  времени, который наступит позже  текущего  на 500 миллисекунд. Наконец, ядро должно  вычислять время работы  системы (uptime), а также  текущую  дату и время.

Следует  обратить  внимание на разницу между относительным и абсолютным временем.  Планирование выполнения некоторой работы  через  5 секунд  в будущем  не требует учета абсолютного времени, а только  относительного (например, через пять секунд  от текущего  момента времени). В рассмотренной ситуации расчет  текущей даты и времени требует от ядра не только  учета хода времени, но и абсолютного измерения времени. Обе концепции являются важными для управления временем.

Также  следует  обратить  внимание па отличия между  событиями,  которые возникают периодически, и событиями, которые ядро планирует на выполнение в некоторый фиксированный момент  времени в будущем.  События, которые возникают периодически, скажем  каждые  10 миллисекунд, управляются системным, таймером. Системный таймер — это программируемое аппаратное устройство, которое  генерирует аппаратное прерывание с фиксированной  частотой. Обработчик этого  прерывания, который называется прерыванием таймера (timer interrupt), обновляет значение системного времени и выполняет периодические действия. Системный таймер  и его прерывание являются важными для работы  оператщонной системы Linux, и в текущей  главе им уделяется  главное  внимание.

1   Если  быть точными ,  то функции, которы е управляются  временем, также  управляются  и  событиями.  В этом  случае  событие  соответствует  ходу времени.   В это й  главе  будут рассмотрены,  в основном,  события,  управляемыми временем, так как  они  встречаются  очен ь часто и являются  важными для  ядра.

Крометого,вэтойглавебудутрассмотреныдинамическиетаймеры(dynamictimers)— средства, позволяющие планировать события, которые выполняются один  раз, после того как истек некоторый интервал времени. Например, драйвер  накопителя на гибких  магнитных дисках  использует таймер, чтобы  остановить двигатель  дисковода, если  дисковод неактивен в течение  некоторого периода времени. В ядре  можно динамически создавать  и ликвидировать таймеры. В данной главе рассказывается о реализации динамических таймеров, а также  об интерфейсе, который доступен  для использования в программном коде.

Источник: Лав,  Роберт. Разработка ядра  Linux, 2-е  издание. : Пер.  с англ.  — М.  : ООО  «И.Д.  Вильяме» 2006. — 448 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии