Эта статья требует дополнительных ссылок для проверки . ( сентябрь 2014 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
В информатике , сохранение относится к характеристике состояния системы , которая переживет (сохраняется более чем) процесс , который создал его. На практике это достигается за счет сохранения состояния в виде данных в компьютерном хранилище данных . Программы должны передавать данные на устройства хранения и с них и должны обеспечивать сопоставления структур данных на собственном языке программирования со структурами данных устройства хранения. [1]
Программы редактирования изображений или текстовые процессоры , например, достигают сохранения состояния , сохраняя свои документы в файлы .
Ортогональная или прозрачная стойкость [ править ]
Постоянство называется « ортогональным » или «прозрачным», когда оно реализовано как внутреннее свойство среды выполнения программы. Среда с ортогональной персистентностью не требует каких-либо конкретных действий со стороны работающих в ней программ для получения или сохранения своего состояния .
Неортогональное постоянство требует, чтобы данные записывались и считывались в хранилище и из хранилища с использованием определенных инструкций в программе, что приводит к использованию persist в качестве переходного глагола: по завершении программа сохраняет данные .
Преимущество сред с ортогональной персистентностью - это более простые и менее подверженные ошибкам программы. [ необходима цитата ]
Принятие [ править ]
Ортогональная персистентность широко применяется в операционных системах для гибернации и в системах виртуализации платформ, таких как VMware и VirtualBox для сохранения состояния.
Языки-прототипы исследований, такие как PS- algol , Napier88 , Fibonacci и pJama, успешно продемонстрировали эти концепции и преимущества для программистов.
Техники настойчивости [ править ]
Системные образы [ править ]
Использование системных образов - простейшая стратегия сохранения. Спящий режим ноутбука - это пример ортогонального сохранения с использованием образа системы, поскольку он не требует каких-либо действий со стороны программ, запущенных на компьютере. Примером неортогонального сохранения с использованием образа системы является простая программа редактирования текста, выполняющая определенные инструкции для сохранения всего документа в файл.
Недостатки : требуется ОЗУ, достаточное для хранения всего состояния системы. Изменения состояния, внесенные в систему после сохранения ее последнего образа, теряются в случае сбоя или выключения системы. Сохранение образа для каждого отдельного изменения потребует слишком много времени для большинства систем, поэтому образы не используются в качестве единственного метода сохранения для критически важных систем.
Журналы [ править ]
Использование журналов - второй простейший метод настойчивости. Ведение журнала - это процесс сохранения событий в журнале до того, как каждое из них будет применено к системе. Такие журналы называются журналами.
При запуске журнал считывается, и каждое событие повторно применяется к системе, что позволяет избежать потери данных в случае сбоя или выключения системы.
Вся история «Отменить / Повторить» пользовательских команд в программе редактирования изображений, например, при записи в файл, составляет журнал, способный восстанавливать состояние отредактированного изображения в любой момент времени.
Журналы используются файловыми системами журналирования , распространенными системами и системами управления базами данных, где их также называют «журналами транзакций» или «журналами повторного выполнения».
Недостатки : когда журналы используются исключительно, вся (потенциально большая) история всех системных событий должна повторно применяться при каждом запуске системы. В результате журналы часто сочетаются с другими методами сохранения.
Грязные записи [ править ]
Этот метод представляет собой запись в хранилище только тех частей состояния системы, которые были изменены (загрязнены) с момента их последней записи. Например, сложные приложения для редактирования документов будут использовать грязные записи для сохранения только тех частей документа, которые были фактически изменены с момента последнего сохранения.
Недостатки: этот метод требует, чтобы изменения состояния перехватывались в программе. Это достигается непрозрачным способом, требуя определенных вызовов API хранилища, или прозрачным способом с автоматическим преобразованием программы . Это приводит к тому, что код работает медленнее, чем собственный код, и его труднее отлаживать.
Слои стойкости [ править ]
Любой программный уровень, который упрощает сохранение состояния программы, обычно называется уровнем постоянства. Большинство уровней сохраняемости не достигают устойчивости напрямую, но будут использовать базовую систему управления базами данных .
Распространенность системы [ править ]
Системное преобладание - это метод, который объединяет системные изображения и журналы транзакций, упомянутые выше, для преодоления их ограничений.
Недостатки: распространенная система должна иметь достаточно ОЗУ для хранения всего состояния системы.
Системы управления базами данных (СУБД) [ править ]
СУБД используют комбинацию упомянутых выше методов грязной записи и ведения журнала транзакций. Они обеспечивают не только постоянство, но и другие услуги, такие как запросы, аудит и контроль доступа.
Постоянные операционные системы [ править ]
Постоянные операционные системы - это операционные системы, которые остаются устойчивыми даже после сбоя или неожиданного завершения работы. Операционные системы, использующие эту возможность, включают
- KeyKOS
- ЭРОС , преемник KeyKOS
- CapROS , доработки EROS
- Койотос , преемник EROS
- Multics с одноуровневым магазином
- Фантом
- IBM System / 38
- Grasshopper OS [1]
- ОС Lua
- tahrpuppy-6.0.5
См. Также [ править ]
- Постоянные данные
- Постоянная структура данных
- Постоянный идентификатор
- Постоянная память
- Копирование при записи
- CRUD
- Объекты данных Java
- Java Persistence API
- Системная распространенность
- Ортогональность
- Объект данных службы
- Снимок (компьютерное хранилище)
Ссылки [ править ]
- ↑ Balzer, Стефани (17 ноября 2005 г.). «Контрактное программирование постоянных объектов» (PDF) . Университет Глазго - Школа CS - Исследования . ETH Zürich. Архивировано из оригинального (PDF) 31 декабря 2006 года . Проверено 21 сентября 2015 года .