Board.KolibriOS.org
http://board.kolibrios.org/

UpTime - Аптайм или время непрерывной работы системы
http://board.kolibrios.org/viewtopic.php?f=35&t=2278
Страница 1 из 2

Автор:  Mario_r4 [ Вс мар 31, 2013 12:02 am ]
Заголовок сообщения:  UpTime - Аптайм или время непрерывной работы системы

Собственно к мысли подвела статья http://habrahabr.ru/post/174769/
В текущем виде мы имеем ф.26.9
Код:
Функция 26, подфункция 9 - получить значение счётчика времени.

Параметры:
eax = 26 - номер функции
ebx = 9 - номер подфункции

Возвращаемое значение:
eax = число сотых долей секунды, прошедших с момента запуска системы

Замечания:
Счётчик берётся по модулю 2^32, что соответствует немногим более 497 суток.
Системное время можно получить функцией 3.

Соответственно в идеальных условиях перезагружать придется раз в год, если брать грубые значения. Поскольку работы над сетевым стеком хоть и медленно, но ведутся. Да и по другим направлениям развиваемся, то имеет смысл задуматься над расширением счетчика с 2^32 до 2^64.
Спойлер: Показать
Это позволит увеличить время до жалких 2135039823346 дней или не менее жалких 5849424173, еще более жалких 58494241 столетий, совсем уж жалких 5849424 тысячелетий, и смехотворных 5,8 миллиардов лет. Я в расчетах не ошибся?

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

Спойлер: Показать
Ведь время, когда высоконагруженные серверы бороздящие просторы больших театров работающие на "идеальном исходном коде" время аптайма которого десятки минут и дублируемого вторичными процедурами отслеживающими смерть первых и перезапускающих их - уже наступило. А ведь писатели-фантасты описывали трехконтурные системы с абсолютной надежностью еще в начале XX века. Добро пожаловать в XXI век - век "жира" и говнокода, где ассемблеру почти нет места.

Автор:  SoUrcerer [ Вс мар 31, 2013 11:07 am ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Поддерживаю модификацию.

Автор:  Akyltist [ Вс мар 31, 2013 12:39 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Цитата:
Функция 26, подфункция 9 - получить значение счётчика времени.

Цитата:
то имеет смысл задуматься над расширением счетчика с 2^32 до 2^64.

поддерживаю

Автор:  srx [ Вс мар 31, 2013 3:37 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Цитата:
Функция 26, подфункция 9 - получить значение счётчика времени.


чёрт, не правильно сначала вчитался в тему
увеличить до 64 бит? хорошая мысль, с заделом на будушее так сказать!

Автор:  Mario_r4 [ Вс мар 31, 2013 3:52 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

srx писал(а):
увеличить до 64 бит? хорошая мысль, с заделом на будушее так сказать!

Не обязательно трогать существующую функцию, совместимость желательно сохранять.

Автор:  CleverMouse [ Пн апр 01, 2013 11:26 am ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Mario_r4 писал(а):
Соответственно в идеальных условиях перезагружать придется раз в год, если брать грубые значения.

Зачем перезагружать?

Автор:  Mario_r4 [ Пн апр 01, 2013 12:19 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

CleverMouse писал(а):
Mario_r4 писал(а):
Соответственно в идеальных условиях перезагружать придется раз в год, если брать грубые значения.

Зачем перезагружать?

А что делать в случае переполнения? Как ты предлагаешь это отлавливать?

Автор:  CleverMouse [ Пн апр 01, 2013 12:47 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?

Автор:  Mario_r4 [ Пн апр 01, 2013 12:53 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

CleverMouse писал(а):
Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?

Приложение с длительным временем работы может некорректно функционировать.

Автор:  CleverMouse [ Пн апр 01, 2013 12:54 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Mario_r4 писал(а):
CleverMouse писал(а):
Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?

Приложение с длительным временем работы может некорректно функционировать.

Пример некорректного функционирования?

Автор:  Mario_r4 [ Пн апр 01, 2013 1:02 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

CleverMouse писал(а):
Mario_r4 писал(а):
CleverMouse писал(а):
Ничего не делать, переполнение ничему не мешает. Зачем отлавливать?

Приложение с длительным временем работы может некорректно функционировать.

Пример некорректного функционирования?

То что в данный момент у меня нет под рукой рабочего приложения (счетчик еще надо умудриться накрутить), то это не значит что вероятности возникновения проблемы нет. Чисто логически рассуждая она может возникнуть.

Автор:  CleverMouse [ Пн апр 01, 2013 1:23 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Слив засчитан. Если много свободного времени и больше нечем заняться - пожалуйста, я не возражаю.

Автор:  Serge [ Пн апр 01, 2013 1:28 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Чисто логически, обработка такой ситуации на совести автора программы. Но сам по себе длинный счётчик вещь полезная и не требует больших изменений в ядре.

Автор:  Mario_r4 [ Пн апр 01, 2013 1:31 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Serge писал(а):
Чисто логически, обработка такой ситуации на совести автора программы.

Мне интересно как? Никаких признаков переполнения у нас нет. Опиши словесно алгоритм контроля, пожалуйста. Ну, или код, если так проще.

Автор:  CleverMouse [ Пн апр 01, 2013 1:40 pm ]
Заголовок сообщения:  Re: UpTime - Аптайм или время непрерывной работы системы

Абсолютные значения счётчика не имеют особого смысла сами по себе, важна только разность двух моментов времени для определения событий типа "с момента, как мы засекли, прошла минута".
Код:
      ; testing for timeout
        mov     ecx, [timer_ticks]
        sub     ecx, [ebx+APPDATA.wait_begin]
        cmp     ecx, [ebx+APPDATA.wait_timeout]
        jb      .loop

Переполнение здесь ничему не мешает: если ожидание началось в момент wait_begin = 0xFFFFFFFF, а timer_ticks = 1, то после вычитания получится корректная разница ecx = 2 тика таймера, с которой можно поступать как обычно.

Страница 1 из 2 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/