Как посмотреть откуда компьютер берет время

Обновлено: 06.07.2024

Степень точности времени компьютера называется слоем. Источник наиболее точного времени в сети (например, аппаратные часы) занимает самый нижний уровень страты. Этот источник точного времени называется эталонными часами.

Как компьютеры узнают время?

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

Откуда серверы NTP берут свое время?

Он основан на RFC 1361/2030: он получает свое время с указанных серверов времени компьютера, на котором он установлен. Этот протокол нельзя настроить для получения времени от альтернативного сервера времени, если основной сервер не работает. Это можно назвать короткой версией клиентского программного обеспечения NTP.

Как компьютеры синхронизируют время?

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

Насколько точны компьютерные часы?

К сожалению, все обычные часы не очень точны. Это просто потому, что частота, увеличивающая время, никогда не бывает абсолютно правильной. Даже ошибка всего 0,001% приведет к тому, что часы отключаются почти на одну секунду в день.

Как я могу узнать, выключен ли мой компьютер?

Почему мое компьютерное время продолжает меняться?

Сколько серверов NTP я должен использовать?

у вас должно быть настроено как минимум 3 сервера для кворума. NTP не имеет двоичных состояний, таких как диспетчер кворума кластера, поэтому это правило не применяется.

Требуется ли Интернет для NTP?

Сколько существует серверов NTP?

Почему часы не синхронизируются?

Как мне автоматически установить время и дату на моем компьютере?

Зачем нужна синхронизация времени?

Важность синхронизации времени для вашей сети

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

Почему компьютерные часы дрейфуют?

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

Как работают системные часы?

Как Windows отслеживает время?

Когда вы запускаете Windows, она получает прямой доступ к памяти часов реального времени (RTC) и использует свои значения даты и времени для установки даты и времени компьютера. Прерывания по таймеру поддерживают компьютерное время во время работы Windows. Демон времени в Windows запускается примерно один раз в час после запуска Windows.

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

Как ваш компьютер узнает сколько сейчас времени?

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

В большинстве случаев устройства используют протокол NTP для синхронизации даты и времени. Это специально разработанный протокол, который способен учитывать задержки на передачу информации. В последней реализации, точность при работе через интернет составляет 10 мс, а в локальных сетях всего 0,2 мс! С другой стороны, смартфоны чаще всего полагаются на данные, полученные от операторов мобильной связи. Так, отпадает необходимость вручную устанавливать часовой пояс, хотя сами операторы все равно используют NTP для синхронизации и получения информации о времени.

Почему так важно следить за временем

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

Как компьютеры запоминают сколько сейчас времени?

Все современные устройства оснащены внутренними часами и элементом питания для поддержания их работы. Именно поэтому даже выключив компьютер и отключив интернет, в системе сохраняется информация о времени. Возможно вы сталкивались с проблемой, когда при каждом включении выдается ошибка о нарушении настроек BIOS и о том, что необходимо заново установить время. Такая ситуация происходит в тех случаях, когда батарейка просто села и уже не может поддерживать работу системных часов и сохранение настроек UEFI/BIOS.




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

Обзор таймеров в архитектуре PC

Источников времени в системе может быть несколько. Прикладные программы редко обращаются к каким-либо из них напрямую. Вместо этого используются всевозможные API, предлагаемые использованным языком программирования (например, C++11 &lt chrono &gt), средой исполнения (например, gettimeofday из POSIX или QueryPerformanceCounter на MS Windows), или даже системными вызовами используемой операционной системы.

Самой ОС также необходимо знать время и уметь отмерять его отрезки для планирования работы пользовательских потоков, учёта потреблённых ими ресурсов, профилировки производительности, управления энергопотреблением и т.п. При этом сама ОС работает напрямую с интерфейсами, предоставляемыми аппаратурой. Так как таймеров присутствует много, современные ОС умеют выбирать один «центрально» используемый в начале загрузки, исходя из своих представлений о «качестве» обнаруженных устройств (например, на некоторых системах часть таймеров может быть занесена в «чёрный список» из-за известных проблем в работе) или же настроек пользователя (параметр clocksource у ядра Linux и опции useplatformclock, tscsyncpolicy, disabledynamictick у BCDEDIT в Windows).
Опишу наиболее часто встречаемые устройства, являющиеся часами и таймерами в PC.

