Проблема 2000 года и пути ее решения


Для компьютерного и офисного оборудования проблема смены тысячелетий заключается в возможной неверной работе модуля Real Time Clock (RTC, Таймер Реального времени), который отвечает за изменение даты и времени, использующегося при работе системы, например, при записи файлов на диск.

Проблема с RTC состоит в том, что изменяются только две последние цифры в написании года, а цифры, указывающие на значение текущего тысячелетия, не изменяются. Хотя модуль и поддерживает все значения, он не поддерживает переход от одного тысячелетия к другому. В результате, когда часы покажут 00:00, 1 Января, 2000 года, системный таймер не сможет переключиться с 1999 года на 2000 , а перейдет с 1999 на 1900 , так как изменяются только последние две цифры.

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

Истоки проблемы 2000 года

Наличием аппаратной "проблемы 2000 года" в компьютерах класса IBM PC мы обязаны двум компаниям — Motorola и IBM. Первой — за то, что ею была создана микросхема аппаратных часов реального времени (RTC — Real-Time Clock) MC146818, не содержащая двух старших разрядов года, а второй — за то, что именно эта микросхема была использована при разработке компьютера IBM PC AT (PC XT и более ранние модели не имели энергонезависимых часов вовсе). В разных вариантах исполнения и под разными названиями (DS1287, КР512ВИ1) эту микросхему или ее модификации производили многие компании. Все эти устройства давным-давно не применяются при разработке новых компьютеров, однако для сохранения программной совместимости архитектура этого таймера полностью повторяется производителями интегрированных чипсетов на протяжении уже почти четверти века. Производители микросхем RTC (а основными на сегодня являются Dallas Semiconductor, Benchmarq Technology, SGS-Thomson и VIA Technologies) выпускают сегодня широчайшую номенклатуру устройств, имеющих полноразрядные счетчики года и коррекцию високосных лет. Однако совместимость — вопрос очень тонкий, и многие производители чипсетов и системных плат предпочитают использовать старую архитектуру, чтобы избежать изменений в BIOS и возможной несовместимости со старым ПО. Делается это с целью полной гарантированной совместимости со старым программным обеспечением.

Как узнать, есть ли проблема 2000 года?

Запустить тест, например NSTL. Или выбрать в Интернете любую тестовую программу, вот список специализированных сайтов:

Но можно обойтись и без специальных тестовых программ.

Проверка ОС

  1. Для выполнения теста желательно загрузить операционную систему до монитора командной строки без каких-либо драйверов и резидентных программ, а также отключить компьютер от локальной сети.
  2. С помощью команд date и time (или предназначенных для этого команд вашей ОС) установить системную дату на 31 декабря 1999 года, а время — на 23:59 (для DOS и Windows это команды date 31-12-1999 и time 23:59).
  3. Проверить правильность установки даты и времени (для DOS и Windows это те же команды без аргументов).
  4. Подождать более одной минуты.
  5. Проверить системную дату еще раз. Если она соответствует 1 января 2000 года, то ваша ОС не имеет "ошибки 2000 года".

Проверка BIOS

  1. Войти в BIOS Setup (здесь надо отметить, что имеется в виду программа Setup, располагающаяся в ПЗУ BIOS, а не внешняя, запускаемая из операционной системы. Если запущена последняя, то на результат теста может влиять сама ОС).
  2. Установить дату на 31 декабря 1999 года и время на 11:59PM (в большинстве BIOS формат времени и даты соответствует американскому).
  3. Подождать более одной минуты, наблюдая за изменением даты. Если она корректно меняется на 1 января 2000 года, то ваша BIOS не содержит "ошибки 2000 года".

Проверка аппаратного таймера (RTC)

  1. Войти в BIOS.
  2. Установить дату на 31 декабря 1999 года и время на 11:59PM.
  3. Выйти из программы Setup с сохранением установок. Выключить компьютер. Подождать более одной минуты, включить компьютер и, не допуская загрузки ОС, войти в BIOS Setup.
  4. Если дата установлена на 1 января 2000 года, то аппаратный таймер вашего компьютера не содержит "ошибки 2000 года".

Проверку можно выполнить и для других "опасных" дат.

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

Есть ли еще критические даты?

Наиболее критичными и подлежащими обязательному тестированию переходами дат являются следующие:

  • 08.09.1999 — 09.09.1999,
  • 09.09.1999 — 10.09.1999,
  • 31.12.1999 — 01.01.2000,
  • 28.02.2000 — 29.02.2000,
  • 29.02.2000 — 01.03.2000.

Решение проблемы 2000 года

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

Производителей BIOS немного, поэтому укажем кратко, какие версии их продуктов не имеют проблем с 2000 годом.

AMI BIOS

Все версии AMI BIOS, выпущенные до 15 июля 1995 года корректно воспринимаю даты после 2000 года, но не осуществляют автоматической коррекции. Поэтому в компьютерах, имеющих BIOS этих версий, придется один раз скорректировать дату. Сделать это надо будет уже после наступления 2000 года, например 1 января.

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

Award BIOS

Все версии Award BIOS, выпущенные до 26 апреля 1994 года корректно воспринимаю даты после 2000 года, но не осуществляют автоматической коррекции. Поэтому в компьютерах, имеющих BIOS этих версий, придется один раз скорректировать дату вручную. Сделать это надо будет уже после наступления 2000 года, например 1 января.

