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


Проблема №-1 — переход столетия при выключенном питании

DOS может отслеживать даты только с 1980 до 2099, поэтому если BIOS передает ДОСу более раннюю дату, то DOS устанавливает значение по умолчанию: 1-4-1980. Этот случай произойдет у большинства пользователей, если в их компьютерах старый BIOS, и они выключили компьютер в 1999 году, а включили в 2000 году. DOS получает дату и время один раз, при начальной загрузке, так что, если никаких дополнительных мер не будет принято, все файлы, созданные в течение сеанса, будут иметь неправильную дату. Новые файлы, созданные в 2000 году, будут казаться более старыми, чем те, которые были созданы в 1999 году, так что системы резервного сохранения могут запутаться.

Если вы не сделаете ничего перед следующим сеансом, BIOS снова сообщит о дате в начале 1900-ых, и DOS снова установит ту же самую заданную по умолчанию дату 1-4-1980 при загрузке. И тогда будет невозможно отличить более старые файлы от более новых, кроме как вручную с помощью просмотра, так как они все будут иметь одну и ту же дату создания. Это может вызвать, например, потерю новых данных при попытке резервного сохранения.

В большинстве случаев решение чрезвычайно просто: все, что вы должны сделать, это установить дату вручную при первом запуске в новом столетии. Хотя DOS читает дату часов реального времени один раз (при загрузке), она должным образом устанавливает дату часов реального времени, включая столетие, всякий раз, когда вы устанавливаете дату DOS (командой DATE). (Если ваша система связана с сетью, это может быть сделано автоматически сервером при подключении к нему). После этого в RTC сохранится правильное столетие, и BIOS будет передавать правильную дату в DOS во время всех будущих загрузок.

Проблема №-2 — переход столетия во время работы

Эта проблема как бы уже неактуальна, но для полноты информации опишу и ее.

Что случится, если система будет работать в полночь, когда меняется столетие? Это просто отодвинет необходимую установку RTC. Во время работы проблем, как правило, не возникает: если в DOS была установлена правильная дата при загрузке в 1999 году, то она должным образом перейдет на 2000 год и таким образом будет иметь правильную дату для файлов и программ. Однако, DOS автоматически не обновляет RTC, поэтому при следующей загрузке BIOS будет выдавать «1900», и вы должны будете вручную установить дату, как описано выше.

Но некоторые DOS-программы подобно Daqarta (программа, делающая из 386/486 компьютера со звуковой картой анализатор входящего сигнала с огромной массой возможностей — о ней я еще упомяну на моей странице) отключают прерывания системного таймера на длительные периоды, предохраняя их от сталкивающихся критических задач подобно сбору данных, поступающих в реальном масштабе времени. Старые игры DOS могут также отключать таймер по причинам эффективности. Это заставляет часы DOS останавливаться, и если позже прерывания таймера разрешаются после завершения критической задачи, программа должна считать правильные время и дату с RTC через BIOS и использовать их, чтобы сбросить часы DOS. Если во время отключенных прерываний таймера произошел переход столетия, BIOS выдаст год 1900, и DOS сбросит дату на 1980 год.

Обратите внимание, что эта проблема возможна только с теми программами DOS (включая игры), которые работают в «реальном режиме». Приложения Windows всегда работают в «защищенном режиме», который не дает им отключать прерываний таймера. Конечно, у подавляющего большинства приложений нет причин отключать прерывания таймера.

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

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

Проверка на спам: вставьте пропущенную цифру * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.