Общераспространённые

Часы реального времени (Real Time Clock, RTC) — источник текущей даты и времени для нужд ОС. Типичное разрешение этого таймера — одна секунда. Все системы, удовлетворяющие стандарту ACPI, имеют чип RTC, совместимый с Motorola MC146818, присутствовавшем в оригинальном IBM PC/AT с 1984 года. В современных системах RTC обычно интегрирован в набор системной логики южного моста на материнской плате (что означает довольно большую задержку при чтении). Энергонезависимость этого таймера обеспечивается специальной батарейкой. Принципы программирования RTC вызывают ностальгию по BCD-числам и проблеме Y2K.

Это удивительно, но первые системы IBM PC не имели в себе RTC. При каждом старте компьютера MS-DOS выдавала запрос на установку текущей даты и времени.
И даже в наше время не каждая вычислительная система способна хранить время между перезагрузками. Например, оригинальная RaspberryPi не имеет встроенного RTC (это было сделано для уменьшения стоимости), и правильная установка текущей даты/времени при загрузке системы зависит от синхронизации с сетевыми NTP-серверами.

Programmable Interval Timer (PIT) 8253 или 8254 от Intel — стандартный счётчик и таймер, имеющийся в PC с самого начала существования этой платформы (1981 год). Как и RTC, изначально был отдельной микросхемой, а ныне является частью системной логики. Довольно интересное устройство, содержащее три таймера (хотя последние два всегда были зарезервированы под задачи обновления ОЗУ и работу PC-спикера соответственно) и позволяющее запрограммировать их в различные режимы: периодические прерывания, однократное (one-shot) прерывание по таймауту, меандр и т.д.

Первый канал PIT до сих пор может использоваться ОС как источник прерываний для работы вытесняющего планировщика задач. Однако по современным меркам он не очень удобен в работе: низкая частота осциллятора 1193181,8 Гц (странное значение — это историческое наследие от частоты развёртки NTSC), ширина счётчика всего 16 бит (частое переполнение) при ширине регистров статуса и команд всего в восемь бит (т.е. приходится передавать или читать значение по частям), да и доступ к регистрам через медленный и негибкий механизм PIO (команды IN/OUT процессора).

Local APIC (advanced programmable interrupt controller), встроенный во все современные процессоры Intel (начиная с архитектуры P54C) и который в своём составе имеет ещё и таймер. Более того, каждый логический процессор имеет свой собственный LAPIC, что может быть удобно для выполнения работы, локальной для текущего ядра, без необходимости управления ресурсами. Однако, данное устройство не имеет фиксированной известной частоты; последняя скорее привязана к частоте ядра. Поэтому перед использованием программе необходимо её вычислить (калибровать), а для этого нужно дополнительное референсное устройство. Режимы, поддерживаемые LAPIC: однократное прерывание, периодические прерывание, и период, определяемый TSC.

Таймер в составе ACPI, почему-то называемый Performance Monitoring Timer (PMTIMER) — ещё одно устройство, которое поддерживается всеми системами, реализующими стандарт ACPI, с 1996 года. Данный таймер имеет частоту 3.579545 МГц, ширина регистра-счётчика может быть 24 или 32 бита. Сам таймер всегда активен при включенном питании системы и не зависит от режима работы центрального процессора.

High Precision Event Timer (HPET) — устройство, созданное как замена устаревшему PIT. Согласно стандарту, HPET должен содержать осциллятор, работающий с фиксированной частотой по крайней мере в 10 МГц, величину которой можно программно прочитать из его статусного регистра, и монотонно увеличивающий значение счётчик шириной в 64 бита. Также он должен содержать минимум три компаратора шириной в 32 или 64 бита, которые и используются для генерации прерываний по истечении запрограммированных периодов времени. Как и PIT, он способен работать в периодическом режиме или в режиме однократного прерывания. При этом метод его программирования (MMIO вместо PIO) удобнее и быстрее, чем у PIT, что вместе с повышенным разрешением, позволяет задавать интервалы более точно и с меньшей задержкой. Требуемая стабильность генератора равна 0,05% для интервалов длиннее 1 мс и 0,2% для промежутков короче 100 мкс; много это или мало — зависит от приложений.

