какое системное время на часах

Вся правда об ОСРВ. Статья #27. Системное время

Понятие времени в контексте ОСРВ была введена в одной из предыдущих статей, вместе с идеей о связанных со временем функциях, доступных в ОСРВ.

какое системное время на часах

Тик таймера

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

Обработки таймерных прерываний

Прерывания, генерируемые аппаратным таймером, должны обслуживаться определенным образом в обработчике прерываний (англ. Interrupt Service Routine, ISR), в котором реализованы все функции ОСРВ, связанные со временем. Детали обработчика прерываний таймера в Nucleus SE будут рассмотрены в одной из следующих статей.

Функции, связанные со временем

Nucleus RTOS и Nucleus SE содержат несколько механизмов, связанных со временем:

Точность

А сейчас стоит вкратце рассказать о точности системного таймера.

Точность временных функций напрямую зависит от частоты тактового генератора. Например, если импульсы поступают каждые 10 миллисекунд, а задаче приложения необходима задержка в 100 миллисекунд, ей очевидно нужно 10 импульсов. Однако неизвестно, когда был получен предыдущий импульс: это могло произойти только что или почти 10 миллисекунд назад. Поэтому 100-миллисекундная задержка может занять вплоть до 110 миллисекунд.

Очевидный способ решения этой проблемы — повышение частоты генератора. Если импульсы следуют с интервалами в 1 миллисекунду, 100-миллисекундная задержка никогда не займет больше ста одной миллисекунды. Недостатком такого решения будет то, что обработчика прерываний таймера заберет в 10 раз больше процессорного времени, что будет чрезмерным. Разработчик системы должен найти баланс между необходимой точностью таймера и доступными мощностями процессора.

Настройка системного времени

Как и для большинства объектов Nucleus SE, настройка системного времени по большей части управляется директивами #define в файле nuse_config.h. Основным параметром является NUSE_SYSTEM_TIME_SUPPORT, который активирует механизм поддержки системного времени. Количество объектов указывать не нужно: системное время либо активировано, либо нет.

Выбор ненулевого значения является главным активатором системного времени. Этот параметр используется при определении структур данных, о которых будет подробно рассказано далее в этой статье. Кроме того, ненулевое значение активирует настройки API.

Активация API

Каждая функция API (служебный вызов) в Nucleus SE имеет активирующую директиву #define в файле nuse_config.h. Для системного времени такими символами являются:
NUSE_CLOCK_SET
NUSE_CLOCK_RETRIEVE

По умолчанию, им присваивается значение FALSE, таким образом все служебные вызовы отключены, блокируя включение реализующего их кода. Для настройки системного времени в приложении нужно выбрать необходимые служебные вызовы API и присвоить им значение TRUE.

Ниже приведен фрагмент кода из файла nuse_config.h по умолчанию.

При попытке использования служебного вызова API системного времени при выключенном активаторе системного времени произойдет ошибка компиляции. Если ваш код использует вызов API, который не был активирован, произойдет ошибка компоновки, так как код реализации не был включен в приложение.

Служебные вызовы системного времени

Nucleus RTOS поддерживает два служебных вызова, которые относятся к системному времени и обеспечивают следующий функционал:

Служебные вызовы установки и получения системного времени

С системным временем можно выполнять только операции установки в заданное значение и получения текущего значения. Nucleus RTOS и Nucleus SE предоставляют по два базовых вызова API для реализации этих операций.

Интерпретация значения системного времени зависит от приложения, так как является по своей сути счетчиком количества «тактов» часов, которые произошли с момента последнего сброса счетчика. Для использования этой информации должна быть известна частота генератора.

Установка времени

Любая задача может установить системное время при помощи вызова этой функции API.

Вызов для установки системного времени в Nucleus RTOS

Прототип служебного вызова:
VOID NU_Set_Clock(UNSIGNED new_value);

Параметры:
new_value – значение, которое будет присвоено системному времени

Возвращаемое значение: отсутствует.

Вызов для установки системного времени в Nucleus SE
Этот вызов API поддерживает основной функционал Nucleus RTOS API.

Прототип служебного вызова:
void NUSE_Clock_Set(U32 new_value);

Параметры:
new_value – значение, которое будет присвоено системному времени

Возвращаемое значение: отсутствует

Реализация установки времени в Nucleus SE
Код очень прост. Предоставленное значение записывается в NUSE_Tick_Clock внутри критической секции.

Получение системного времени

Задача может получить значение системного времени при помощи этой функции API.

Вызов для получения системного времени в Nucleus RTOS