Все версии Award BIOS, выпущенные с 26 апреля 1994 года по 31 мая 1995 года не воспринимают даты после 1999 года и требуют переустановки системного времени при каждой перезагрузке системы. Исправленную версию нужно получить у производителя системной платы или, в крайнем случае, обратиться непосредственно в Award Software.

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

Заметим, что версии Award BIOS, выпущенные в период с 31 мая 1995 года по 18 ноября 1996 года могут не пройти тест NSTL, но это не означает, что имеет место проблема 2000 года. Это виноват сам тест NSTL.

Phoenix BIOS

Phoenix BIOS, имеющие версию 4.0 Release 5 и старше корректно воспринимаю даты после 2000 года и автоматически производят переход от 1999 года к 2000 году. Все более ранние версии Phoenix BIOS правильно воспринимают даты после 2000 года, но требуют однократной корректировки даты вручную. Сделать это надо будет уже после наступления 2000 года, например 1 января.

ALi BIOS

Информация от самой компании ALi пока недоступна. Поэтому придется все проверить опытным путем. Достоверно известно только то, что биосы от Acer с версией от 2.0 проблем не имеют.

Некоторые системные платы имеют версии BIOS не обновляемые программно, т.е. не Flash.

Для таких плат их производители выпустили специальные утилиты. Эти утилиты загружаются в оперативную память компьютера и, оставаясь в ней резидентно, производят корректировку даты при переходе к 2000 году. Эту TSR программу нужно запустить один раз, после перехода из 1999 в 2000 год. Эти программы, как и новые версии BIOS можно загрузить бесплатно из Интернета.

Некоторые фирмы предлагают аппаратное решение, исключающее проблему на уровне RTC и BIOS: установку дополнительной платы, содержащей корректно работающие часы реального времени и собственную микросхему BIOS (разумеется, не замещающую BIOS самого компьютера, а добавляющую процедуры работы с новым RTC). Принцип работы этих устройств аналогичен коррекции, применяемой в новых версиях BIOS: перехват обращений к функциям, связанным с датой, проверка ячейки CMOS, содержащей значение века, и ее коррекция при необходимости. Подобные устройства имеет смысл применять в случаях, когда по каким-либо причинам невозможно обновление BIOS, — они не требуют драйверов и устанавливаются в один из слотов системной платы.

Разумеется, такое решение стоит денег. Но гораздо проще и дешевле загрузить бесплатные обновления BIOS из Интернета и, в случае необходимости, произвести ручную корректировку даты.

Если проблема 2000 года так легко решается, то почему такой шум в прессе по этому поводу?

Эта проблема решается легко для аппаратного обеспечения Вашей системы и только для некоторого программного обеспечения. Но существует огромное число баз данных и приложений, например, бухгалтерских, которые используют только 2 цифры для представления значения года. В основном, эти системы используются банками, государственными учреждениями и другими крупными конторами. Именно в этом случае проблема 2000 года может проявить себя в полной мере. Последствия от неподготовленности программ, могут оказаться непредсказуемыми. И если в случае использования их индивидуальными пользователями, ничего страшного произойти не должно, то возникновение проблемы Y2K в массовом масштабе может повлечь за собой значительные потери.

Также много электрического оборудования использует RTC. Опять таки, использование такого оборудования в быту, даже на стыке столетий, вряд ли может вызовать какие-либо серьезные последствия, однако неподготовленное промышленное оборудовании может вызвать прямо или косвенно большие проблемы.

Для поиска решения проблемы для этих систем необходимо потратить много времени и денежных средств, но и то и другое люди тратить не любят. И вместо попыток инвестировать деньги и время для решения этой проблемы большинство пытается закрыть на нее глаза и надеяться на лучшее. Что же, по оценкам западных экспертов Россия сможет справиться с последствиями проблемы Y2K только к середине 2000 года.

Дополнение

Многочисленными тестами установлено, что RTC старого образца имеет одну существенную погрешность: при переходе от 31 декабря 1999 к 1 января 2000 года значение тысячелетия (хранящееся в ячейке с адресом 32h) остается неизменным (19 вместо 20). Все современные BIOS умеют корретно отрабатывать данную ситуацию, и в случае использования программ, которые получают значение даты, используя прерывания BIOS, данная проблема не дает о себе знать. Тем не менее существует потенциальная опасность использования программ, которые получают значение даты путем прямого ("аппаратного") чтения значений из CMOS. В результате может быть получено значение года 1900 вместо 2000. Наиболее неприятным является то, что данная проблема возникает только во включенном состоянии компьютера. Если компьютер в момент перехода дат находился в выключенном состоянии, то BIOS при начальном тесте откорректирует данную проблему. Поэтому необходимо тщательно подбирать материнские платы для систем, работающих в непрерывном режиме (например, серверы различного назначения).

Первый вариант проверки (визуальное наблюдение).

  1. Загрузить компьютер в режиме MS-DOS.
  2. Установить при помощи команды date дату 31 декабря 1999
  3. Установить при помощи команды time время 23:59
  4. Запустить программу CMOS.EXE (18 Кб), и в реальном времени наблюдать изменение (или неизменение) значения в ячейке 32h (Century in BCD). При этом в ячейках с 00h по 09h будет отображаться текущее время.

Второй вариант проверки (специальные тесты)

1. Navratyl Software System Inform v0.42c при тесте BIOS отображает наличие "бага" в RTC и способность BIOS'a его корректировать

2. RTCDATE (программа сертификации по Проблеме 2000) проверяет корректность аппаратного перехода по набору дат, отлавливаает "баг" RTC.




Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.