Несмотря на то, что HPET уже давно присутствует в PC (с 2005 года), операционные системы не торопятся начать его использовать. Частично это вызвано не самым удобным способом задания интервалов с помощью возрастающего счётчика вместо убывающего — из-за немгновенности операций существует риск «не успеть» и задать событие в прошлом. Зачастую ОС используют таймер из APIC или PMTIMER, или же функциональность TSC, использующую такты процессора в качестве источника времени.

Трудная судьба инструкции RDTSC

История TSC достаточно интересна и поучительна, чтобы остановиться на ней подольше.
Сама идея очень прозрачная — использовать в качестве источника времени сам процессор, а точнее его тактовый генератор. Текущий номер такта сохраняется в регистре TSC (timestamp counter).
С помощью TSC можно как узнавать время от начала работы, так и замерять интервалы времени с помощью двух чтений. TSC также работает как будильник в связке с APIC в режиме TSC deadline.

  • RDTSC (Read TimeStamp Counter — прочесть метку времени) появилась в Intel® Pentium™. Она записывает в пару регистров EDX:EAX 64-битное число тактов, прошедших с момента последнего включения питания/перезагрузки текущего ядра процессора. В отличие от всех ранее описанных устройств, которые доступны только привилегированному коду, RDTSC по умолчанию может исполняться на любом уровне привилегий (хотя ОС может динамически отключить поддержку RDTSC в пользовательском режиме, и тогда она будет вызывать исключение).
  • RDMSR [0x10] — чтение модель-специфичного регистра (MSR) IA32_TIMESTAMP_COUNTER также возвращает текущее TSC. Данная инструкция допускается только в привилегированном режиме, и некоторые ОС активно используют именно её для чтения TSC (хотя лично мне непонятно, почему). Полезное свойство состоит в том, что через MSR значение TSC можно не только читать, но и изменять, используя инструкцию WRMSR.
  • RDTSCP — Наличие её можно установить, проверив соответствующий лист CPUID. О двух её отличиях от RDTSC будет сказано чуть ниже.

Что ж, TSC — вполне естественная штука с простой логикой и простым сценарием использования, которая должна обладать многими полезными свойствами: высокое разрешение (один такт ЦПУ), низкая задержка при чтении (десятки тактов), редкие переполнения (64-битного счётчика должно хватать минимум на 10 лет), монотонность чтений (ведь счётчик всегда увеличивает своё значение), равномерность (процессор всегда работает), согласованность с другими таймерами (при старте системы можно выставить нужное значение записью в MSR).
Разве что-то могло пойти не так? На пути к успешному использованию TSC в качестве основного средства измерения времени в PC встала последующая эволюция процессоров. Новые возможности, появившиеся в процессорах после Pentium, «испортили» RDTSC и много лет мешали использовать её как основной таймер в популярных ОС. Так, в 2006 году один из Linux-разработчиков Ingo Molnar писал:

Мы наблюдали, что в течение 10 лет ни одной реализации gettimeofday, основанной на TSC и работающей в общем случае, не было написано (а я написал первую версию для Pentium, так что и я в этом повинен), и что лучше мы обойдёмся без неё.

We just observed that in the past 10 years no generally working TSC-based gettimeofday was written (and i wrote the first version of it for the Pentium, so the blame is on me too), and that we might be better off without it.