Прототип служебного вызова:
UNSIGNED NU_Retrieve_Clock(VOID);

Возвращаемое значение: текущее значение системного времени

Вызов для получения системного времени в Nucleus SE
Прототип служебного вызова:
U32 NUSE_Clock_Retrieve(void);

Возвращаемое значение: текущее значение системного времени

Реализация получения времени в Nucleus SE
Код очень прост. Функция возвращает значение NUSE_Tick_Clock, полученное в критической секции.

Структуры данных

Системное время использует одну структуру данных (находящуюся в ОЗУ), которая представляет из себя 32-битное слово.

Настоятельно рекомендую, чтобы код приложения не использовал прямой доступ к этой структуре данных, а обращался к ней через предоставляемые функции API. Это позволит избежать несовместимости с будущими версиями Nucleus SE и нежелательных побочных эффектов, а также упростит портирование приложений на Nucleus RTOS. Подробная информация о структурах данных приведена ниже, чтобы упростить понимание работы кода служебных вызовов и для отладки.

Данные ОЗУ

Структура данных:
NUSE_Tick_Clock – переменная типа U32, в которой хранится счетчик тактов системного времени.

Эта структура данных инициализируется нулём функцией NUSE_Init_Task() при запуске Nucleus SE. Одна из следующих статей будет содержать полное описание процедур запуска Nucleus SE.

Данные ПЗУ

В ПЗУ нет структур данных, связанных с системным временем.

Объем памяти для системного времени

Как и у всех других объектов Nucleus SE, объем памяти, необходимый для системного времени, предсказуем.

Объем памяти в ПЗУ равен 0.

Объем памяти в ОЗУ (в байтах) всегда равен 4.

Нереализованные вызовы API

Все служебные вызовы API Nucleus RTOS, относящиеся к системному времени, имеют эквивалент в Nucleus SE.

Совместимость с Nucleus PLUS

Как и в случае со всеми другими объектами Nucleus SE, моей целью было обеспечение максимально возможной совместимости кода приложений с Nucleus RTOS. Системное время не является исключением и, с точки зрения пользователя, оно реализовано во многом также, как и в Nucleus RTOS. Вызовы API Nucleus RTOS могут быть напрямую перенесены на Nucleus SE.

В следующей статье мы рассмотрим программные таймеры.

Источник

Как изменить системные дату и время

Часто мы сталкиваемся с необходимостью сменить системное время и дату. Например, при переходе на летнее время или в поездке в местность с другим часовым поясом. На сегодняшний день переход на летнее в России отменен. Если автоматический переход на летнее время все же производится, нужно снять галочку в настройках даты и времени «Автоматический переход на летнее время и обратно». Однако, операционные системы многих пользователей не обновлены, такой галочки в настройках нет и данный переход осуществляется в автоматическом режиме.

Настройки даты также могут изменяться пользователями при обходе контроля лицензий приложений, если они привязаны к дате, а также при использовании VPN. В этой статье рассмотрим некоторые способы изменения системных даты и времени.

Изменение системных даты и времени в операционной системе Windows

Меняем дату и время через параметры даты и времени

Независимо от версии Windows можно сменить дату и время, щелкнув левой кнопкой мыши по часам в правом нижнем углу либо открыть Панель инструментов. В версиях более ранних, Windows 10, необходимо выбрать «Изменение настроек даты и времени», в Windows 10 для изменения даты и времени необходимо открыть «Параметры даты и времени». При этом может потребоваться ввод пароля администратора системы.

Далее меняете часовой пояс, дату и время на необходимые.

какое системное время на часах

какое системное время на часах

Меняем дату и время через командную строку

Чтобы воспользоваться командной строкой для изменения даты и времени, откройте командную строку с правами администратора. В Windows 7 и более поздних версий просто введите в строке поиска командная строка или cmd, щелкните по результату правой кнопкой мыши и выберите запуск от имени администратора. (подробнее о работе с командной строкой можно прочитать тут).

какое системное время на часах

какое системное время на часах

Команда для изменения времени time ЧЧ:ММ:СС (где ЧЧ – часы, ММ – минуты, СС – секунды), введите ее и нажмите Enter на клавиатуре.

Команда для изменения даты date ДД/ММ/ГГГГ (где ДД – день, ММ – месяц, ГГГГ – год), введите ее и нажмите Enter на клавиатуре.

какое системное время на часах

Параметры даты и времени изменятся моментально, но сохранятся до первой перезагрузки. При следующем включении компьютера или после перезагрузки дата и время вернутся к исходному значению.

