Классический форум-трекер
canvas not supported
Нас вместе: 4 261 449


Устойчивый к блокировкам VPN с высоким уровнем приватности

Unix исполнилось 50 лет. Что это значит?


 
 
RSS
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Компьютеры и комплектующие -> Компьютерные новости
Автор Сообщение
Михаил ®
 
Стаж: 15 лет 1 мес.
Сообщений: 21356
Ratio: 22.972
100%
2020 год знаменателен для Unix: в самом начале года оригинальной операционной системе исполнилось 50 лет. Время Unix, известное также как «даты эпохи», — это количество секунд, прошедших с 1 января 1970 года. Но что же беспокоит разработчиков ядра в связи с полувековым юбилеем Unix?

Хотя некоторые из ранних разработок Unix предшествуют официальному началу его «эпохи», 1 января 1970 года остаётся нулевой точкой во времени POSIX. Поэтому с началом 1 января 2020 года официально платформе исполнилось ровно 50 лет.

Время Unix против времени человека

С точки зрения человеческого времени, 50 лет — это большой период. С точки зрения времени Unix, нет ничего особенного в 50 лет, а 43 года были бы не менее значительными. Системы Unix (включая Linux) хранят значения даты и времени как количество секунд, прошедших с 1970-01-01 00:00:00 UTC, с записью в 32 битах. Чтобы определить, сколько секунд прошло с того времени и, следовательно, текущее значение времени Unix, можно выполнить команду:

$ date +%s

1576883876

Аргумент %s после команды date задаёт отображение текущей даты и времени в виде количества секунд с начала 1970-01-01. Какую максимальную дату могут хранить системы Unix?

Чтобы понять, сколько времени может вместить Unix-система, нужно оценить ёмкость 32-битного поля. Это можно рассчитать так:

$ echo '2^32' | bc

4294967296

Однако, поскольку Unix предусматривает сохранение и отрицательных чисел, один бит резервируется для знака, уменьшая, таким образом, значение времени до:

$ echo '2^31' | bc

2147483648

И так как нумерация Unix начинается с 0, это означает, что у нас есть 2 147 483 648 значений, но самое большое составляет 2 147 483 647 — значение даты и времени Unix не могут превышать это число. Так же, как одометр на автомобиле не может показывать больше 999 999 километров — добавьте 1, и значение обнулится.

Сколько длится год в секундах?

Количество секунд в году можно рассчитываются следующим образом:

$ expr 24 \* 60 \* 60 \* 365

31536000

В високосном году добавляется ещё один день:

$ expr 24 \* 60 \* 60 \* 366

31622400 Как Unix отображает свой 50-й день рождения?

1 января 2020 года в 12:00 утра будет время 1577836800. Расчет несколько усложняется, потому что следует учитывать високосные годы. С начала эпохи Unix было 12 таких лет, начиная с 1972 года и заканчивая в 2016 году. То есть обычных лет прошло 38.

Вот так выглядит команда expr для подсчета секунд за прошедшие 50 лет:

$ expr 24 \* 60 \* 60 \* 365 \* 38 + 24 \* 60 \* 60 \* 366 \* 12

1577836800

Или так, с учётом ранее проведённых подсчётов:

$ expr 31536000 \* 38 + 31622400 \* 12

1577836800

Этот способ записи времени сделал системы Unix невосприимчивым к проблеме Y2K года, из-за которой люди в конце 1999 года беспокоились, что переход на 2000 год может нанести ущерб компьютерным системам. Трудностей оказалось гораздо меньше, чем ожидалось. Фактически, только приложения, записывающие годы в двузначном формате, столкнулись с обнулением дат. Многие разработчики провели дополнительную работу, чтобы гарантировать, что их приложения не будут затронуты проблемой Y2K.

Когда время Unix столкнется с проблемами?

Аналогичные трудности ожидают Unix-системы не ранее 2038 года, когда даты, сохраненные в описанном выше формате, превысят 32-битное пространство. Остаётся ещё 18 лет, но разработчики ядра уже работают над тем, чтобы избежать грядущих сбоев.

Проблема 2038 года иногда упоминается как проблема Y2K38. Если она не будет решена до вторника 19 января 2038 года, после этой даты системы могут подумать, что наступил 1901 год. Один из способов решения этой проблемы — перейти на 64-битное представление информации о дате и времени. Некоторые считают, что и это будет гораздо сложнее, чем может показаться.

В любом случае, паниковать ещё рано. А действительно важным сегодня является 50-летний юбилей систем Unix, которые признаны одними из наиболее важных ОС в истории.
e2d
Uploader 100+
Стаж: 17 лет 7 мес.
Сообщений: 180
Ratio: 761.492
Поблагодарили: 734
100%
ukraine.gif
Цитата:
после этой даты системы могут подумать, что наступил 1901 год


а не "1970-01-01 00:00:00 UTC" ? :D
HoMeP
Стаж: 14 лет 6 мес.
Сообщений: 83
Ratio: 917.876
Раздал: 14.25 TB
100%
Откуда: дровишки?
russia.gif
e2d писал(а): Перейти к сообщению
а не "1970-01-01 00:00:00 UTC" ? :D

Не, число отрицательное. Максимальное число ~68 с копейками лет, 70-68,х и получается начало 20 века :подмигивание:
Alexkh65
Стаж: 11 лет
Сообщений: 61
Ratio: 2.32
0.18%
uzbekistan.gif
Ну и шо? У Винды уже была предельная дата. И до сих пор живёт, цветёт и пахнет.
balarava
Стаж: 11 лет 2 мес.
Сообщений: 708
Ratio: 3.581
100%
это проблема только для 32 битных систем где используется 32-битное число для представления даты, для 64 битных систем, коих сейчас большинство, это не проблем, да и к 2038 году 32бит систем останутся единицы

$ uname -m
x86_64
$ date +%s
1577981453
$ date -d@1577981453
Чт янв 2 18:10:53 EET 2020
добавим нолик
$ date -d@15779814530
Ср янв 15 19:48:50 EET 2470
vikonrob
Стаж: 15 лет 4 мес.
Сообщений: 341
Ratio: 10.005
5.74%
nnm-club.gif
Ну, поздравляю всех красноглазиков с этим знаменательным событием! :)
Показать сообщения:   
Начать новую тему   Ответить на тему    Торрент-трекер NNM-Club -> Компьютеры и комплектующие -> Компьютерные новости Часовой пояс: GMT + 3
Страница 1 из 1