Отмечу, что со временем в архитектуру IA-32 вносились коррективы, устранявшие проявившиеся недостатки, и в настоящий момент TSC может (пока опять не сломали) быть использован в том качестве, в котором он задумывался.

  • Внеочередное исполнение (Out of Order Execution, OoO). Начиная с Intel® Pentium™ Pro (1995 г.), процессор может исполнять машинные инструкции в порядке, отличном от использованного в программе, или даже параллельно (если они не зависят друг от друга). Это означает, что исполнение RDTSC может быть задержано или, наоборот, выполнено раньше, чем того требует последовательный программный порядок. Из-за этого, например, невозможно понять, сколько каких инструкций исполнилось между двумя вызовами RDTSC — нельзя надёжно измерить длительность участка кода. В результате не гарантируется монотонность показаний.
    RDTSC не является инструкцией, сериализующей поток исполнения. Поэтому обычно используется «забор» из сериализующих команд вокруг неё, например, CPUID. Это, конечно, не выглядит очень изящно. В последующих обновлениях архитектуры появилась RDTSCP — инструкция, частично сериализующая поток исполнения, поэтому она не нуждается в дополнительных барьерах. У неё есть ещё одно хорошее свойство, но о нём чуть позже.
  • Управление энергопотреблением. Значение TSC увеличиваетсся каждый такт процессора. Всегда ли такт имеет один и тот же период, и всегда ли следующий такт следует сразу за предыдущим? Для Intel® Pentium™ это выполнялось. Для современных процессоров ответы на оба вопроса отрицательные. Процессор довольно значительную долю времени может быть приостановлен для экономии энергии (C-состояния). Исполняя инструкции, он может использовать динамическое изменение частоты для экономии энергии (P-состояния) или наоборот, для максимизации производительности (Turbo-состояния). Из этого следует, что просто счётчик тактов не будет обладать ни равномерностью, ни согласованностью.
    И для этой проблемы было представлено (начиная с Nehalem) решение в виде т.н. invariant TSC, темп изменения которого не зависит от C- и P-состояний отдельных ядер.
  • Многопроцессорность и многоядерность. В системе с несколькими потоками, ядрами или процессорами у каждого из логических процессоров будет свой TSC. Это создаёт не одну, а целых две сложности.
    Во-первых, значения, возвращаемые RDTSC на различных логических процессорах, могут оказаться сдвинутыми из-за неодновременности моментов инициализации ядер. Более того, из-за неустранимого дрейфа частот отдельных таймеров эта разница могла непредсказуемым образом флуктуировать в процессе работы.
    Во-вторых, перестаёт работать возможность надёжно измерять время в пользовательских приложениях. Без дополнительных ухищрений вроде прописывания affinity в любой момент программа может быть вытеснена с одного процессора и затем продолжена на другом. Если процесс, желающий измерить длительность между двумя событиями, в процессе работы был перемещён ОС с одного ядра на другое, два чтения RDTSC, выполненные им, не будут связаны.
    Для компенсации первой проблемы в последних поколениях процессоров для TSC заводится единый источник сигнала. Показания TSC со всех ядер при этом должны быть одинаковыми.
    Для устранения второго недостатка RDTSCP обладает ещё одним свойством, позволяющим пользовательскому приложению детектировать миграцию в процессе измерения интервала времени. Кроме значения TSC в EDX:EAX она возвращает значение отдельного модель-специфичного регистра IA32_TSC_AUX в ECX. Обе записи происходят атомарно, т.е. TSC и TSC_AUX всегда берутся с одного логического процессора. В начале работы ОС должна выставить уникальные значения TSC_AUX на всех процессорах системы. Совпадение считанных ECX для двух вызовов RDTSCP гарантирует, что они были выполнены на одном процессоре; в противном случае на разницу двух TSC полагаться нельзя, и измерение следует повторить. Вообще этот механизм может иметь и другие применения; например, с помощью него можно оповещать приложение не только о факте миграции, но и просто о вытеснении, также способном исказить результаты измерений времени. Вместо прикладных программ могут выступать и «привилегированные»: гипервизор Xen использует данный механизм для нотификации DomU систем о миграции между машинами.
Прочие устройства