Такой способ удобен, если изменение системных даты и времени необходимы для временной настройки в целях обхода лицензии или использования VPN.

Источник

Часы на компьютере

Содержание:

какое системное время на часахЧасы на компьютере (или системные часы) – встроенный таймер материнской платы компьютера, который содержит в себе специальный кварцевый механизм, подобный тому, какой используется в обычных современных часах. Он отвечает за правильный отсчёт времени и работает либо от батарейки BIOS, либо от собственного отдельного аккумулятора (на старых материнских платах).

Как правило, часы на компьютере располагаются в углу панели задач, где отображают текущее время, дату и день недели. В большинстве случаев они не требуют вмешательства пользователя. Однако, иногда часы начинают отставать или наоборот спешить. Вы можете, конечно, регулярно синхронизировать их с временем в Интернете, но лучше сразу выяснить причину сбоев, поскольку они могут сигнализировать даже о скором выходе Вашего ПК из строя!

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

Почему отстаёт или спешит время в Windows

какое системное время на часах

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

На написание статей меня очень часто наталкивают различные случаи из реальной жизни, которые связаны с компьютерами. Сегодняшняя статья – не исключение. И поводом для неё стало сразу несколько событий! Во-первых, мне захотелось на своём рабочем компьютере с Windows XP, чтобы рядом со временем и датой в трее отображался день недели. Во-вторых же, на одном из компов стали довольно сильно спешить системные часы.

Всё это и натолкнуло на мысль о том, что неплохо бы сделать статью полностью посвящённую часам на компьютере.

Как работают часы на компьютере

Ещё с самого появления компьютеров возникла необходимость использования в них часов. Для этих целей внедряли различные технологии пока в 1984 году компания IBM не применила стандартизированное решение, которое получило название часы реального времени (англ. real-time clock – сокр. RTC). Это была отдельная микросхема (изначально фирмы Dallas), которая содержала в себе кварцевый резонатор, работающий от собственной встроенной батарейки (позже аккумулятора) на частоте 32768 Гц (как в современных кварцевых часах):

какое системное время на часах

Материнские платы с микросхемами RTC существовали вплоть до 2000-х годов, а затем были вытеснены более современными решениями, в которых часы были интегрированы в южный мост с питанием от батарейки BIOS. По такому принципу и сегодня работает большинство компьютеров, и именно поэтому, даже если ПК отключён, время сохраняется и продолжает идти.

какое системное время на часах

Начальной точкой отсчёта для часов на компьютере является дата изготовления микросхемы южного моста. Именно до этой даты системное время может сбрасываться при различных сбоях. Но иногда оно может начать постепенно отставать или наоборот ускоряться. Давайте разберёмся из-за чего это происходит.

Почему часы на компьютере отстают или спешат

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

Чаще всего причина как отставания, так и спешки часов компьютера, кроется в разряжающейся батарейке-таблетке BIOS (тип CR2032 номиналом 3 Вольта). Чем меньший ток она выдаёт, тем быстрее начинает резонировать кварц встроенного таймера и время начинает спешить. С продолжением разряда (ниже 2 Вольт) тока для таймера становится недостаточно и частота работы кварца падает. Соответственно, на этом этапе время начинает отставать.

какое системное время на часах

Если батарейку не заменить и после этого, то при каждом последующем запуске компьютера время вовсе будет сбрасываться до 00:00 даты производства микросхемы южного моста. Кстати, кроме времени будут сбрасываться и все настройки BIOS, что может привести к тому, что компьютер вовсе не будет нормально загружаться, требуя всякий раз задать нужные настройки!

Однако, иногда даже после замены батарейки проблема остаётся. И причины неправильного отсчёта времени в этом случае могут быть гораздо более серьёзными! Если подобная ошибка наблюдается на новом компьютере, то, вполне вероятно, что микросхема южного моста его материнской платы имеет заводской брак. В этом случае лучше всего заменить всю плату по гарантии.

Самым печальным же случаем, когда уже вряд ли чем-то поможешь, может быть наблюдение подобной проблемы на уже давно используемом компьютере. Если после замены батарейки часы так и продолжают работать неправильно, можно констатировать скорую «кончину» южного моста, что аналогично покупке новой материнской платы. В этом случае наилучшим советом будет начать откладывать средства на покупку новой «мамки», замена которой грядёт в ближайшие месяцы.

Кстати, есть способ проверить, правда ли причина сбоя в «подгулявшем» южном мосте. В некоторых BIOS имеется раздел, в котором отображаются показания датчиков температуры различных компонентов чипсета. Ищите, прежде всего показатели SB (South Bridge – южный мост) и NB (North Bridge – северный мост). Если температура южного моста примерно равна или даже выше, чем у северного, проблема однозначно в нём:

