Ваше местоположение в сети:
Рубрика:
Путеводитель по интернету

Время в компьютере

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

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

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

Разные часы

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

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

Ошибка 2000

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

К каким ошибкам в реальности это приводило? Нет, техника не сошла с ума. Атомных взрывов не было. А вот некоторые программы бухгалтерского учета действительно перестали работать корректно, в том числе, первые версии . Просто попытка посчитать итоги на 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 года. Доживем?

 

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

Дата: 23 декабря 2011 г., категория: интересное в интернете.

Хотите знать все об интернете?

Введите свой адрес электронной почты чтобы подписаться на обновления!



Доставляется при помощи FeedBurner. Никакого спама. Всегда можно отписаться!

Загружается, подождите...
← Контроль выполнения задачДефекты фотографии →

Комментарии

1#

staiki
23 декабря 2011 г. 19:11:08

Отличная статья!Честно сказать о времени в виндовс и не задумывался!Респект.Если не против выложу статью у себя на форуме с сылкой на источник?
 

2#

Sander ok
23 декабря 2011 г. 19:23:40

staiki, рад, что понравилось.
Со ссылкой - конечно, выкладывай!
 

3#

staiki
23 декабря 2011 г. 19:33:35

Благодарю и с Наступающим Новым 2012 Годом!Статейку выложил.
 

4#

Yuri Klimov
23 декабря 2011 г. 22:04:38

Забавные эффекты происходили не так давно - в осенний неперевод часов. Старые ОС перевели часы. А на Украине прикололись - отметили отмену перехода за пару дней. В результате поплыло расписание поездов и самолетов, и билеты не продавались.

P.S. Гм, а причем тут Григорианский календарь в 1970г.?
 

5#

Sander ok
23 декабря 2011 г. 22:15:27

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

По поводу календаря - просто при выборе нулевой даты для Unix-систем выбрали 1700 - как год принятия календаря. Наверное, просто символически.
 

6#

Сережка-Картошка
24 декабря 2011 г. 16:15:05

\"Оно кончится лишь в 15:30:08, воскресенье, 4 декабря 292277026596 года. Доживем?\"-Да мне бы до ошибки 2038 дожить)))...Вообще спасибо за статью!С наступающим 2012!!!
 

7#

Vlad
24 декабря 2011 г. 19:23:33

Спасибо за статью!
С НОВЫМ ГОДОМ!!!
 

8#

Константин
24 декабря 2011 г. 22:31:13

\"...с отсчетом от 01.01.1970 (год принятия Григорианского календаря)\"

Цитата из Википедии:
Григориа́нский календа́рь — календарь, принятый международным сообществом. В католических странах был введён папой Григорием XIII 4 октября 1582 года взамен старого юлианского: следующим днём после четверга 4 октября стала пятница 15 октября.
 

9#

Sander ok
24 декабря 2011 г. 22:43:29

Хмм... спасибо за поправку.
Видать, я при поиске информации столкнулся с массовой ошибкой в интернете.

Есть тогда идеи, почему 1700?
 

10#

Константин
24 декабря 2011 г. 23:27:41

Из каких соображений выбран 1700 год я не знаю, но
1700-2038 это безусловно удобнее чем 1600-1938 или 1800-2138.
Первый период не позволял датировать текущие даты, а до 2138 года 32-х битная система система не доживет (о чем безусловно догадывались авторы).

P.S. В статье есть еще одна ошибка-описка: 1970 вместо 1700
 

11#

Sander ok
25 декабря 2011 г. 12:39:51

Да вот того я и боюсь, что 32-битная система прекрасно доживет до года 2038 (не 2138), так что веселье будет )
 

Подписаться на: комментарии к статье (rss), комментарии к статье (e-mail)

[*] Авторизоваться при помощи профиля Google (и не только)
Самые активные участники сайта:

Хотите разместить здесь свою аватарку? Авторизуйтесь, загружайте картинку и комментируйте!
Имя:

E-mail (если хотите подписаться на комментарии):

Сайт (не обязательно):

Я - робот! (снимите галочку, если это не так)
Для блоггеров: если вы хотите чтобы ваша ссылка индексировалась поисковыми системами, вам нужно авторизоваться при помощи Google Friend Connect и написать осмысленный комментарий по теме. В таком случае я переведу ваш аккаунт в разряд "trusted". Комментарии пользователей с проверенным аккаунтом не попадают на модерацию, ссылки индексируются, а рядом с ником стоит значок с зеленой галочкой. Да, модерацию могут пройти только ссылки IT-тематики! Внимание: если вы не авторизуетесь, я не смогу сделать вашу ссылку активной даже если мне понравятся ресурс и комментарий!
Комментарий:

Подписаться на  комментарии к статье (rss), комментарии к статье (e-mail)