Выше я описал наиболее часто распространённые и используемые устройства по определению времени. Конечно же, конкретные системы могут иметь дополнительные устройства, уникальные для процессора, интегрированной логики или даже в форме специализированных периферийных устройств (например, сверхточные атомные часы). Степень их доступности из программ зависит от того, существует ли драйвер для конкретного устройства в выбранной ОС. Так, пробежавшись по исходникам Linux, я нашёл как минимум ещё два поддерживаемых источника времени для сборок x86: устройство NatSemi SCx200 в системах AMD Geode, и Cyclone для систем IBM x440. К сожалению, в Интернете не очень много документации по ним.

  • PowerPC. Спецификации для 32- и 64-битных систем постулируют наличие регистра TB (time base) шириной в 64 бита, доступного на чтение пользовательским приложениям и на чтение/запись из супервизора. Изменения TB должны монотонно не убывать и не обязаны быть равномерными, а их частота зависит от реализации. Также из режима супервизора доступен 32-битный регистр DEC (decrementer), позволяющий программировать прерывание через промежуток времени. Его значение убывает до нуля с той же самой частотой, с которой возрастает TB.
  • ARM. В целом наличие средств измерения времени сильно зависит от выбранного семейства. На архитектуре ARM11 регистр CCNT может быть использован для чтения текущего номера такта; однако ширина его всего 32 бита, что означает переполнение примерно каждые 10 секунд на системе с частотой в 400 МГц. На системах Cortex M3 присутствует устройство Systick шириной 24 бита, а скорость его изменения специфицируется значением из регистра TENMS.
  • Intel ® IA-64 (Itanium). На данных системах в качестве счётчика тактов используется 64-битный регистр ar.itc (interval time counter). Для программирования периодов времени может использоваться набор регистров cr.itm (interval timer match), cr.itv (interval timer vector). Первый задаёт значение ITC, при котором сгенерируется прерывание, а второй определяет его номер.
  • SPARC v9. Архитектура подразумевает наличие 63-битного регистра TICK. Последний 64-й бит этого регистра контролирует, разрешено ли непривилегированному приложению читать время.

Заключение

Я надеюсь, что из этой заметки стало понятно, что работа со временем внутри компьютера на системном уровне на самом деле далека от тривиальной. Требования к устройствам, поставляющим время, зависят от решаемой задачи, и не всегда легко найти полностью подходящий вариант. При этом сами устройства зачастую содержат «архитектурные особенности», способные сломать голову несчастному программисту.
Однако это всё архитектурная присказка к симуляционной сказке. На самом деле мне хотелось рассказать о том, как можно моделировать весь этот зоопарк устройств. В следующей статье я опишу, как проявляется капризная природа времени при создании виртуальных окружений — симуляторов и мониторов виртуальных машин. Спасибо за внимание!

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

Какое-то время назад все шумели по поводу ошибки 2000 - перехода компьютеров в новое тысячелетие. Даже создавались игры и снимались фильмы на тему того, что может случиться, когда произойдет сбой, а вся техника сойдет с ума. А все из-за того, что некоторые производители не подумали, что их программы доживут до 2000 года и выделили только две цифры под год.

Но какие все-таки ошибки могут возникать при проблеме 2000? И грозит ли нам подобное в будущем?

Разные часы

computer time

Для начала следует сказать, что в компьютере есть разные часы. Есть аппаратные (которые идут всегда) и программные (которые работают только когда компьютер включен). Для того, чтобы аппаратные часы работали даже при отключенном питании, в компьютере имеется небольшая батарейка (CMOS Battery). Таким образом, при включении система компьютера берет время из этих часов, после чего уже может сама отсчитывать время. Если вы изменяете время системы, она сразу корректирует и время аппаратное. Заметим, что аппаратные часы хранят локальное время, а не по Гринвичу.

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

Ошибка 2000

Откуда взялась ошибка 2000? Да просто разработчики операционной системы DOS не учли, что для хранения даты может понадобиться больше двух цифр. Поэтому при наступлении 2000 года система могла начать считать, что наступил год 1900. Или, как вариант, год 1980, если система отсчитывает от него.

