суббота, 27 июня 2009 г.

Почему Windows хранит время в BIOS в локальном формате?

Это перевод Why does Windows keep your BIOS clock on local time? Автор: Реймонд Чен.

Хотя Windows NT внутри себя использует UTC время, часы BIOS остаются на местном (локальном) времени. Почему так делается?

На это есть несколько причин. Одна из них - цепочка из обратных совместимостей.

В старые времена люди часто имели более одной установленной системы и загружались (dual-booted) то в Windows NT, то в MS-DOS/Windows 3.1. MS-DOS и Windows 3.1 работали с местным временем, поэтому Windows NT просто следовало этому поведению, так что вам не пришлось бы переустанавливать часы каждый раз, когда вы загружали другю операционную систему.

Со временем люди проапгрейдились с Windows NT на Windows 2000, а потом и на Windows XP. В этот раз снова не было возможности изменить временную зону, т.к. люди должны были иметь возможность беспроблемной загрузки между старой и новой операционной системой.

Другая причина в сохранении установки часов BIOS по местному времени - чтобы не путать людей, если они будут устанавливать время в BIOS руками. Если вы нажмёте волшебную кнопку при самотестировании по включению питания, BIOS перейдёт в режим конфигурации, и одной из вещей, которые вы сможете изменить здесь - это время. Представьте, как запутанно было бы, если бы вы установили время в 15.00, а когда вы запустили Windows, часы показывали бы 11.00.

"Тупой компьютер. Зачем вообще я вводил там время, если он всё запорол и теперь мне надо вводить заново?"

А если вы попытаетесь объяснить им: "Нет-нет, видите ли, там было время по UTC, а не местное", вероятно в ответ вы услышите: "Это что ещё за пустоголовый бред (propeller-headed nonsense)? Хочешь сказать, что когда компьютер спрашивает меня сколько времени, мне нужно сказать ему, какой час сейчас в Лондоне? (кроме того, летом это будет время в Рейкьявике!?) Почему вообще я должен помнить свою временную зону и руками вычитать четыре часа? Или это пять летом? А, может быть, я должен буду прибавлять? Почему вообще я должен задумываться об этом? Тупой Microsoft. Мои часы говорят, что сейчас три часа дня. Я ввожу 15.00. Всё, точка."

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

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.

Примечание. Отправлять комментарии могут только участники этого блога.