Pull to refresh

Comments 6

NetBSD перешла на 64-битный time_t в версии 6.0 в 2012 году, OpenBSD в версии 5.5 в 2014-м. В Linux путь вышел длиннее. Ядро получило полный набор 64-битных системных вызовов для 32-битных архитектур (всякие clock_gettime64 и компания) к версии 5.6 в 2020 году.

Кхм... кхм.. (громко покашливая в дряхрый кулак). Во FreeBSD с версии 5.0 (январь 2003 года) перешли на Berkeley Fast File System версии UFS2 где временная отметка (тип time_t) имеет размерность 64 бита. С UFS2 появилась возможность задавать дробную часть секунды которая хранится в отдельной переменной, её гранулярность задается с точностью до наносекунд с помощью переменной ядра sysctl vfs.timestamp_precision. По умолчанию значение этой переменной равна 2, что задает точность в 1 микросекунду.

Но это еще не всё. Для совместимости с версией UFS1 новые версии ОС FreeBSD (с 13.x ?) рассматривают 32-х битную временную отметку как unsigned, что отодвигает проблему для legacy систем на 2106 год. Предполагается, что за следующие 80 лет ленивые кожанные мешки успеют переползти либо на UFS2, либо на ZFS.

Ну и на счет вот этого вот:

Первыми, это сделали BSD, которые могли позволить себе сломать ABI одним махом:

Тут надо понимать как это происходило в историческом контексте. На дворе 2001-2002 год. ОС FreeBSD установлена на каждом втором сервере (если не на каждом первом). Linux находится в инфантильном состоянии. И тут, откуда не возьмись, разработчики FreeBSD смогли себе позволить всё сломать и нагнуть весь Интернет! А почему разработчики Linux не смогли? На самом деле никто ничего не ломал, всё было сделано аккуратно и с умом. В отличии от нынешних разработчиков Linux которые ломают ABI каждый день и чхать они хотели на весь мир.

Добро пожаловать во FreeBSD.

машина с правым рулём

Спасибо, отличное исследование, написанное хорошим стилем! Всегда интересовало как появился 1970 год. В мире Windows тоже есть что-то подобное, но там до 14 сентября 30828 года.

если бы Bell Labs стояла где-нибудь в Европе, счетчик, насколько я понимаю, тикал бы 50 раз в секунду

Часы в микроволновках и подобной бытовой технике долгое время так же работали, тактуясь от розетки. Поэтому привезённые из США девайсы даже с адаптером напряжения время показывали как попало. Подозреваю, и с таймерами готовки похожая история была.

По сравнению с отдельными кулинарными книгами, советовавшими время приготовления яйца измерять десятикратным прочтением одной молитвы для всмятку, а другой - для вкрутую, это еще неплохая точность ))

Я удивлён, что никто не попытался использовать NT time за пределами мира винды. 64-битное с шагом 100 нс и точкой отсчёта в начале условного 1601-го года. До 30828 года, если со знаком – точно хватит:) Да, неудобно для отладки человеком (нет отдельной части, которая увеличивается ровно раз в секунду), но покрывает подавляющее большинство типовых нужд.

Переполнение миллиарда секунд также стрельнуло по cvsup (раздаче исходников) в BSD системах, пришлось срочно залечивать.

Sign up to leave a comment.

Articles