СПОСОБ МОДИФИКАЦИИ НАБОРА ДАННЫХ В ПАМЯТИ
MODIFICATION METHOD OF DATA SET IN MEMORY

Настоящее изобретение касается области управления записями в памяти устройства обработки информации и, точнее говоря, способа записи набора данных унитарным и когерентным образом. Изобретение, хотя и носит более общий характер, применяется в частности в области чип-карт (по-английски - smartcard).
Хотелось бы избежать, чтобы запись элемента данных могла быть прервана и чтобы пространство памяти элемента данных находилось в не определенном переходном состоянии, что делает элемент данных непригодным для использования.
Иногда желательно записать в память набор связанных данных. В этом случае данные должны быть записаны полностью или не записаны совсем. Следует избегать, чтобы некоторые данные могли быть записаны, а другие нет.
Иногда желательно накопить модификации данных и не подтверждать набор этих модификаций, когда происходит событие.
Изобретение направлено на решение вышеуказанных проблем с помощью способа записи элемента данных или несколько данных в память устройства обработки информации, который включает в себя этап перекопирования блока памяти, называемого исходным, включающего в себя один элемент данных или несколько данных, которые должны быть записаны в блок памяти, называемый блоком резервного копирования. Тогда этап записи данных делается в исходном блоке памяти или в блоке памяти резервного копирования. Тогда, если необходимо, всегда можно вернуться к исходным значениям данных, если фаза записи не удалась.
Изобретение относится к способу модификации в памяти набора данных, который включает в себя следующие этапы внутри устройства обработки информации: этап определения одного или нескольких блоков памяти, включающих данные, которые должны быть модифицированы, пространство памяти, содержащее данные, подлежащие модификации, относят к исходному пространству памяти, блок или блоки памяти, определенные таким образом, относят к исходным блокам памяти; этап перекопирования в пространство памяти, относящееся к пространству памяти для резервного копирования указанных исходных блоков памяти, блоки, модифицированные таким образом, относят к блокам резервного копирования; этап модификации данных внутри исходных блоков памяти и, в случае неудачи операции модификации до ее завершения, этап перекопирования указанных блоков резервного копирования на исходные блоки для того, чтобы обеспечить, что модификация набора данных, которую относят к транзакции, осуществлена унитарным и когерентным образом.
В соответствии с частным вариантом осуществления изобретения, исходные пространства памяти и пространство резервного копирования являются пространствами энергонезависимой памяти, способ включает в себя дополнительно этап запоминания в энергонезависимой памяти состояния, связанного с каждой транзакцией из следующих состояний: состояние «вне транзакции», когда транзакция не осуществляется; состояние «осуществления модификации», в котором осуществляются модификации, связанные с транзакцией, и состояние «осуществления перекопирования», в котором осуществляется перекопирование блоков резервного копирования на исходные блоки, и этап восстановления, при возвращении электрического питания вслед за его потерей, который состоит в перекопировании блоков резервного копирования на исходные блоки, если сохраненное состояние является состоянием «осуществление модификации» или «осуществление перекопирования».
Изобретение также касается способа, включающего в себя следующие этапы внутри устройства обработки информации: этап определения одного или нескольких блоков памяти, включающих данные, которые должны быть модифицированы, пространство памяти, содержащее данные, подлежащие модификации, относят к исходному пространству памяти, блок памяти или блоки памяти, определенные таким образом, относят к исходным блокам памяти; этап перекопирования в пространство памяти, относящееся к пространству памяти для резервного копирования упомянутых исходных блоков памяти, модифицированные таким образом блоки относят к блокам резервного копирования; этап модификации данных внутри блоков памяти резервного копирования и в случае успеха операции модификации этап перекопирования упомянутых блоков резервного копирования на исходные блоки для того, чтобы обеспечить, что модификации набора данных, которые относят к транзакции, осуществлены унитарным образом.
В соответствии с частным вариантом осуществления изобретения, исходное пространство памяти и пространство для резервного копирования являются пространствами энергонезависимой памяти, при этом способ содержит, кроме того, этап запоминания в энергонезависимой памяти состояния, связанного с каждой транзакцией, из следующих состояний: состояние «вне транзакции», когда транзакция не осуществляется; состояние «осуществления модификаций», в котором осуществляются модификации, связанные с транзакцией, и состояние «осуществления перекопирования», в котором осуществляется перекопирование блоков резервного копирования на исходные блоки, и этап восстановления во время возвращения электрического питания вслед за его потерей, который состоит в перекопировании блоков резервного копирования на исходные блоки, сохраненным состоянием является состояние «осуществление перекопирования».
В соответствии с частным вариантом осуществления изобретения, две транзакции имеют временное перекрытие и физическое перекрытие, то есть блоки памяти, связанные с двумя транзакциями, перекрываются, при этом пересечение определяет блок перекрытия, при этом способ дополнительно включает в себя этап расчета разницы между исходным блоком перекрытия и блоком, полученным от модификаций, привнесенных первой завершившейся транзакцией, и этап применения этой разницы внутри блока памяти резервного копирования, связанного с этой транзакцией.
В соответствии с частным вариантом осуществления изобретения, блоки памяти имеют фиксированный размер.
Изобретение также относится к устройству обработки информации, которое включает в себя, для модификации в памяти набора данных, средства для определения одного или нескольких блоков памяти, включающих данные, которые должны быть модифицированы, пространство памяти, содержащее данные, подлежащие модификации, относят к исходному пространству памяти, один или несколько блоков памяти, определенные таким образом, относят к исходным блокам, средства для перекопирования в пространство памяти, относящееся к пространству памяти для резервного копирования указанных исходных блоков памяти, модифицированные таким образом блоки относят к блокам резервного копирования; средства для модификации данных внутри исходных блоков памяти и в случае неудачи операции модификации до ее завершения, средства для перекопирования указанных блоков резервного копирования на исходные блоки для того, чтобы обеспечить, что модификации набора данных, которые относят к транзакциям, осуществлены унитарным образом.
Изобретение также относится к устройству обработки информации, отличающемуся тем, что оно включает в себя, для модификации в памяти набора данных, средства для определения одного или нескольких блоков памяти, включающих данные, которые должны быть модифицированы, пространство памяти, содержащее данные, подлежащие модификации, относят к исходному пространству памяти; блок или блоки памяти, определенные таким образом, относят к исходным блокам памяти; средства для перекопирования в пространство памяти, относящееся к пространству памяти для резервного копирования указанных исходных блоков памяти, блоки, модифицированные таким образом, относят к блокам резервного копирования; средства для модификации данных внутри блоков памяти резервного копирования и в случае успеха операции модификации, средства для перекопирования указанных блоков резервного копирования на исходные блоки для того, чтобы обеспечить, что модификации набора данных, которые относят к транзакции, осуществлены унитарным образом.
Характеристики изобретения, упомянутые выше, а также другие будут более понятны при прочтении нижеследующего описания варианта осуществления, указанное описание приведено в сочетании с прилагаемыми чертежами, на которых:
Фиг. 1 показывает блок-схему функционирования первого варианта осуществления изобретения.
Фиг. 2 показывает блок-схему функционирования второго варианта осуществления настоящего изобретения.
Фиг. 3 иллюстрирует машину состояний, используемую в варианте осуществления изобретения.
Данные, обрабатываемые устройством обработки информации, как правило, запоминаются в пространствах памяти. Эти пространства памяти можно рассматривать как одномерные таблицы элементов памяти. Каждый элемент памяти содержит определенное количество битов, одинаковое для всех элементов памяти. Индекс в таблице определяется как адрес памяти элемента. Размеры элементов памяти, обычно используемые сегодня, составляют 32 или 64 бита.
Элемент данных запоминается таким образом, в зависимости от его размера, в одном или нескольких элементах памяти. Эти элементы памяти, как правило, смежные. Если хотят модифицировать элемент данных, вызывают запись его нового значения в один или несколько элементов памяти, где этот элемент данных хранится.
Транзакция определена в данном документе как совокупность записей данных, которые должна быть выполнена унитарным образом. Что означает, что эта совокупность записей данных должна быть выполнена полностью или не выполнена совсем. Стремятся избежать возможности частичной записи этой совокупности данных (например, обновление элемента данных и связанной с ним целостности).
Блоком памяти называют прилежащее пространство памяти, которое содержит все или часть данных, которые подлежат записи во время транзакции. Блок памяти может служить в качестве единицы манипуляции памяти для переходной системы, которая описана. Можно определить размер блока памяти по-разному. Один из способов заключается в статическом фиксировании размера блока внутри системы. Тогда все блоки памяти имеют одинаковый размер. Управление блоками памяти, таким образом, упрощается, но зато может быть необходимо работать с несколькими различными блоками памяти для одной и той же транзакции. Обычно говорят о страницах памяти вместо блоков памяти в случае блоков фиксированного размера и памяти со страничной организацией.
Размер блока памяти может быть переменным и зависимым от данных, подлежащих модификации. Размер блока определяется тогда, как наименьшее пространство памяти, охватывающее данные одной и той же транзакции, и это - для каждой транзакции. Управление в таком случае более сложное, но более оптимальное в потреблении памяти.
Фиг. 1 демонстрирует первый вариант осуществления изобретения. На первом этапе 1.1 запускается транзакция. Этап 1.2 состоит в перекопировании одного или нескольких блоков памяти, которые содержат данные, участвующие в транзакции. Эти данные представляют собой данные, которые должны быть модифицированы унитарным образом, определяя транзакцию. Для каждого из блоков памяти, обработанных таким образом, следовательно, определяют исходный блок. Этот исходный блок памяти является блоком памяти, содержащим данные, подлежащие модификации. Копия исходного блока памяти производится в пространстве памяти, которое называют пространством памяти для резервного копирования. Таким образом, перекопированный блок памяти относят к блоку памяти резервного копирования. Следовательно, после этого этапа располагают идентичной копией блока или блоков памяти, включающих данные, подлежащие модификации.
На этапе 1.3 происходят модификации данных, связанных с этой транзакцией. Этот этап может занять некоторое время и зависит от определения транзакции. Записи памяти производятся, в этом первом варианте осуществления изобретения, внутри исходного пространства памяти. Так что именно исходные блоки памяти содержат данные, модифицированные транзакцией.
Если ничего не помешает этому этапу модификации данных, в конце этого этапа происходит подтверждение транзакции. Затем переходят к этапу 1.4. Модификации данных сделаны непосредственно в исходном пространстве памяти, в этом пространстве не требуется никакого вмешательства. Транзакция завершается, будучи подтвержденной, пространство памяти для резервного копирования может быть освобождено.
В любой момент в течение этого этапа модификации не исключено, что транзакция будет отменена. Причины отмены зависят от приложения и не разбираются здесь. В этом случае переходят к этапу 1.5. Транзакция не смогла закончиться успешно, необходимо восстановить исходное пространство памяти в состояние, в котором оно находилось до начала транзакции. Таким образом, этап 1.5 состоит в перекопировании блока или блоков памяти из пространства для резервного копирования в соответствующие блоки исходного пространства памяти. После этого перекопирования пространство памяти для резервного копирования может быть освобождено.
Затем переходят в состояние 1.6 завершения транзакции. Отмененная транзакция не привела ни к какой модификации исходного пространства памяти, которое было восстановлено.
Отметим, что поставленная цель, то есть позволить совокупности записей памяти осуществляться унитарным образом, достигнута.
Фиг. 2 демонстрирует второй вариант осуществления изобретения. Этот второй вариант близок к первому. Этапы 2.1 и 2.2 являются идентичными их аналогам 1.1 и 1.2 согласно первому варианту осуществления.
Этап 2.3 отличается от этапа 1.3 выбором пространства памяти, в котором осуществляются модификации. В этом втором варианте осуществления выбор касается пространства памяти для резервного копирования. Этап модификации 1.3, таким образом, оставляет исходное пространство памяти без модификаций.
Этот выбор затрагивает операции, которые будут осуществляться во время подтверждения транзакции, а также при аннулировании.
В случае подтверждения транзакции теперь необходимо выполнить этап 2.4 перекопирования из пространства памяти для резервного копирования в исходное пространство памяти, чтобы перенести модификации на фактические данные, хранящиеся в этом пространстве. Затем, этап 2.6 подтверждает транзакцию.
В случае аннулирования транзакции исходное пространство не было модифицировано, не требуется осуществлять никаких операций в этом пространстве. Пространство памяти для резервного копирования освобождается и транзакция завершается на аннулированном состоянии во время этапа 2.5.
Этот вариант осуществления достигает той же цели, что и первый, главное отличие заключается исключительно в использовании исходных блоков и блоков резервного копирования.
Может быть выгодно предложить механизм записи в памяти, который также устойчив к потере питания устройства. Нужно различать два типа работы с памятью. Память, используемая в устройстве обработки информации, может быть энергозависимой. Этот тип памяти должен подпитываться электричеством для запоминания своего содержимого. Потеря питания приводит к полной потере запомненной информации. Второй тип памяти - энергонезависимая память. В этом случае потеря питания не приводит к потере запомненных данных. Оба типа памяти могут сосуществовать в одном устройстве обработки информации, это же самый общий случай. Обычно чип-карта запоминает свои данные в энергонезависимой памяти, но имеет энергозависимое рабочее пространство памяти. Действительно, время доступа к энергозависимой памяти значительно выше, чем время доступа к энергонезависимой памяти.
Первые два варианта осуществления функционируют независимо от типа памяти. Если мы хотим сделать их устойчивыми к потере питания, нужно учитывать тип памяти. Устойчивость механизма транзакций к потере питания означает, что исходное пространство памяти находится в энергонезависимой памяти. Действительно, в противном случае, все данные теряются при потере питания и изобретение не имеет больше смысла. Аналогичным образом, пространство памяти для резервного копирования должно быть также в энергонезависимой памяти, чтобы позволить перекопирование блока после прерывания питания.
Для того чтобы сделать механизм транзакций устойчивым к потере питания, определим автомат состояний. Этот автомат описан на фиг. 3. Определяют первое состояние 3.1, которое соответствует состоянию вне транзакции. В этом состоянии не выполняется никакая транзакция. Начало транзакции 3.4 переводит систему в состояние 3.2, которое соответствует состоянию, в котором выполняются модификации, связанные с транзакцией. Речь идет о случае первого варианта осуществления, в котором модификации происходят в исходном пространстве памяти. Подтверждение транзакции 3.5 приводит нас тогда в состояние вне транзакции. Модификации подтверждены в исходном пространстве памяти. Отмена транзакции 3.6 приводит нас тогда в состояние 3.3 выполнения перекопирования. Это состояние, в котором происходит перекопирование пространства памяти для резервного копирования в исходное пространство памяти. В конце перекопирования 3.7 переходят в состояние 3.1 вне транзакции.
В случае второго варианта осуществления, в котором модификации происходят в пространстве памяти для резервного копирования, автомат почти такой же. Единственные различия заключаются в перемене местами меток 3.5 и 3.6. Переходят в состояние выполнения перекопирования при подтверждении 3.6 транзакции, пространство памяти для резервного копирования, где происходят модификации, тогда должно быть перекопировано в исходное пространство памяти. Именно при отмене 3.5 транзакции непосредственно переходят в состояние 3.1 вне транзакции.
Способ согласно изобретению, таким образом, дополнительно включает в себя этап запоминания в энергонезависимой памяти состояния, в котором находится. Таким образом, независимо от того, когда происходит обрыв питания, состояние системы по отношению к этому автомату запоминается и может быть восстановлено, когда восстанавливается электрическое питание устройства.
Способ также дополнительно включает этап восстановления при возобновлении питания. Этот этап восстановления выполняет совокупность операций в зависимости от запомненного состояния системы и варианта функционирования механизма транзакции. Вариант функционирования является вариантом модификации в исходной памяти или в памяти для резервного копирования.
Если система находится в состоянии вне транзакции, независимо от варианта функционирования, никакая операция не будет осуществляться.
Если система находится в состоянии осуществления модификаций и модификации происходят в исходной памяти, нужно перекопировать память для резервного копирования в исходную память для отмены прерванной транзакции. Система переходит в состояние осуществления перекопирования во время этой операции.
Если система находится в состоянии осуществления модификаций и модификации происходят в памяти для резервного копирования, ничего делать не надо.
Если система находится в состоянии «осуществления перекопирования», без возможности узнать прогресс перекопирования, оно возобновляется с нуля. Таким образом, пространство памяти для резервного копирования полностью копируют в исходное пространство памяти. Система остается в состоянии осуществления перекопирования.
После этого этапа система соблюдает ограничение транзакции, другими словами, совокупность записей, связанных с транзакцией, осуществляется полностью или не осуществляется вообще.
Эта система может управлять, как есть, любым количеством транзакций. В этом случае необходимо управлять таким же количеством автоматов состояний, сколько имеется одновременных транзакций. Под одновременными транзакциями подразумеваются две транзакции, имеющие как минимум частичное временное перекрытие. Тем не менее, единственным условием, которое следует соблюдать для правильной работы, является невозможность наличия двух транзакций, имеющих одновременно временное перекрытие и физическое перекрытие, физическое перекрытие означает, что блоки памяти, связанные с двумя транзакциями, перекрываются. Это ограничение распространяется на оба варианта реализации.
Действительно, в таком случае есть риск, что копирование блока, выполненное одной из транзакций, аннулирует модификации, сделанные другой транзакцией. Рассмотрим случай, когда модификации выполняются в исходном пространстве памяти. Две транзакции выполнят свои записи в одно и то же исходное пространство, что не представляет проблемы до тех пор, пока они не хотят модифицировать один и тот же элемент памяти. Тем не менее, если одна из транзакций не удается, она будет копировать блок памяти резервного копирования, таким образом, потенциально аннулируя модификации, внесенные другой транзакцией.
В другом варианте функционирования каждая транзакция выполняет перекопирование своего блока памяти в объем пространства памяти резервного копирования. Общая часть, таким образом, дублируется в пространство резервного копирования. Каждая транзакция выполняет свои модификации на своей копии. Первая транзакция, которая заканчивается, копирует свой блок памяти в исходное пространство. Когда завершается вторая транзакция, она делает так же, таким образом стирая модификации, внесенные первой транзакцией в общей части. Этот недостаток происходит, даже если обе транзакции не затрагивают на самом деле одни и те же элементы памяти, но соседние элементы памяти, расположенные в общей части, соответствующей одному и тому же блоку памяти.
Для решения этой проблемы разработан новый предпочтительный вариант осуществления. В этом новом варианте ограничивается функционирование переходов, в которых модификации происходят в пространстве памяти резервного копирования. Таким образом, когда две транзакции перекрываются во времени и физически, каждая из двух выполняет свою собственную копию блока или блоков памяти, которые ей соответствуют, и каждая выполняет свои модификации на своей собственной копии.
Понятие блока перекрытия определяется как общее пространство памяти в блоках памяти, связанных с двумя транзакциями.
Способ, согласно этому варианту осуществления, включает в себя дополнительный этап, который происходит перед копированием блока памяти, связанного с завершающейся первой транзакцией. Он включает этап расчета разницы между исходным блоком перекрытия и блоком, полученным после модификаций, привнесенных завершающейся первой транзакцией. Он также включает в себя этап применения этой разницы внутри блока памяти резервного копирования, связанного с другой транзакцией.
Таким образом, модификации, привнесенные первой транзакцией в общей части, перенесены на рабочий блок второй. Копирование этого рабочего блока во время подтверждения второй транзакции, таким образом, переносит модификации, привнесенные первой транзакцией, вместо того, чтобы стирать их, в исходное пространство памяти. Если вторая транзакция не удается, и этот блок не копируется в память, модификации, сделанные первой транзакцией, которые были скопированы в исходное пространство памяти, останутся действительными.
Единственный случай, который не рассмотрен, - случай, в котором две транзакции модифицируют один и тот же элемент памяти по-разному. Этот случай априори не разрешим, один и тот же элемент памяти не может иметь два различных значения по завершении двух транзакций. В этом случае модификация элемента памяти, сделанная второй транзакцией, будет преобладать.
Читатель понимает, что управление блока перекрытия и механизма этого последнего варианта осуществления значительно облегчается при использовании памяти со страничной организацией и блоков фиксированного размера. Тогда блок перекрытия состоит из целого числа страниц.