Здравствуйте, Nik_1, Вы писали:
N_>http://www.computerra.ru/interactive/546249/
Очень неоднозначные впечатления от прочитанного.
С одной стороны, это амбициозный проект с интересными архитектурными решениями.
С другой — трудно представить работоспособную архитектуру, которая не поддерживается
аппаратно и вообще базируется на виртуальных машинах. А как же драйверы устройств и
вообще системные сервисы типа переключения контекстов или управление виртуальной
памятью ? Это тоже отдается Java ? Наверное, я отстал от жизни.
Нет ни безопасности, ни переходов в режим ядра. Ну и что в этом хорошего ?
Разработчики современных архитектур тоже не дураки ведь.
И мне кажется, что идея персистентности, если она вообще математически корректна,
способна работать только в теории, ибо на практике это означает требование обеспечения
возможности любого устройства или программы свободно прерывать и восстанавливать поток
данных в произвольный момент времени, причем согласованно и единообразно, как транзакция.
Короче, требование полной когерентности.
Как на таких архитектурах смогут работать асинхронные механизмы или
кэширование ? Что, если состояние приложения A напрямую зависит от состояния приложения B,
а их "commit-ы" относится к разным "ревизиям" ?
В моей программе в каждый момент времени крутятся десятки циклов, сотни переменных постоянно
меняют значение, происходит обращение к внешним данным и происходит много всего другого.
Реален ли сценарий, при котором процесс операционной системы без существенных потерь
будет фиксировать все происходящее, да так, чтобы связанные компоненты оставались в согласованном состоянии ?
Ну открыл я сокет, отправил по нему данные и жду. Тут система падает и ответ сервера приходит,
пока она восстанавливается. Собственно, должны восстановиться не только такие данные,
как валидный дескриптор сокета или содержимое буфера, но и показания тайм-аута,
состояние ожидание какого-нибудь объекта синхронизации, различных структур ядра,
внутренние состояния сетевого адаптера, стек TCP-пакетов и еще много-много другого.
Короче, все упирается в реализацию и множество деталей, как всегда. Я уже не говорю про ошибки,
которые есть в каждом экземпляре ПО.
Тут нужна конкретная смена парадигмы программирования и вообще, вся эта "кухня" должна
поддерживаться аппаратно, поставщиками устройств и разработчиками драйверов.
Но даже на современных, проверенных десятилетиями архитектурах, ситуация такая, что завалиться можно
даже на банальном hibernate или броске питания, как точно отметил
мыщъх.
Так что время покажет.