К каким ошибкам в реальности это приводило? Нет, техника не сошла с ума. Атомных взрывов не было. А вот некоторые программы бухгалтерского учета действительно перестали работать корректно, в том числе, первые версии 1с. Просто попытка посчитать итоги на 2000 год приводила к тому, что система считала их на 1900 и выдавала нули. В более продвинутых была возможность задать "год начала столетия", и, тем самым, все-таки получить сдвинутый рабочий интервал в 100 лет.

Я лично столкнулся с проблемой 2000. Имевшаяся у меня версия MikTeX больше не могла устанавливаться. Для успешной установки необходимо было временно установить время до 2000 года. Так что, хоть ничего безумного и не произошло, с неудобствами пользователям столкнуться пришлось. Но тогда еще не так активно использовались компьютеры! Что же ждет нас в будущем?

Ошибка 2038

А вот эта проблема приходит к нам из Unix-подобных систем. Изначально в них было заложено 32-битное время, измеряемое в секундах, с отсчетом от 01.01.1700 - года принятия Григорианского календаря (см. комментарии, там исправление). При этом в переменной также используется знак, поэтому на деле используется только 31 бит, что приводит к тому, что время закончится в 03:14:07, вторник, 19 января 2038 года.

Что произойдет в этот момент на 32-битной Unix-системе? Время станет отрицательным. Компьютер попытается записать в аппаратные часы год 1700 (или еще меньший), биос этого не примет и запишет 1900 или 1980. Так или иначе, время снова закольцуется, приводя к сбою в программах, этого не ожидающих.

И дело даже не только в Unix-системах. Многие программы также используют такой стиль хранения времени, например, дата файла, находящегося в zip-архиве, хранится именно так. Так что проблемы будут у всех. А вот серьезность бедствия предсказать пока сложно.

Ошибка 2100

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

Кстати, эту уязвимость уже использовали хакеры для взлома Windows Vista. Перед установкой предлагалось установить время на конец 2099 года. В таком случае при прибавке 30 дней (периода, в течении которого можно использовать Висту без активации) получалась странная дата, что приводило к отключению таймера.

Ошибка 10000

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

Ошибка 292 277 026 596

А это уже совсем из разряда фантастики. В современных Unix-системах используется 64-битное время. Оно кончится лишь в 15:30:08, воскресенье, 4 декабря 292277026596 года. Доживем?

Надеюсь, я достаточно прояснил, как устроено системное время компьютера. Если есть вопросы, пишиьте!

Отобразить на экране информацию о загрузке ЦП компьютера в реальном времени
Добрый день ! Помогите пожалуйста с кодом на с++. Привести исходный код программы, отображающей на.

Откуда берет дату?
Здравствуйте, я недавно только начал изучать php, и наткнулся на один php файл, точнее плагин на.

Откуда Биос берет код?
Откуда Биос берет код?)

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

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

Когда-то давно, на самых первых IBM PC не было часов реального времени. Это была модель IBM PC XT. Так у нее ниоткуда. Запустив комп ты должен был сам время и дату ввести командами time и date, а иначе комп считал что в момент включения питания полночь 1 января 1980 года и начинал дальше время отсчитывать от этой точки. Поскольку вводить было лень, то . так "в 1980-м году" и работали. Собсно, если дата создания у файла оказывалась 1 января 1980 года, сразу было ясно, что дату на компе не выставляли. Вот если в отдельных деталях не склероз, давно это было.

Откуда программа берёт звук?
Здравствуйте. Недавно скачал программу SpectraLab для выявления частот и амплитуд, и у меня.


Откуда функция ПолучитьМакет() берёт параметры?
Здравствуйте, возникла проблема, после выполнения функции Макет = ПолучитьМакет("МойМакет"); в.

Откуда берет значения функция _msize?
Откуда берет своё значение _msize? Она обращается к какой-то переменной или проходит по выделенной.


Откуда cmd берет тайлы букв?
читаю форум, в соседней ветке обсуждают коды нажатия клавиш клавиатуры. подумал, как происходит.

Найти, откуда берет путь инсталлятор
добрый день. неправильно снес программу, поудалял файлы с файловой системы. через панель.

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

Читайте также: