|
Очевидно, что большая часть информации, представленной на
карте должна сохраняться после отключения питания (изъятия
карты из устройства чтения). Это свойство и есть одна из основных
функций смарт-карт. Для этого используется постоянная память,
такая как EEPROM. При отключении питания происходит просто
задержка исполнения виртуальной машины, а все данные сохраняются.
Когда в следущий раз карта снова будет помещена в устройство
чтения, JCRE перезапускает виртуальную машину, загружая сохраненные
данные из постоянной памяти.
Необходимо отметить, что это именно перезапуск, а не возобновление
работы с той точки, где было выключено питание. Вместе с тем
этот перезапуск отличается от начальной инициализации тем,
что созданные ранее апплеты и объекты сохраняются. Если
в процессе перезапуска будут обнаружены незавершенные транзакции,
то соответствующие им модификации данных будут отменены. Таким
образом JCRE всегда будет находиться в согласованном состоянии.
Сессии
Время, в течение которого карта находится в кард-реадере
(CAD) называется сессией. Во время сессии JCRE поддерживает
обмен информацией между смарт-картой и хост-приложением (приложением
на рабоочей станции, к которой присоединен кард-реадер). Используемый
протокол пересылает пакеты данных (так называемый APDU – application
protocol data unit) между картой и хост приложением. Каждый
пакет содержит либо команду хост приложения, либо ответ от
смарт-карты.
После команды reset JCRE входит в цикл ожидания до поступления
нового пакета от хост-приложения. Хост посылает команды, используя
последовательный интерфейс или UCB.
После поступления команды JCRE либо выбирает апплет которому
передается управление, либо прямо передает команду текущему
апплету. Апплет отрабатывает полученную команду и возвращает
управление JCRE.
Опции JCRE
Помимо собственно поддержки Java JCRE обеспечивает также
следущее:
- постоянные и временные объекты – по умолчанию, создаваемые
объекты являются постоянными и сохраняются между сессиями.
Вместе с тем, апплет может создавать и временные объекты,
время жизни которых определяется сессией.
- атомарные операции и транзакции - виртуальная машина
Java Card обеспечивает атомарность операций записи для отдельных
полей объекта (класса). То есть, значение всегда либо будет
изменено, либо будет произведен откат к предыдущему состоянию.
Несколько операций записи могут быть объединены в транзакцию.
В таком случае либо все поля будут изменены, либо ни одно
из них.
- изоляция апплетов и механизмы разделения данных – JCRE
обеспечивает изоляцию апплетов. Каждый апплет работает в
собственном системном пространстве. Соответственно, поведение
одного апплета не оказывает влияния на поведение других.
Для организации разделения данных JCRE поддерживает специальный
безопасный механизм.
|
|