какое системное время на часах

Критической температурой в большинстве случаев является 90 градусов по Цельсию. Если эта температура у Вас ниже (как на скриншоте выше), то можно попытаться, хотя бы временно, спасти Ваш южный мост. Для этого нужно позаботиться о его охлаждении. На некоторых материнских платах в районе южного моста предусмотрены специальные выемки или петли для крепления радиатора либо даже кулера:

какое системное время на часах

Если же крепёжных приспособлений для охлаждающих элементов не наблюдается, можно купить любой небольшой радиатор и приклеить его прямо к микросхеме на специальный теплопроводящий клей (например, отечественный АлСил-5 или китайский Heatsink Plaster):

какое системное время на часах

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

Настройка времени и даты

В различных версиях Windows (за исключением XP и более ранних) внешний вид окна настроек системных часов практически одинаков и вызывается оно либо из контекстного меню часов пунктом «Настройка даты и времени», либо из Панели управления разделом «Дата и время»:

какое системное время на часах

Окно настроек содержит три вкладки. На первой, которая открывается по умолчанию, мы, собственно, и можем задать дату и время. Правда, чтобы сделать это, нужно обладать правами Администратора, поскольку изменение данных настроек контролируется системой UAC. Нажмите на кнопку «Изменить дату и время», подтвердите свои права и в открывшемся окне при помощи календарика укажите текущий день, а в окошко сбоку введите точное время. Кстати, обратите внимание на кнопку «Изменение параметров календаря»! Мы к ней ещё вернёмся:

какое системное время на часах

На первой вкладке также есть кнопка «Изменить часовой пояс». Следите, чтобы он был указан правильно, поскольку данный параметр отвечает за корректную синхронизацию со временем в Интернете и перевод часов на зимнее/летнее время.

Вторая вкладка носит название «Дополнительные часы». Здесь мы можем активировать отображение до двух дополнительных часов, которые находятся в разных часовых поясах мира. Просто активируйте опцию и выберите часовой пояс. Дополнительные часы будут отображаться в небольшом всплывающем окошке при наведении на основные:

какое системное время на часах

Третья вкладка – «Время по Интернету». С помощью этой вкладки Вы можете синхронизировать часы компьютера с серверами точного времени в Сети. По умолчанию в новых Windows синхронизация происходит еженедельно автоматически, но при желании, можно сделать это и вручную. Для этого нужно нажать кнопку «Изменить параметры» (требуется подтверждение UAC), в открывшемся окне в выпадающем списке выбрать сервер синхронизации и нажать кнопку «Обновить сейчас»:

какое системное время на часах

Здесь стоит упомянуть о том, что не все NTP-сервера (NTP – «Network Time Protocol») могут работать корректно и в списке их может быть немного (от 2 до 5). Для более быстрой и точной синхронизации иногда имеет смысл добавить вместо предложенных свои сервера, которые находятся в Вашей стране. Например:

Добавить их для разовой синхронизации можно прямой вставкой в окошко выпадающего списка, однако, при такой вставке сервер не всегда сохраняется после перезагрузки компьютера. Для перманентного сохранения придётся прибегнуть к правке реестра. Для этого запустите Редактор реестра (WIN+R – regedit – Enter), перейдите в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers и отредактируйте или добавьте нужные адреса серверов:

какое системное время на часах

Кроме того, в реестре же Вы можете изменить частоту синхронизации часов. Для этого перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient и найдите в нём параметр SpecialPollInterval. Он содержит время в секундах между обновлениями. По умолчанию здесь стоит значение 604800 секунд, что соответствует ровно 7 дням. Можете установить ежедневное обновление (86400 сек.), открыв редактор параметра, переведя систему счисления в десятичную и введя нужное число.

А напоследок вернёмся к уже упомянутой функции «Изменение параметров календаря», которую можно найти в окне настройки времени. Манипулируя данными параметрами, мы можем изменить отображение времени и даты на системных часах. Правда, из времени можно настроить только 12-часовый или 24-часовый формат, а вот датой интереснее:

какое системное время на часах

На часах в трее по умолчанию выводится текущая дата в виде «день:месяц:год». Формат вывода соответствует формату «Краткая дата», который можно править согласно подсказкам внизу. Добавив в конец формулы, например, «ddd», Вы сможете добиться отображения краткого названия текущего дня недели. А можете и вовсе поэкспериментировать, сочетая дату с любыми надписями, которые нужно брать в одинарные кавычки:

