В информатике постоянство относится к характеристике состояния системы, которая переживает (сохраняется дольше, чем) процесс , который ее создал. На практике это достигается за счет сохранения состояния в виде данных в компьютерном хранилище данных . Программы должны передавать данные на устройства хранения данных и обратно, а также обеспечивать сопоставление структур данных собственного языка программирования со структурами данных устройств хранения. [1] [2]
Например, программы редактирования изображений или текстовые процессоры обеспечивают сохранение состояния , сохраняя свои документы в файлы .
Постоянство называется « ортогональным » или «прозрачным», если оно реализовано как внутреннее свойство среды выполнения программы. Ортогональная персистентная среда не требует каких-либо конкретных действий со стороны работающих в ней программ для получения или сохранения своего состояния .
Неортогональное сохранение требует, чтобы данные записывались и считывались в хранилище и из него с использованием определенных инструкций в программе, в результате чего слово persist используется в качестве переходного глагола: По завершении программа сохраняет данные .
Преимущество ортогональных сред персистентности — это более простые и менее подверженные ошибкам программы. [ нужна цитата ]
Термин «постоянный» был впервые введен Аткинсоном и Моррисоном [1] в смысле ортогонального постоянства: они использовали прилагательное, а не глагол, чтобы подчеркнуть постоянство как свойство данных, в отличие от императивного действия, выполняемого программой. . Употребление переходного глагола «персистировать» (описывающего действие, выполняемое программой) является обратным образованием.
Ортогональное постоянство широко применяется в операционных системах для спящего режима и в системах виртуализации платформ , таких как VMware и VirtualBox, для сохранения состояния.
Исследовательские языки-прототипы, такие как PS-algol , Napier88 , Fibonacci и pJama, успешно продемонстрировали программистам эти концепции и их преимущества.
Использование системных образов — самая простая стратегия сохранения. Спящий режим ноутбука является примером ортогонального сохранения с использованием образа системы, поскольку он не требует каких-либо действий со стороны программ, работающих на компьютере. Примером неортогонального сохранения с использованием системного образа является простая программа редактирования текста, выполняющая определенные инструкции для сохранения всего документа в файл.
Недостатки : Требуется достаточно оперативной памяти для хранения всего состояния системы. Изменения состояния, внесенные в систему после сохранения ее последнего образа, теряются в случае сбоя или завершения работы системы. Сохранение образа для каждого отдельного изменения заняло бы слишком много времени для большинства систем, поэтому изображения не используются в качестве единственного метода сохранения для критических систем.
Использование журналов — второй простейший метод сохранения. Ведение журнала — это процесс сохранения событий в журнале перед тем, как каждое из них будет применено к системе. Такие журналы называются журналами.
При запуске журнал считывается, и каждое событие повторно применяется к системе, что позволяет избежать потери данных в случае сбоя или завершения работы системы.
Вся история «Отменить/Повторить» пользовательских команд в программе редактирования изображений, например, при записи в файл, представляет собой журнал, способный восстановить состояние отредактированного изображения в любой момент времени.
Журналы используются журналируемыми файловыми системами , распространенными системами и системами управления базами данных , где их также называют «журналами транзакций» или «журналами повторов».
Недостатки : когда используются исключительно журналы, вся (потенциально большая) история всех системных событий должна заново применяться при каждом запуске системы. В результате журналы часто комбинируются с другими методами сохранения.
Этот метод заключается в записи в хранилище только тех частей состояния системы, которые были изменены (загрязнены) с момента их последней записи. Например, сложные приложения для редактирования документов будут использовать грязную запись для сохранения только тех частей документа, которые были фактически изменены с момента последнего сохранения.
Недостатки: этот метод требует, чтобы изменения состояния перехватывались внутри программы. Это достигается непрозрачным способом, требующим определенных вызовов API хранилища, или прозрачным способом с автоматическим преобразованием программы . В результате код получается медленнее, чем собственный код, и его сложнее отлаживать.
Любой программный уровень , который облегчает программе сохранение своего состояния, обычно называется уровнем персистентности. Большинство уровней сохраняемости не обеспечивают постоянство напрямую, а используют базовую систему управления базами данных .
Преобладание системы — это метод, который объединяет упомянутые выше образы системы и журналы транзакций для преодоления их ограничений.
Недостатки: распространенная система должна иметь достаточно оперативной памяти для хранения всего состояния системы.
СУБД используют комбинацию методов грязной записи и журналирования транзакций, упомянутых выше. Они обеспечивают не только постоянство, но и другие услуги, такие как запросы, аудит и контроль доступа.
Постоянные операционные системы — это операционные системы , которые остаются постоянными даже после сбоя или неожиданного завершения работы. К операционным системам, использующим эту возможность, относятся