какое системное время на часах

К сожалению, подобные махинации ограничены в длине. Если её превысить, то вторая строчка часов в трее с отображением даты просто исчезнет. Также, данные манипуляции, увы, не работают в Windows XP, поэтому, сколь я ни бился, но на работе заставить часы показывать то, что мне нужно штатными средствами не удалось. Но добиться практически всего можно, используя специальные программы.

Программы для работы с системными часами

Все программы для работы с часами в Windows можно условно разделить на две группы: те, которые направлены на настройку внешнего вида и те, которые нужны для синхронизации времени. Начнём с последних. Их существует довольно много (можете поискать по запросу «программы для синхронизации часов»), но смысл всех сводится к тому, чтобы без правки реестра можно было синхронизировать время со сторонними NTP-серверами.

Общим минусом практически всех программ-синхронизаторов времени является их англоязычность (по крайней мере мне не удалось найти толковых русскоязычных приложений подобного рода). В качестве же хорошего примера такого софта рекомендую разработку нашего бывшего соотечественника Дениса Бабкина под названием tSync:

какое системное время на часах

Программа не требует установки, весит менее мегабайта и содержит в себе всё необходимое для удобной настройки всех нюансов синхронизации часов. По умолчанию она загружается вместе с системой и синхронизирует время раз в сутки. Если нажать кнопку «Time Servers», откроется список NTP-серверов, в который Вы сможете добавить и свои без необходимости править реестр. Вручную для синхронизации можно выбирать любой из доступных серверов, однако по умолчанию время синхронизируется всегда с тем, который стоит первым в списке.

Кстати, программа будет полезна и для системных администраторов, поскольку имеет модуль удалённой синхронизации времени. Чтобы обновить часы на компьютерах по локальной сети, на каждый из них нужно скопировать из архива файл tSyncRemote.exe и поместить его в автозагрузку. Теперь, если активировать галочку «Enable TCP/IP time sync» в основном окне программы, Вы сможете увидеть список доступных удалённых машин, на которых можно быстро обновить время.

Ну а теперь, что касается программ для изменения внешнего вида часов в трее. Их тоже существует весьма много, причём, как платных, так и бесплатных. Но все их можно разделить на две подгруппы. К первой отнесём программы, направленные на всевозможные украшательства, а ко второй – на расширение функционала.

Ярким представителем программ первой категории можно назвать имеющуюся у нас на сайте утилиту LClock:

какое системное время на часах

С помощью данной программы Вы можете менять стиль, цвет и шрифт часов в трее, делая их более оригинальными. Кроме того, LClock имеет встроенный улучшенный календарь с поддержкой напоминаний. Единственный минус – программа не работает на Windows 8 и старше. Для новых систем единственным полнофункциональным аналогом можно назвать Atomic Alarm Clock, но эта программа, увы, платная. Единственным частично работающим аналогом подобного рода оказалась старенькая портативная программка Tray_Clock, но она не заменяет, а только перекрывает стандартные часы.

Я же, если помните, изначально искал программу, которая бы смогла вывести мне день недели на часах в трее Windows XP. Это уже как раз другой тип программ, который направлен на улучшение функционала (хотя некоторые функции кастомизации часов там тоже есть). И такой программой стала AlfaClock Free (скачать можно в архиве с материалами к статье по ссылке внизу):

какое системное время на часах

Данная программа позволяет отрегулировать вручную ширину области панели задач, отведённую под часы, и вывести на самих часах информацию о времени и дате практически в любом нужном Вам формате! К сожалению, как и рассмотренная выше программа LClock, AlfaClock Free работает только на компьютерах с Windows 7 максимум.

Выводы

Как видим, часы на компьютере при всей их кажущейся простоте – вещь довольно интересная. К сожалению, начиная с Windows 8, Microsoft существенно урезала возможности изменения внешнего вида часов на панели задач при помощи сторонних программ. Но, зато дала возможность более гибко настраивать формат их вывода путём штатных настроек. А в Windows 10, например, добавив в реестр параметр ShowSecondsInSystemClock (DWORD (32 бита)) со значением «1» в ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Вы сможете отобразить на часах в трее секунды!

Словом, настраивать есть что, было бы желание. Ну и в качестве заключения, хотел бы выразить небольшую просьбу. Если, вдруг, Вам где-то попадутся хорошие бесплатные программы для улучшения вида часов в новых версиях Windows, было бы очень здорово, если бы Вы написали о них в комментариях. Буду очень признателен!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *