Переносимая защищенная система осуществления транзакций для программируемых устройств с микропроцессорами
Формула / Реферат
1. Система управления транзакциями, предназначенная для осуществления транзакций между первым устройством и вторым устройством, причем указанные первое и второе устройства выполнены с возможностью обмена информацией друг с другом и, по меньшей мере, одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, при этом упомянутая система содержит
по меньшей мере, одно устройство ввода/вывода,
переносимую виртуальную машину для интерпретации компьютерной программы на первом устройстве, при этом упомянутая виртуальная машина содержит виртуальный микропроцессор и драйвер для упомянутого, по меньшей мере одного, устройства ввода/вывода и
исполнительное средство, реагирующее на указанную интерпретированную программу для исполнения упомянутой программы.
2. Терминал, содержащий первое устройство для выполнения транзакции со вторым устройством, причем, по меньшей мере, одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, содержащий
переносимую виртуальную машину для интерпретации компьютерной программы на первом устройстве, при этом упомянутая виртуальная машина содержит виртуальный микропроцессор и драйвер, по меньшей мере, для одного устройства ввода/вывода, и
исполнительное средство, реагирующее на указанную интерпретированную программу для исполнения упомянутой программы.
3. Независимая переносимая интеллектуальная карточка, включающая в себя первое устройство для выполнения транзакции со вторым устройством, содержащая
переносимую виртуальную машину, содержащую виртуальный микропроцессор и драйвер, по меньшей мере, для одного устройства ввода/вывода.
4. Система по п.1, или терминал по п.2, или интеллектуальная карточка по п.3, в которых машинные команды упомянутой виртуальной машины представляют собой набор маркеров, причем указанные маркеры представляют собой пользовательский байтовый код.
5. Интеллектуальная карточка по п.3 или 4, дополнительно включающая в себя компьютерную программу, хранящуюся на интеллектуальной карточке, при этом упомянутая виртуальная машина осуществляет интерпретацию компьютерной программы, а исполнительное средство реагирует на интерпретированную программу для исполнения указанной программы.
6. Система или терминал по п.4 или интеллектуальная карточка по п.5, в которых упомянутая компьютерная программа записана как последовательность маркеров, выбранных из указанного набора маркеров, и соответствующих обрабатываемых данных.
7. Система, или терминал, или интеллектуальная карточка по п.6, в которых упомянутая последовательность маркеров транспортируется в модуле, модуль включает в себя последовательность маркеров вместе с соответствующими обрабатываемыми данными, требуемыми для исполнения модуля.
8. Система, или терминал, или интеллектуальная карточка по п.7, в которых упомянутый модуль также включает в себя указание требований к памяти для исполнения указанного модуля.
9. Система, или терминал, или интеллектуальная карточка по п.8, в которых виртуальная машина также включает в себя средство для загрузки указанного модуля и интерпретации содержащихся в нем маркеров.
10. Система, или терминал, или интеллектуальная карточка по п.9, в которых упомянутое средство для загрузки маркеров и интерпретации считывает указанные маркеры в упомянутом модуле и вырабатывает состояние исключительной ситуации, если считанный маркер не принадлежит к упомянутому множеству маркеров.
11. Система, или терминал, или интеллектуальная карточка по любому из пп.7-10, в которых упомянутая виртуальная машина содержит область логических адресов оперативной памяти, имеющую архив, по меньшей мере, для упомянутого модуля, причем упомянутый модуль содержит указание объема области логических адресов оперативной памяти, необходимого для его исполнения, кроме того, упомянутая виртуальная машина содержит средство для распределения после загрузки упомянутого модуля объема области логических адресов оперативной памяти в соответствии с упомянутым указанием, причем указанная распределенная область логических адресов оперативной памяти имеет определенные и защищенные границы.
12. Система, или терминал, или интеллектуальная карточка по п.11, дополнительно содержащие средство для перераспределения упомянутого распределенного объема области логических адресов оперативной памяти после завершения обработки указанного модуля.
13. Система, или терминал, или интеллектуальная карточка по любому из пп.9-12, в которых упомянутое второе устройство содержит средство для выдачи, по меньшей мере одной, программной команды, обеспечивающей возможность, по меньшей мере, изменения режима времени исполнения указанной компьютерной программы, и после того как указанное средство для загрузки и интерпретации загрузило упомянутый модуль и при исполнении этого модуля указанное средство для загрузки и интерпретации загружает и интерпретирует упомянутую, по меньшей мере, одну программную команду в зависимости от предварительно определенного условия защищенности; а упомянутое исполнительное средство реагирует на загруженную программную команду, интерпретированную виртуальной машиной, и исполняет упомянутую компьютерную программу в указанном измененном режиме.
14. Система, или терминал, или интеллектуальная карточка по п.13, в которых указанное условие защищенности предусмотрено в виде функции.
15. Система, или терминал, или интеллектуальная карточка по любому из пп.9-14, дополнительно содержащие область логических адресов оперативной памяти, включающую в себя, по меньшей мере одну, базу данных, содержащую, по меньшей мере одну, запись, при этом упомянутый модуль включает в себя указание объема неинициализированной области логических адресов оперативной памяти, требуемого для исполнения упомянутого модуля; причем средство загрузки распределит требуемый объем неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием, и
средство для доступа к записи в упомянутой базе данных, причем эта запись в базе данных доступна только через упомянутый модуль, при этом указанное средство доступа обеспечивает окно в текущей записи упомянутой базы данных и копирование этой записи в часть неинициализированной области логических адресов оперативной памяти, адресуемой упомянутой прикладной программой.
16. Система управления транзакциями, содержащая
первое устройство и второе устройство, причем указанные первое и второе устройства выполнены с возможностью обмена информацией друг с другом, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой;
второе устройство включает в себя средство для обеспечения, по меньшей мере одной, программной команды, обеспечивающей, по меньшей мере, модифицирование режима времени исполнения компьютерной программы на указанном первом устройстве;
первое устройство содержит виртуальную машину, которая включает в себя средство для загрузки и интерпретации компьютерной программы, указанное средство для загрузки и интерпретации кроме того выполнено с возможностью загрузки и интерпретации упомянутой, по меньшей мере одной, программной команды в зависимости от предварительно установленного условия защищенности после того, как средство для загрузки и интерпретации загрузило компьютерную программу и при исполнении компьютерной программы; и
исполнительное средство для исполнения загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на упомянутую загруженную и интерпретированную программную команду.
17. Терминал, содержащий
первое устройство для выполнения транзакции со вторым устройством, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой, а второе устройство включает в себя средство для выдачи, по меньшей мере одной, программной команды, обеспечивающей, по меньшей мере, модифицирование режима времени исполнения компьютерной программы на указанном первом устройстве, при этом в упомянутюь терминале
первое устройство содержит виртуальную машину, которая включает в себя средство для загрузки и интерпретации компьютерной программы, указанное средство для загрузки и интерпретации кроме того выполнено с возможностью загрузки и интерпретации упомянутой, по меньшей мере одной, программной команды в зависимости от предварительно установленного условия защищенности, после того как средство загрузки и интерпретации загрузило компьютерную программу и при исполнении компьютерной программы; и
исполнительное средство для исполнения загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на упомянутую загруженную и интерпретированную программную команду.
18. Независимая переносимая интеллектуальная карточка, содержащая
первое устройство для выполнения транзакции со вторым устройством, причем второе устройство включает в себя средство для выдачи, по меньшей мере одной, программной команды, обеспечивающей, по меньшей мере, модифицирование режима времени исполнения компьютерной программы на указанном первом устройстве, при этом в упомянутой интеллектуальной карточке
первое устройство содержит виртуальную машину, которая включает в себя средство для загрузки и интерпретации компьютерной программы, указанное средство для загрузки и интерпретации кроме того выполнено с возможностью загрузки и интерпретации упомянутой, по меньшей мере одной, программной команды в зависимости от предварительно установленного условия защищенности после того, как указанное средство для загрузки и интерпретации загрузило компьютерную программу и при исполнении компьютерной программы; и
исполнительное средство для исполнения загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на упомянутую загруженную и интерпретированную программную команду.
19. Система по п.16, или терминал по п.17, или интеллектуальная карточка по п.18, в которых упомянутое условие защищенности предусмотрено в виде функции.
20. Система, или терминал, или интеллектуальная карточка по п.19, в которых упомянутая, по меньшей мере одна, программная команда представляет собой первую программную команду, причем первое устройство включает в себя вторую программную команду для обеспечения, по меньшей мере, модифицирования режима времени исполнения компьютерной программы, при этом первая программная команда содержит ссылку на вторую программную команду, при этом средство для загрузки и интерпретации реагирует на упомянутую ссылку для загрузки упомянутой второй программной команды, а исполнительное средство исполняет указанную компьютерную программу в модифицированном режиме, как определено второй программной командой.
21. Система, или терминал, или интеллектуальная карточка по п.20, в которых упомянутая компьютерная программа и первая и вторая программные команды записаны в терминах последовательности маркеров и соответствующих обрабатываемых данных, причем каждый маркер представляет собой пользовательский байтовый код, выбранный из набора пользовательских байтовых кодов.
22. Система, или терминал, или интеллектуальная карта по п.21, в которых упомянутая виртуальная машина векторизует указанную последовательность маркеров и обрабатываемых данных первой и второй программных команд в упомянутую последовательность маркеров компьютерной программы.
23. Система, или терминал, или интеллектуальная карточка по п.21 или 22, в которых, по меньшей мере, последовательности маркеров компьютерной программы и, по меньшей мере, вторая программная команда транспортируются каждая в модуле, а каждый модуль включает в себя соответствующую последовательность маркеров вместе с соответствующими обрабатываемыми данными, требуемыми для исполнения модуля.
24. Система, или терминал, или интеллектуальная карточка по п.23, в которых упомянутый модуль также включает в себя указание памяти, требуемой для исполнения модуля.
25. Система, или терминал, или интеллектуальная карточка по п.23 или 24, в которых модуль компьютерной программы также включает в себя монопольный список, по меньшей мере одного, модифицируемого гнезда, которое определяет местоположение в последовательности маркеров и обрабатываемых данных модуля компьютерной программы, в которое виртуальная машина векторизует свою первую программную команду.
26. Система, или терминал, или интеллектуальная карта по п.25, в которых упомянутое, по меньшей мере одно, модифицируемое гнездо в модуле компьютерной программы содержит вектор исполнения для режима, устанавливаемого по умолчанию.
27. Система, или терминал, или интеллектуальная карта по п.26, в которых упомянутое исполнительное средство исполняет компьютерную программу в упомянутом режиме, устанавливаемом по умолчанию, если упомянутое предварительно установленное условие защищенности не разрешает загрузку, по меньшей мере одной, программной команды.
28. Система, или терминал, или интеллектуальная карточка по любому из пп.23-27, в которых виртуальная машина содержит
область логических адресов оперативной памяти, причем указанный модуль включает в себя указание объема области логических адресов оперативной памяти, необходимого для его исполнения, кроме того, виртуальная машина включает в себя средство для распределения, после загрузки модуля компьютерной программы, объема области логических адресов оперативной памяти в соответствии с этим указанием, причем указанная область логических адресов оперативной памяти имеет определенные и защищенные границы; и
средство для перераспределения упомянутого объема области логических адресов оперативной памяти после завершения модуля компьютерной программы.
29. Система, или терминал, или интеллектуальная карточка по любому из пп.23-28, дополнительно содержащая
область логических адресов оперативной памяти, содержащую, по меньшей мере одну, базу данных, включающую в себя множество записей, причем указанный модуль включает в себя указание объема неинициализированной области логических адресов оперативной памяти, необходимого для исполнения указанного модуля, а средство для загрузки распределяет требуемый объем неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и
средство для доступа к записи в базе данных, причем доступ к записям в базе данных обеспечивается только через модуль, и средство для доступа обеспечивает окно в текущую запись базы данных и копирование указанной записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой прикладной программой.
30. Система, или терминал, или интеллектуальная карточка по любому из пп.16-27, в которых упомянутое условие защищенности включает средство для проверки подлинности, по меньшей мере, источника и целостности данных и программных команд во втором устройстве.
31. Система транзакций, предназначенная для выполнения транзакций между первым устройством и вторым устройством, содержащая
виртуальную машину для интерпретации набора пользовательских байтовых кодовых маркеров, подаваемых на нее, причем виртуальная машина включает в себя виртуальный процессорный блок и область логических адресов оперативной памяти;
по меньшей мере, первую прикладную программу, включающую указание объема области логических адресов оперативной памяти, необходимого для ее исполнения, причем указанная первая прикладная программа написана как последовательность маркеров, выбранных из набора маркеров, и соответствующих обрабатываемых данных;
упомянутая виртуальная машина также включает в себя
загрузчик для загрузки упомянутой, по меньшей мере одной, первой прикладной программы и
средство для распределения первого объема области логических адресов оперативной памяти конкретно для первой прикладной программы в соответствии с указанием, причем распределенная область логических адресов оперативной памяти имеет определенные и защищенные границы.
32. Терминал, содержащий первое устройство для выполнения транзакций со вторым устройством, причем первое устройство, содержит виртуальэую машину для интерпретации набора пользовательских байтовых кодовых маркеров, подаваемых на него;
виртуальная машина включает в себя виртуальный процессорный блок и область логических адресов оперативной памяти;
по меньшей мере, первую прикладную программу, включающую указание объема области логических адресов оперативной памяти, необходимого для ее исполнения, причем указанная первая прикладная программа написана как последовательность маркеров, выбранных из набора маркеров, и соответствующих обрабатываемых данных;
упомянутая виртуальная машина также включает в себя
загрузчик для загрузки упомянутой, по меньшей мере одной, первой прикладной программы и
средство для распределения первого объема области логических адресов оперативной памяти конкретно для первой прикладной программы в соответствии с указанием, причем распределенная область логических адресов оперативной памяти имеет определенные и защищенные границы.
33. Независимая переносимая интеллектуальная карточка, включающая в себя первое устройство для выполнения транзакции со вторым устройством, причем первое устройство содержит виртуальную машину для интерпретации набора пользовательских байтовых кодовых маркеров, подаваемых на него;
виртуальная машина включает в себя виртуальный процессорный блок и область логических адресов оперативной памяти;
по меньшей мере, первую прикладную программу, включающую указание объема области логических адресов оперативной памяти, необходимого для ее исполнения, причем указанная первая прикладная программа написана как последовательность маркеров, выбранных из набора маркеров, и соответствующих обрабатываемых данных;
упомянутая виртуальная машина также включает в себя
загрузчик для загрузки упомянутой, по меньшей мере, одной первой прикладной программы; и
средство для распределения первого объема области логических адресов оперативной памяти конкретно для первой прикладной программы в соответствии с указанием, причем распределенная область логических адресов оперативной памяти имеет определенные и защищенные границы.
34. Система по п.31, или терминал по п.32, или интеллектуальная карточка по п.33, дополнительно содержащие средство для перераспределения в явном виде упомянутого первого объема области логических адресов оперативной памяти после завершения упомянутой, по меньшей мере одной, программы.
35. Система, или терминал, или интеллектуальная карточка по любому из пп.31-34, в которых, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой (КИС).
36. Система, или терминал, или интеллектуальная карточка по любому из пп.31-35, в которых упомянутая первая прикладная программа также включает в себя первый монопольный список, по меньшей мере одной, функции, которая может быть экспортирована в другие прикладные программы, и которые дополнительно содержат средство для предоставления указанной, по меньшей мере одной, функции в другие программы.
37. Система, или терминал, или интеллектуальная карточка по любому из пп.31-36, в которых упомянутая первая прикладная программа представляет собой первый модуль, а другие прикладные программы представляют собой другие модули, каждый модуль включает в себя, по меньшей мере последовательность маркеров, выбранных из множества маркеров, соответствующие обрабатываемые данные, первый монопольный список, по меньшей мере одной, функции, предназначенной для экспорта, и указание объема области логических адресов оперативной памяти, необходимой для исполнения модуля.
38. Система, или терминал, или интеллектуальная карточка по п.37, в которых первый модуль включает в себя второй монопольный лист, идентифицирующий, по меньшей мере один, второй модуль, из которого должна импортироваться, по меньшей мере одна, функция, а упомянутый загрузчик загружает указанный второй модуль в соответствии с указанным вторым списком после загрузки первого модуля.
39. Система, или терминал, или интеллектуальная карточка по п.38, в которых первый модуль завершается, если указанный, по меньшей мере один, второй модуль, который должен быть импортирован, не был успешно загружен.
40. Система, или терминал, или интеллектуальная карточка по любому из пп.37-39, в которых средство для распределения распределяет первый объем области логических адресов оперативной памяти после загрузки первого модуля и только распределяет второй или дополнительный объем области логических адресов оперативной памяти для указанного первого модуля в одном расширяемом буфере, начиная с первого адреса, а после освобождения указанного второго объема области логических адресов оперативной памяти первым модулем указанное средство перераспределения перераспределяет указанный второй объем области логических адресов оперативной памяти и все дополнительные распределения вне первого адреса.
41. Система, или терминал, или интеллектуальная карточка по п.40, в которых средство перераспределения перераспределяет указанный второй объем области логических адресов оперативной памяти и все дополнительные распределения вне первого адреса после завершения первого модуля.
42. Система, или терминал, или интеллектуальная карта по любому из пп.37-41, в которой область логических адресов оперативной памяти включает в себя, по меньшей мере одну, базу данных, включающую в себя, по меньшей мере одну, запись, причем указанный модуль включает в себя указание объема неинициализированной области логических адресов оперативной памяти, необходимой для исполнения модуля, а записи в базе данных доступны только через указанный модуль,
упомянутый загрузчик распределяет требуемый объем неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и
средство для доступа к записи в базе данных, обеспечивающее окно в текущую запись базы данных и копирование указанной записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой прикладной программой.
43. Система, или терминал, или интеллектуальная карта по любому из пп.37-42, в которой средство перераспределения стирает любой объем распределенной области логических адресов оперативной памяти после завершения упомянутого первого модуля.
44. Система транзакций, предназначенная для выполнения транзакций между первым устройством и вторым устройством, причем, по меньшей мере одно, из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой, содержащая виртуальную машину для интерпретации набора пользовательских байтовых кодовых маркеров, подаваемых на нее;
виртуальная машина включает в себя виртуальный процессорный блок и область логических адресов оперативной памяти;
по меньшей мере одну, базу данных, включающую в себя, по меньшей мере одну, запись и, по меньшей мере одну, компьютерную программу для исполнения виртуальной машиной, причем компьютерная программа представляет собой модуль, записанный в терминах последовательности маркеров, выбранных из набора маркеров и включающий в себя указание объема неинициализированной области логических адресов оперативной памяти, необходимой для исполнения модуля;
загрузчик для загрузки указанного модуля и для распределения требуемого объема неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и
средство для доступа к записи в базе данных, причем записи в базе данных доступны только посредством указанного модуля, средство для доступа обеспечивает окно в текущую запись базы данных и копирование указанной записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой прикладной программой.
45. Терминал, содержащий первое устройство для выполнения транзакций со вторым устройством, по меньшей мере, одно из указанных первого и второго устройств является карточкой с интегральной схемой, причем первое устройство содержит
виртуальную машину для интерпретации набора пользовательских байтовых кодовых маркеров, подаваемых на него, виртуальная машина включрхт в себя виртуальный процессорный блок и область логических адресов оперативной памяти;
по меньшей мере одну, базу данных, включающую в себя, по меньшей мере одну запись, и, по меньшей мере одну, компьютерную программу для исполнения виртуальной машиной, причем компьютерная программа представляет собой модуль, записанный в терминах последовательности маркеров, выбранных из набора маркеров, и включающий в себя указание объема неинициализированной области логических адресов оперативной памяти, необходимого для исполнения модуля;
загрузчик для загрузки указанного модуля и для распределения требуемого объема неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием и
средство для доступа к записи в базе данных, причем записи в базе данных доступны только посредством указанного модуля, причем средство для доступа обеспечивает окно в текущую запись базы данных и копирование указанной записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой прикладной программой.
46. Независимая переносимая интеллектуальная карточка, включающая в себя первое устройство для выполнения транзакции со вторым устройством, причем первое устройство содержит виртуальную машину для интерпретации набора пользовательских байтовых кодовых маркеров, подаваемых на него;
виртуальная машина включает в себя виртуальный процессорный блок и область логических адресов оперативной памяти;
по меньшей мере одну, базу данных, включающую в себя, по меньшей мере одну, запись и, по меньшей мере одну, компьютерную программу для исполнения виртуальной машиной, причем компьютерная программа представляет собой модуль, записанный в терминах последовательности маркеров, выбранных из набора маркеров, и включающий в себя указание объема неинициализированной области логических адресов оперативной памяти, необходимого для исполнения модуля;
загрузчик для загрузки указанного модуля и для распределения требуемого объема неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и
средство для доступа к записи в базе данных, причем записи в базе данных доступны только посредством указанного модуля, и средство для доступа обеспечивает окно в текущую запись базы данных и копирование указанной записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой прикладной программой.
47. Система по п.44, или терминал по п.45, или интеллектуальная карточка по п.46, в которых указанная база данных обрабатывается при первой загрузке упомянутого модуля.
48. Система, или терминал, или интеллектуальная карточка по любому из пп.1-47, в которых упомянутая виртуальная машина представляет собой стековую машину.
49. Система, или терминал, или интеллектуальная карточка по п.48, в которых упомянутая виртуальная машина представляет собой двухстековую машину, в которой первый стек является стеком данных, а второй стек - возвратным стеком.
50. Система, или терминал, или интеллектуальная карточка по любому из пп.1-49, в которых упомянутая виртуальная машина включает в себя память фрейма локальной переменной, регистр указателя фрейма для хранения указателя фрейма, указывающего на начало фрейма в памяти, и регистр указателя конца фрейма, указывающий на конец фрейма в памяти.
51. Система, или терминал, или интеллектуальная карточка по п.49 или 50, в которых стек данных и возвратный стек расположены не в памяти, непосредственно адресуемой компьютерной программой, а доступны только посредством стековых операций, определяемых маркерами и интерпретированных упомянутой виртуальной машиной.
52. Система или терминал по любому из пп.1-51, в которых упомянутое первое устройство представляет собой портативное устройство.
53. Система или терминал по пп. 52, в которых упомянутое портативное устройство включает в себя карточку с интегральной схемой (КИС).
54. Система или терминал по любому из пп.1-53, в которых упомянутое второе устройство включает в себя КИС.
5.5. Система по любому из пп.1-54, в которой упомянутое первое устройство представляет собой терминал.
56. Система, или терминал, или интеллектуальная карточка по любому из пп.1-55, в которых как первое, так и второе устройство содержат КИС.
57. Система, или терминал, или интеллектуальная карточка по любому из пп.1-56, в которых транзакция включает в себя, по меньшей мере одно, выполнение следующей последовательности:
а. создание канала обмена информацией между упомянутыми первым и вторым устройством;
b. выбор прикладной программы, включающей указанную компьютерную программу и связанный с ней набор данных, который определяет транзакцию;
с. исполнение упомянутой компьютерной программы и
d. завершение транзакции.
58. Система, или терминал, или интеллектуальная карточка по любому из пп.1-57, в которых транзакция представляет собой финансовую транзакцию, а упомянутая система представляет собой систему управления финансовыми транзакциями.
59. Карточка с интегральной схемой, содержащая программную команду, обеспечивающую модифицирование режима исполнения программы в системе по любому из пп.1-58, в терминале по любому из пп.2-58 или в интеллектуальной карточке по любому из пп.3-58.
60. Способ выполнения транзакции между первым устройством и вторым устройством, причем, по меньшей мере, одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, включающее
выдачу, по меньшей мере одной, программной команды во втором устройстве, обеспечивающей возможность, по меньшей мере, модифицировать режим времени выполнения компьютерной программы в первом устройстве,
загрузку и интерпретацию компьютерной программы,
загрузку и интерпретацию упомянутой, по меньшей мере одной, программной команды в зависимости от предварительно определенного условия защищенности при исполнении компьютерной программы, и
исполнение загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на загруженную и интерпретированную программную команду.
61. Способ выполнения транзакции между первым устройством и вторым устройством, включающий
интерпретацию, по меньшей мере одной, прикладной программы, записанной как последовательность байтовых кодовых маркеров, выбранных из набора маркеров и соответствующих обрабатываемых данных;
загрузку упомянутой, по меньшей мере одной, прикладной программы;
распределение первого объема области логических адресов оперативной памяти конкретно для указанной, по меньшей мере одной, прикладной программы в соответствии с содержащимся в прикладной программе указанием области логических адресов оперативной памяти, требуемой для ее исполнения; и
определение и защиту границ распределенной области логических адресов оперативной памяти.
62. Способ по п.61, дополнительно включающий
перераспределение в явном виде упомянутого первого объема области логических адресов оперативной памяти после завершения упомянутой, по меньшей мере одной, первой прикладной программы.
63. Способ выполнения транзакции между первым устройством и вторым устройством, причем, по меньшей мере, одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, включающий
интерпретацию маркеров в модуле, записанном в терминах последовательности упомянутых маркеров, выбранных из набора маркеров;
распределение некоторого объема неинициализированной области логических адресов оперативной памяти в соответствии с содержащимся в упомянутом модуле указанием неинициализированной области логических адресов оперативной памяти, требуемой для исполнения упомянутого модуля;
доступ к записи в базе данных путем обеспечения окна в текущую запись в базе данных, причем записи в базе данных доступны только через указанный модуль; и
копирование упомянутой записи в часть неинициализированной области логических адресов оперативной памяти, адресуемую указанным модуыхь.
64. Способ выполнения транзакции между первым устройством и вторым устройством, причем, по меньшей мере, одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, включающий
обеспечение переносимой виртуальной машины, включающей в себя виртуальный микропроцессор и драйвер, по меньшей мере, для одного устройства ввода/вывода;
интерпретацию компьютерной программы на указанном первом устройстве с использованием переносимой виртуальной машины и
исполнение указанной программы в ответ на интерпретированную программу.
Текст
1 Настоящее изобретение относится к системе, включающей в себя программируемые устройства с микропроцессорами, такие как терминалы и карточки с интегральными схемами, а также к способу работы таких карточек и терминалов, включая электронные банковские автоматы самообслуживания (банкоматы), персональные компьютеры, предоплаченные телевизионные блоки, системы терминалов для совершения безналичных платежей при оплате товаров и услуг, медицинские карточки и т.п. Оно также может быть использовано при выполнении финансовых транзакций. Предшествующий уровень техники Известны различные типы терминалов,применяемые для выполнения сделок, например, финансовых транзакций, которые связаны с переводом или обменом стоимостей, или сделок коммерческого характера, таких как сделки с медицинскими карточками, или в принципе для получения доступа, например, SIM-карточки мобильного телефона системы GSM (глобальной мобильной телефонной связи). Терминалы,например, системы терминалов для совершения безналичных платежей при оплате товаров и услуг (ПОТ), электронные банковские автоматы самообслуживания (банкоматы), или мобильные телефоны системы GSM хорошо известны. На практике продукция такого рода включает в себя изделия от малогабаритных портативных устройств с простыми 8-битовыми микропроцессорами серии Intel 8031/8051, поставляемые компанией Untel Corp. (США), или карточек с интегральными схемами (КИС) до 32-битовых компьютерных операционных систем типаUNIX или Windows NT, поставляемых компанией Microsoft Corp. (США). Некоторые из этих машин взаимодействуют с персональной карточкой пользователя, которая может представлять собой карточку с магнитной полосой, карточку с микросхемой, включающей микропроцессор, или КИС, которая запоминает специфический идентификационный код пользователя и информацию проверки подлинности, необходимую для того, чтобы инициировать обмен информацией между пользователем и терминалом. Пользователь помещает карточку в устройство считывания с карточек, связанное с терминалом,после чего выполняется программа, загруженная в терминал, осуществляющая проверку записанной на карточке информации пользователя для установления ее подлинности и, при необходимости, предлагающая ввести пароль или индивидуальный номер, например персональный идентификационный номер (PIN-код). После подтверждения подлинности программа обычно разрешает пользователю выбрать необходимый для выполнения вид обслуживания,например, снятие наличных, проверка текущего баланса. Терминал может быть автономным или соединяться с большим компьютером либо локально, либо посредством телекоммуникацион 001598 2 ной сети. Такие терминалы часто предоставляются для пользования в течение 24 ч в сутки и должны удовлетворять минимальны требованиям технического обслуживания при высоком уровне защищенности. Такие терминалы характеризуют собой необходимость значительных капиталовложений в аппаратные средства и обычно не заменяются через небольшие интервалы времени. Обновление программного обеспечения, выполняемого на таких терминалах, становится необходимым по мере предоставления новых видов обслуживания и должно производиться с высокой надежностью. В принципе, организации, использующие терминалы, такие как банки, требуют сертификации каждого обновления данных. Такие обновление данных может производиться вручную или дистанционно посредством частной или общедоступной телекоммуникационной сети, например, как описано в патенте США 5434999. Такие известные схемы требуют, чтобы для новых разработок были известны тип и модель терминала, так как программное обеспечение для каждого терминала должно создаваться как специализированное для данного типа терминалов, что требует высоких затрат. Кроме того, для обеспечения возможности предоставления обслуживания для всех возможных организаций, предоставляющих подобное обслуживание, например, для банков или кредитных организаций, терминалы должны иметь возможность обрабатывать все программы всех таких организаций. Вследствие высокой мобильности пользователей, как частного, так и коммерческого сектора, предпочтительно, чтобы все виды обслуживания, которые предоставляются в стране, могли быть доступными на каждом терминале. Это привело бы в результате к излишне большому объему обработки и размеру памяти для каждого терминала. Кроме того, каждая из этих программ должна иметь возможность обновляться по мере необходимости. Возможным решением могло бы быть использование малой рабочей станции для каждого терминала, связанного с телекоммуникационной системой. Такая система должна иметь возможность автономной обработки и переключения в рабочий режим для обработки нестандартных транзакций или для автоматического обновления резидентных программ. Рабочие станции могли бы потребоваться, например, для выполнения комплексных схем подтверждения права доступа и шифрования для обеспечения защиты системы, открытой для попыток несанкционированного доступа через телефонные сети общего пользования. С увеличением размера и сложности системы проблема обеспечения защиты также будет возрастать. Но даже для таких систем могут возникнуть проблемы в связи с контролем версий. Не все пользователи предоставляемых услуг одной и той же организации могут иметь карточки, 3 соответствующие новейшей версии соответствующего типа обслуживания. Это может иметь место, когда межгосударственные организации вводят или обновляют предоставляемое обслуживание в различные отрезки времени в различных странах. В заявке WО 96/18979 было предложено обновлять программное обеспечение для терминалов просто для сеанса связи, реализуемого с применением персональной КИС пользователя. Программные команды, представляющие стандартные подпрограммы, запоминаются на карточке и могут экспортироваться в терминал, где они интерпретируются. Использование интерпретатора в терминале позволяет использовать одну и ту же карточку с любым терминалом, который содержит интерпретатор,и поэтому обеспечивает независимость транзакции от центрального процессора в терминале. Однако в указанном источнике не описан какойлибо способ контроля защищенности, который мог бы исключить потенциально опасные подпрограммы. Терминалы описанного типа содержат процессор, включающий в себя память какоголибо типа, обычно ОЗУ для выполнения программ, ПЗУ для хранения данных, предназначенных только для считывания, которые могут включать в себя программу для операционной системы терминала и энергонезависимую память для записи и считывания, предназначенную для хранения основных данных, которые могут изменяться. Персональные данные пользователя должны храниться в защищенном виде,вследствие чего обеспечивается невозможность доступа одного пользователя к данным другого пользователя, а также случайный или преднамеренный несанкционированный доступ. Кроме того, различные блоки памяти терминала, предназначенные для записи, не должны дефрагментироваться с течением времени. Дефрагментация памяти может привести к образованию блоков непрерывной памяти, размеры которых сокращены, так что определенные программы не могут быть реализованы. Для решения этой проблемы некоторые языки программирования,например Java используют программу сбор мусора (сбор в памяти ненужной информации),представляющую собой стандартную программу, которая позволяет идентифицировать данные в памяти, которые больше не требуются, и перемещает их. В настоящее время существует мнение, что программа сбора мусора представляет собой более надежный путь управления памятью, чем использование программы, которая в явном виде перемещает свои собственные запомненные данные. Явное распределение памяти и перемещение хранимых данных в памяти считается некоторыми специалистами самым большим источником ошибок программирования в обычных языках программирования высокого уровня, таких как С или C. 4 Программа сбора мусора имеет ряд недостатков. Во-первых, программа сбора мусора представляет собой функцию операционной системы, а не программу, специфическую для какой-либо прикладной программы. Поэтому программа сбора мусора не гарантирует, что данные каждой прикладной программы перемещаются в конце выполнения прикладной программы, а наоборот, такие данные могут присутствовать в течение некоторого времени до тех пор, пока отсутствие доступа не запустит выполнение программы сбора мусора. В финансовых транзакциях требуется более надежный способ исключения возможности адресации личных пользовательских данных. Во-вторых,эта программа увеличивает размер области памяти, требуемой для операционной системы. В случае КИС или некоторых терминалов память должна быть ограничена, и использование программы сбора мусора могло бы привести к серьезным недостаткам. Как объяснено выше, терминалы заменяются весьма нечасто, так что обычно в системе в одно и то же время работают различные процессоры с разными объемами памяти. Терминалы более ранних поколений часто ограничены по своим возможностям. Хотя эти устаревшие терминалы можно заменить,однако потребности более совершенного и комплексного обслуживания означают, что устаревшие терминалы никогда не будут заменяться с такой частотой, которая исключила бы их отставание по обеспечиваемым возможностям. Следовательно, требование более компактных операционных систем, которые могут работать с различными типами процессоров, вероятно, сохранится и в будущем. Наконец, программа сбора мусора не освобождает память настолько оперативно, насколько это обеспечивается при освобождении памяти с использованием программы явного перемещения данных в памяти. Это также может увеличить объем памяти, требуемый, когда память привязывается, когда она должна быть освобождена. Надежный способ распределения памяти во время работы программы описан в патенте США 5434999. Например, в соответствии с этим известным способом интерпретатор в терминале выполняет систематическую проверку любой команды, манипулирующей адресом памяти для проверки того, является ли разрешенной область памяти, к которой запрашивается доступ. Недостатком этой системы является то,что каждая команда должна проверяться таким путем, что существенно замедляет обработку. Проверка времени исполнения программы является дорогостоящей по выполнению. Таким образом, существует потребность в системе обеспечения программируемых терминалов, позволяющей прикладному программисту генерировать программное обеспечение,выполненной переносимой и нейтральной по отношению к гетерогенным терминалам, т.е. 5 независимой от процессора, используемого в терминале, и не требующей проверки для каждого типа или выполнения терминала. Операционная система терминала и прикладные программы должны быть предпочтительно компактными, выполняемыми с высокой скоростью и удовлетворяющими требованиям защищенности. Кроме того, предпочтительно прикладные программы должны легко обновляться, по меньшей мере, чтобы пользователь мог получать ожидаемое обслуживание независимо от географического местоположения терминала. Задачей изобретения является создание защищенной системы управления транзакциями и способа работы такой системы. Также задачей настоящего изобретения является создание защищенных терминалов и КИС для транзакций, а также способов работы таких устройств. Кроме того, задачей настоящего изобретения является создание устройства, используемого при осуществлении транзакций, которое может быть реализовано в виде малогабаритных портативных устройств таких, как карточка с интегральной схемой (КИС). Также задачей изобретения является создание системы осуществления транзакций, в которой программное обеспечение терминалов или КИС может обновляться с использованием терминалов или КИС в качестве источников информации для обновления программного обеспечения. Кроме того, задачей изобретения является создание системы управления транзакциями и способа работы системы, которая обеспечивает высокую защищенность при хорошем быстродействии работы. Сущность изобретения Настоящее изобретение относится к системе управления транзакциями, предназначенной для выполнения транзакций между первым устройством и вторым устройством, указанные первое и второе устройства выполнены с возможностью осуществления обмена информацией друг с другом, причем, по меньшей мере,одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, а указанная система содержит: по меньшей мере, одно устройство ввода/вывода; портативную виртуальную машину для интерпретации компьютерной программы на упомянутом первом устройстве, при этом упомянутая виртуальная машина содержит виртуальный микропроцессор и драйвер для указанного, по меньшей мере, одного устройства ввода/вывода, и исполнительное средство, реагирующее на указанную интерпретированную программу, для выполнения указанной программы. Предпочтительно портативная виртуальная машина представляет собой стековую ма 001598 6 шину, которая обеспечивает быстродействие и компактность. Настоящее изобретение также предусматривает терминал, включающий в себя первое устройство для выполнения транзакции со вторым устройством, причем, по меньшей мере,одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, содержащий переносимую виртуальную машину, интерпретирующую компьютерную программу в указанном первом устройстве,причем портативная виртуальная машина включает в себя виртуальный микропроцессор и драйвер, по меньшей мере, для одного устройства ввода/вывода, и исполнительное средство,реагирующее на указанную интерпретируемую программу для выполнения этой программы. Настоящее изобретение также относится к независимой переносимой карточке с микропроцессором (интеллектуальной карточке),включающей в себя первое устройство для выполнения транзакции со вторым устройством,причем указанная интеллектуальная карточка включает в себя переносимую виртуальную машину, содержащую виртуальный микропроцессор и драйвер, по меньшей мере, для одного устройства ввода/вывода. Настоящее изобретение также относится к системе управления транзакциями, включающей в себя первое устройство и второе устройство,упомянутые первое и второе устройства предназначены для обмена информацией друг с другом, причем, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой; второе устройство включает в себя средство для выработки, по меньшей мере, одной программной команды, обеспечивающей, по меньшей мере, модифицирование режима времени выполнения компьютерной программы на упомянутом первом устройстве; первое устройство включает в себя виртуальную машину, которая содержит средство для загрузки и интерпретации указанной компьютерной программы, которое, кроме того, предназначено для загрузки и интерпретации упомянутой, по меньшей мере,одной программной команды в зависимости от предварительно определенного условия защищенности, после того как упомянутое средство для загрузки и интерпретации загрузило данную компьютерную программу и при выполнении указанной компьютерной программы; и исполнительное средство для исполнения загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на упомянутую загруженную и интерпретированную программную команду. Кроме того, настоящее изобретение предусматривает терминал, содержащий первое устройство для выполнения транзакции с вторым устройством, причем, по меньшей мере, одно из упомянутых первого и второго устройств пред 7 ставляет собой карточку с интегральной схемой,второе устройство включает в себя средство для выработки, по меньшей мере, одной программной команды, обеспечивающей, по меньшей мере, модифицирование режима времени выполнения компьютерной программы на упомянутом первом устройстве; указанный терминал включает в себя виртуальную машину, которая содержит средство для загрузки и интерпретации указанной компьютерной программы, которое, кроме того, предназначено для загрузки и интерпретации упомянутой, по меньшей мере,одной программной команды в зависимости от предварительно определенного условия защищенности, после того как упомянутое средство для загрузки и интерпретации загрузило данную компьютерную программу и при выполнении указанной компьютерной программы; и исполнительное средство для исполнения загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на упомянутую загруженную и интерпретированную программную команду. Настоящее изобретение предусматривает также независимую переносимую интеллектуальную карточку, включающую в себя первое устройство для выполнения транзакции с вторым устройством, при этом указанное второе устройство содержит средство для обеспечения,по меньшей мере, одной программной команды,обеспечивающей, по меньшей мере, модифицирование режима времени выполнения компьютерной программы на упомянутом первом устройстве; указанная интеллектуальная карта содержит указанное первое устройство, включающее в себя виртуальную машину, которая содержит средство для загрузки и интерпретации указанной компьютерной программы, которое, кроме того, предназначено для загрузки и интерпретации упомянутой, по меньшей мере,одной программной команды в зависимости от предварительно определенного условия защищенности, после того как упомянутое средство для загрузки и интерпретации загрузило данную компьютерную программу и при выполнении указанной компьютерной программы; и исполнительное средство для исполнения загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на упомянутую загруженную и интерпретированную программную команду. Настоящее изобретение также предусматривает систему осуществления транзакций,предназначенную для выполнения транзакций между первым устройством и вторым устройством, причем указанная система содержит виртуальную машину для интерпретации множества пользовательских байтовых кодовых маркеров,примененных к ней; указанная виртуальная машина содержит виртуальный процессорный блок и область логических адресов оперативной памяти;, по меньшей мере, одна первая при 001598 8 кладная программа включает указание объема области логических адресов оперативной памяти, требуемого для ее исполнения, причем указанная, по меньшей мере, одна первая прикладная программа записана как поток маркеров,выбранных из упомянутого множества маркеров, и соответствующих обрабатываемых данных; кроме того, виртуальная машина также содержит загрузчик для загрузки упомянутой,по меньшей мере, одной первой прикладной программы и средство для распределения первого объема области логических адресов оперативной памяти конкретным образом для упомянутой, по меньшей мере, одной первой прикладной программы в соответствии с упомянутым указанием, причем указанная распределенная область логических адресов оперативной памяти имеет определенные и защищенные границы. Первое устройство в соответствии с настоящим изобретением может представлять собой персональный компьютер, соединенный с сетью Интернет и исполняющий программу браузер (программа просмотра Web серверов), причем требование, состоящее в том, что каждый модуль, принимаемый программой браузер, должен содержать указание требований к памяти, улучшает защищенность программы браузер и ограничивает повреждения,которые могли бы иметь место, если бы в импортируемом модуле содержался какой-либо вирус. Настоящее изобретение предусматривает терминал, содержащий первое устройство для исполнения транзакций с вторым устройством,при этом указанное первое устройство содержит виртуальную машину для интерпретации множества пользовательских байтовых кодовых маркеров, поступающих на нее; причем виртуальная машина включает в себя виртуальный процессорный блок и область логических адресов оперативной памяти; по меньшей мере, одну первую прикладную программу, включающую в себя указание объема области логических адресов оперативной памяти, требуемого для ее исполнения, и первый монопольный перечень, по меньшей мере, одной функции, которая может экспортироваться в другие прикладные программы, причем указанная, по меньшей мере,одна первая прикладная программа записана как поток маркеров, выбранных из упомянутого множества маркеров, и соответствующих обрабатываемых данных; кроме того, виртуальная машина также содержит загрузчик для загрузки упомянутой, по меньшей мере, одной первой прикладной программы и средство для распределения первого объема области логических адресов оперативной памяти конкретным образом для упомянутой, по меньшей мере, одной первой прикладной программы в соответствии с упомянутым указанием, причем указанная распределенная область логических адресов опера 9 тивной памяти имеет определенные и защищенные границы. Настоящее изобретение может также предусматривать независимую переносимую интеллектуальную карточку, включающую в себя первое устройство для выполнения транзакций с вторым устройством, причем указанное первое устройство содержит виртуальную машину для интерпретации множества пользовательских байтовых кодовых маркеров, примененных к ней; указанная виртуальная машина содержит виртуальный процессорный блок и область логических адресов оперативной памяти; по меньшей мере, одну первую прикладную программу, включающую указание объема области логических адресов оперативной памяти, требуемого для ее исполнения, причем указанная,по меньшей мере, одна первая прикладная программа записана как поток маркеров, выбранных из упомянутого множества маркеров, и соответствующих обрабатываемых данных; кроме того, виртуальная машина также содержит загрузчик для загрузки упомянутой, по меньшей мере, одной первой прикладной программы и средство для распределения первого объема области логических адресов оперативной памяти конкретным образом для упомянутой, по меньшей мере, одной первой прикладной программы в соответствии с упомянутым указанием, причем указанная распределенная область логических адресов оперативной памяти имеет определенные и защищенные границы. Настоящее изобретение может также предусматривать систему для осуществления транзакций между первым и вторым устройством,при этом, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой, а указанная система содержит виртуальную машину для интерпретации множества созданных пользователями байтовых кодовых маркеров, примененных к ней; указанная виртуальная машина содержит виртуальный процессорный блок и область логических адресов оперативной памяти, по меньшей мере, одну базу данных, включающую, по меньшей мере, одну запись, и, по меньшей мере, одну компьютерную программу для выполнения виртуальной машиной, указанная компьютерная программа представляет собой модуль, записанный в виде потока упомянутых маркеров, выбранных из упомянутого множества, и включает указание объема области логических адресов оперативной памяти, требуемого для исполнения упомянутого модуля,загрузчик для загрузки упомянутого модуля и для распределения требуемого объема неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и средство для доступа к записи в указанной базе данных, причем к записям в базе данных имеется доступ только через указанный модуль, и средство доступа обеспечива 001598 10 ет окно в текущую запись базы данных и копирование этой записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой указанной прикладной программой. Кроме того, настоящее изобретение может также предусматривать терминал, содержащий первое устройство для выполнения транзакций с вторым устройством, при этом, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой, и первое устройство включает в себя виртуальную машину для интерпретации множества пользовательских байтовых кодовых маркеров, примененных к ней, причем указанная виртуальная машина содержит виртуальный процессорный блок и область логических адресов оперативной памяти, по меньшей мере, одну базу данных, включающую, по меньшей мере,одну запись, и, по меньшей мере, одну компьютерную программу для выполнения виртуальной машиной, указанная компьютерная программа представляет собой модуль, записанный в виде потока упомянутых маркеров, выбранных из упомянутого множества, и включает указание объема области логических адресов оперативной памяти, требуемого для исполнения упомянутого модуля; загрузчик для загрузки упомянутого модуля и для распределения требуемого объема неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и средство для доступа к записи в указанной базе данных, причем к записям в базе данных имеется доступ только через указанный модуль, и средство доступа обеспечивает окно в текущую запись базы данных и копирование этой записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой указанной прикладной программой. Настоящее изобретение может обеспечивать независимую переносимую интеллектуальную карточку, включающую в себя первое устройство для выполнения транзакции с вторым устройством, при этом указанное первое устройство содержит виртуальную машину для интерпретации множества пользовательских байтовых кодовых маркеров, примененных к ней, и указанная виртуальная машина содержит виртуальный процессорный блок и область логических адресов оперативной памяти, по меньшей мере, одну базу данных, включающую,по меньшей мере, одну запись, и, по меньшей мере, одну компьютерную программу для выполнения виртуальной машиной, указанная компьютерная программа представляет собой модуль, записанный в виде потока упомянутых маркеров, выбранных из упомянутого множества, и включает указание объема области логических адресов оперативной памяти, требуемого для исполнения упомянутого модуля; загрузчик для загрузки упомянутого модуля и для распре 11 деления требуемого объема неинициализированной области логических адресов оперативной памяти в соответствии с упомянутым указанием; и средство для доступа к записи в указанной базе данных, причем к записям в базе данных имеется доступ только через указанный модуль, и средство доступа обеспечивает окно в текущую запись базы данных и копирование этой записи в часть упомянутой неинициализированной области логических адресов оперативной памяти, адресуемой указанной прикладной программой. Настоящее изобретение также предусматривает способ осуществления транзакции между первым устройством и вторым устройством,причем, по меньшей мере, одно из упомянутых первого и второго устройств представляет собой карточку с интегральной схемой, включающий обеспечение, по меньшей мере, одной программной команды второму устройству, имеющему возможность, по меньшей мере, модифицирования режима времени выполнения компьютерной программы на первом устройстве; загрузку и интерпретацию упомянутой компьютерной программы, загрузку и интерпретацию упомянутой, по меньшей мере, одной программной команды в зависимости от предварительно определенного условия защищенности при выполнении указанной компьютерной программы; и исполнение упомянутой загруженной и интерпретированной компьютерной программы в упомянутом модифицированном режиме в ответ на указанную загруженную и интерпретированную программную команду. Настоящее изобретение также обеспечивает способ выполнения транзакции между первым устройством и вторым устройством, включающий интерпретацию, по меньшей мере, одной прикладной программы, записанной как поток байтовых кодовых маркеров, выбранных из множества маркеров, и соответствующих обрабатываемых данных; загрузку упомянутой,по меньшей мере, одной прикладной программы; распределение первого объема области логических адресов оперативной памяти конкретно для указанной, по меньшей мере, одной прикладной программы в соответствии с содержащимся в указанной прикладной программе указанием объема области логических адресов оперативной памяти, необходимого для ее выполнения, и определение и защиту границ указанной распределенной области логических адресов оперативной памяти. Данный способ объединяет использование интерпретатора с распределением и, дополнительно, перемещением данных в области памяти. Это обеспечивает сочетание гибкости и переносимости конструкции с обеспечением гарантий времени исполнения после того, как прикладная программа тщательно проверена на этапе компиляции. Это позволяет снизить повреждения, которые могут 12 быть обусловлены вирусами в импортированных модулях прикладной программы. Настоящее изобретение также включает способ осуществления транзакций в системе между первым устройством и вторым устройством, причем, по меньшей мере, одно из указанных первого и второго устройств является карточкой с интегральной схемой, включающий интерпретацию маркеров в модуле, записанном в виде потока маркеров, выбранных из множества маркеров; распределение определенного объема неинициализированной области логических адресов оперативной памяти в соответствии с указанием в упомянутом модуле объема неинициализированной области логических адресов оперативной памяти, требуемого для выполнения указанного модуля; предоставление доступа к записи в базе данных путем формирования окна в текущей записи в упомянутой базе данных; причем доступ к записям в базу данных может быть предоставлен только через указанный модуль; и копирование упомянутой записи в часть указанной неинициализированной области логических адресов оперативной памяти,адресуемой указанным модулем. Настоящее изобретение также относится к способу осуществления транзакции между первым устройством и вторым устройством, причем, по меньшей мере, одно из указанных первого и второго устройств представляет собой карточку с интегральной схемой, включающее обеспечение переносимой виртуальной машины, включающей в себя виртуальный микропроцессор и драйвер, по меньшей мере, для одного устройства ввода/вывода; интерпретацию компьютерной программы в упомянутом первом устройстве с использованием упомянутой портативной виртуальной машины и исполнение указанной программы в соответствии с указанной интерпретированной программой. В соответствии с настоящим изобретением заявлена защищенная система управления транзакциями, предпочтительно включающая в себя портативный виртуальный микропроцессор. Предпочтительно, каждый модуль имеет набор областей виртуальных адресов, гарантированно отличающихся от любой другой области виртуальных адресов. Также портативный виртуальный микропроцессор предпочтительно защищает доступ к совместно используемым ресурсам,таким как различные стеки или базы данных. Предпочтительно минимальная защита предоставляется проверкой в памяти доступа к границам области памяти для считывания и записи и абсолютным запретом записей в кодовую область. Кроме того, предпочтительной является проверка на потерю значимости и переполнение стеков данных и возвратных стеков. Предпочтительно, модуль может получить доступ только к тому, что другой модуль экспортирует в явном виде. Предпочтительно, отсутствует возможность доступа к неэкспортированным данным(виртуальный микропроцессор не допускает утечки), за исключением доступа посредством функции, обеспечиваемой модулем. Модули предпочтительно не могут экспортировать данные в обычном смысле; они предпочтительно могут экспортировать только функции. Предпочтительно, логические границы устанавливают запрет на утечку из области данных. Иными словами, все данные, принадлежащие модулю,предпочтительно являются строго частными(индивидуального пользования). Это ограничение предпочтительно усиливается за счет как времени компиляции, так и времени исполнения, так как модули имеют отдельные адресные области, что означает, что адрес определенных данных в определенном модуле полностью лишен смысла вне модуля, которому они принадлежат. Предпочтительно, модуль может только экспортировать множество управляющих команд, для запуска или отключения конкретного поведения (характера изменения некоторой функции). Предпочтительно, модули с хорошим поведением будут исполняться безусловно, в то время как модули, для которых не свойственно такое хорошее поведение, будут прерываться исключительными состояниями, непосредственно обеспечиваемыми портативным виртуальным процессором при попытках противоправных действий. Зависимые пункты формулы изобретения определяют отдельные варианты осуществления настоящего изобретения. Далее настоящее изобретение, его варианты осуществления и обеспечиваемые преимущества описываются со ссылками на чертежи. Краткое описание чертежей Фиг. 1 - схематичное представление терминала, соответствующего настоящему изобретению. Фиг. 2 - схематичное представление КИС,соответствующей настоящему изобретению. Фиг. 3 - блок-схема процедуры разработки и выполнения модуля в соответствии с настоящим изобретением. Фиг. 4 - схематичное представление портативного виртуального микропроцессора, соответствующего настоящему изобретению, реализованного в терминале. Фиг. 5 - схематичное представление портативного виртуального микропроцессора, соответствующего настоящему изобретению. Фиг. 6 - схематичное представление модулей, загружаемых в память, в соответствии с настоящим изобретением. Фиг. 7 - схематичное представление способа получения доступа к записи в базе данных в соответствии с настоящим изобретением. Фиг. 8 - схематичное представление процедуры штекер и гнездо в соответствии с настоящим изобретением. 14 Фиг. 9 - блок-схема процедуры загрузки модуля в соответствии с настоящим изобретением. Фиг. 10 - блок-схема процедуры загрузки модуля в соответствии с настоящим изобретением. Фиг. 11 - блок-схема процедуры штекер и гнездо в соответствии с настоящим изобретением. Фиг. 12 - блок-схема процедуры загрузки модуля карты в соответствии с настоящим изобретением. В приложении приведены коды маркеров и стандартные исключительные состояния. Описание примеров осуществления изобретения Настоящее изобретение описывается ниже со ссылками на конкретные чертежи и определенные варианты осуществления, однако изобретение не ограничивается ими, а должно определяться только в соответствии с формулой изобретения. Чертежи дают лишь схематичное представление и не накладывают никаких ограничений. Настоящее изобретение описано на примере финансовых транзакций, но не ограничивается ими. Кроме того, настоящее изобретение будет описано главным образом применительно к терминалу, однако настоящее изобретение также предусматривает переносимый виртуальный микропроцессор на любом соответствующем устройстве, например на персональном компьютере, КИС или комбинации КИС и интерфейса, как описано в международной заявкеWО 94/10657. Основным техническим принципом, на котором основано настоящее изобретение, является портативность в сочетании с защитой данных и гарантиями при выполнении в системе осуществления транзакций, которые независимы от результирующей реализации, при условии, что статические проверки прошли успешно. Этот принцип реализуется за счет одного или более следующих признаков: использование виртуальной машины в качестве интерпретатора,включение драйвера устройств ввода/вывода в виртуальную машину, так чтобы прикладные программы имели общий интерфейс с устройствами ввода/вывода и поэтому были машинонезависимыми (переносимыми) для широкого разнообразия внешних конфигураций, включение указания объема памяти в прикладную программу и распределение памяти в соответствии с этим указанием, явное перемещение данных в памяти и обеспечение защищенного способа импортирования и экспортирования данных относительно прикладных программ и/или баз данных. На фиг. 1 приведено схематичное представление терминала 1, выполненного в соответствии с изобретением. В типовом случае терминал 1 включает в себя центральный процессорный блок (ЦПБ) 2, соединенный с памя 15 тью 4, и устройства ввода/вывода 6 посредством шины 3 для осуществления двустороннего обмена информацией. Устройства ввода/вывода 6 могут представлять собой клавиатуру для ввода данных и экран, например блок визуального отображения (дисплей), например, жидкокристаллический дисплей (ЖКД) или дисплей на светодиодах (ДСД), и обеспечивают отображение процесса транзакции и/или отображение сообщений или подсказок. Устройство ввода/вывода 6 может быть выполнено в виде устройства считывания 7 с карточек, с помощью которого может считываться КИС при ее вводе в приемную щель устройства считывания 7. Реальная форма выполнения терминала может варьироваться в значительной степени. Терминал может представлять собой например, терминал системы для осуществления безналичных расчетов и включать в себя процессоры от модели Intel 8051 до Pentium. Кроме того, не обязательно, чтобы терминал 1 располагался полностью на одной позиции; различные составные части терминала, такие как устройство считывания 7 с карточек, устройства ввода/вывода в виде клавиатуры и дисплея, а также процессор могут иметь различные местоположения и соединяться посредством кабелей, беспроводного канала связи, представлять собой локальную сеть или быть взаимосвязанными посредством телекоммуникационных сетей. На фиг. 2 схематично представлена карточка с интегральной схемой (КИС) 5, соответствующая настоящему изобретению. Однако настоящее изобретение не ограничивается данным примером. КИС 5 включает в себя, по меньшей мере, порт вода/вывода 10 и некоторую постоянную память, например, энергонезависимую память, например, электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ) 15, соединенное с портом ввода/вывода 10 посредством шины 17, или ОЗУ с батарейным питанием. Порт ввода/вывода 10 может быть использован для обмена информацией с терминалом 1 через устройство считывания 7 с карточек. КИС представляет собой карточку, на которой имеется одна или несколько интегральных схем для выполнения, по меньшей мере, функций памяти. Как вариант, КИС 5 может представлять собой независимую переносимую (т.е. машинонезависимую) интеллектуальную карточку и включать в себя оперативную память для записи/считывания, например, энергозависимую память в виде ОЗУ 14, и центральный процессор 12, а также все необходимые схемы, чтобы КИС 5 могла работать в качестве микропроцессора,например, ПЗУ 13 для хранения кода, формирователь последовательности 16 и соединения с устройством считывания 7 с карточки для получения напряжений источников питания Vss иVDD, а также вход сброса для процессора 12 и вход тактового сигнала (CLK) для формирова 001598 16 теля последовательности 16. В соответствии с изобретением КИС 5 может быть использована как банковская карточка, кредитная карточка,дебетовая карточка, электронный кошелек, медицинская карточка, SIM-карточка и т.п. Настоящее изобретение предусматривает систему осуществления транзакций, управляемую карточкой с интегральной схемой, предназначенную для осуществления между КИС 5 и терминалом 1, соединенным или не соединенным с центральным блоком, транзакции, включающей, по меньшей мере, одно выполнение следующей последовательности: 1) создание канала обмена информацией между КИС 5 и терминалом 1; 2) выполнение проверки совместимости,чтобы гарантировать механическую и электрическую совместимость КИС 5 и терминала 1; 3) выбор прикладной программы, включающий выбор компьютерной программы и связанного с ней набора данных, который определяет транзакцию в терминах используемой комбинации КИС 5 и терминала 1. 4) выполнение прикладной программы; 5) завершение транзакции, что, как вариант, включает прерывание линии обмена информацией между КИС 5 и терминалом 1; при этом для выполнения прикладной программы используется интерпретатор на КИС 5 и/или на терминале 1. Транзакция представляет собой обмен, по меньшей мере, данными между двумя или более устройствами и, согласно настоящему изобретению, не обязательно ограничивается коммерческими финансовыми транзакциями. Такая система известна из международной заявки РСТ/ВЕ 95/00017. КИС 5 может представлять собой просто карточку с памятью,не включающую в себя процессор 12, при этом КИС 5 осуществляет транзакцию так, как определяется терминалом 1. Как вариант, КИС 5 может представлять собой независимую переносимую интеллектуальную карточку, и транзакция может определяться терминалом 1 и/или КИС 5. В соответствии с настоящим изобретением КИС 5 может включать в себя программный код для повышения защищенности обработки в терминале. В частности, КИС 5 может представлять собой одну или несколько карточек поддержки, которые могут использоваться для обновления данных прикладных программ,хранящихся в терминале 5. В соответствии с настоящим изобретением программное обеспечение выполняется в терминале 1 и, факультативно, в КИС 5 в режиме виртуальной машины. Виртуальная машина в соответствии с настоящим изобретением в явном виде предоставляет в распоряжение теоретический или виртуальный микропроцессор со стандартными характеристиками, которые определяют режим адресации, использование стека, использование регистра, адресное пространство, адресацию устройств ввода/вывода и т.п. в 17 обобщенном виде. Ядро для каждого конкретного типа ЦПБ, используемого в терминале 1 или в КИС 5, записывается так, чтобы соответствующие процессоры 2, 12 эмулировали виртуальную машину (ВМ). Конкретный аспект настоящего изобретения связан с тем, что ядро для ВМ обеспечивает драйверы для устройств ввода/вывода и все логические и арифметические функции низкого уровня для ЦПБ, управление потоком, временную обработку. Обеспечение драйверов ввода/вывода в виртуальной машине имеет то преимущество, что любая программа,написанная для ВМ, в соответствии с настоящим изобретением, адресует стандартные виртуальные устройства ввода/вывода. Реализация ВМ на конкретном ЦПБ тогда обеспечивает для физических устройств ввода/вывода, соединяемых с терминалом 1 или КИС 5 то, что они будут вести себя подобно адресуемым виртуальным устройствам ввода/вывода. ВМ в соответствии с настоящим изобретением является весьма компактной и успешно реализуется на микросхеме SLC044CR компании Siemens (производная семейства INTEL 8051), которая может быть введена в состав КИС 5. ВМ в соответствии с настоящим изобретением обеспечивает высокую степень стандартизации для большого разнообразия типов ЦПБ и устройств ввода/вывода, а также упрощает переносимость программы, тестирование и сертификацию. В соответствии с настоящим изобретением такая ВМ будет описана как переносимая виртуальная машина 20. Переносимая ВМ 20 включает в себя виртуальный микропроцессор и драйвер для устройства ввода/вывода. ВМ 20 обеспечивает логические и арифметические функции и адресацию памяти, а также, по меньшей мере, одно устройство ввода/вывода. Переносимая ВМ 20 в соответствии с настоящим изобретением обеспечивает переносимость программы в гетерогенной среде терминалов 1 и карточки 5 за счет обработки программы терминала и/или карточки в качестве промежуточного кода компилятора. Этот код состоит из потоков байтовых кодов, называемых маркерами. Терминалы 1 или КИС 5 затем обрабатывают этот код путем его интерпретации или другими средствами, например компиляцией собственного кода. Интерпретация виртуальной машиной маркеров может предпочтительно выполняться одним из трех методов: непосредственной интерпретацией команд виртуальной машины, трансляцией языка виртуальной машины в прямо выполняемую промежуточную форму, или компиляцией сразу в действительный код для конкретного ЦПБ. Последние два метода обеспечивают улучшенные характеристики при умеренной стоимости и сложности. Маркеры упорядочены в множестве, которое может рассматриваться как набор машинных команд для ВМ 20. Прикладные программы в соответствии с настоящим изобретением реализованы в виде 18 модулей, которые могут включать список маркеров в качестве выполняемого кода. В соответствии с настоящим изобретением имеется два базовых типа модулей: исполняемые модули,которые вызываются непосредственно с помощью ВМ 20, когда модуль загружается, и библиотечные модули, которые действуют как ресурсы по отношению к другим модулям путем обеспечения экспортируемых процедур, которые могут выполняться индивидуально путем межмодульных вызовов. Маркер, установленный в соответствии с настоящим изобретением, включает, во-первых,набор команд для ВМ 20, который обеспечивает команды, ожидаемые для использования языком универсальной обработки и требуются для эффективного выполнения программ, и, вовторых, маркеры, которые обеспечивают то, что обычно называется функциями операционной системы. В терминалах 1 или в карточках 5 функции операционной системы включают в соответствии с настоящим изобретением специфические функции, такие как драйверы ввода/вывода, например для дисплеев и клавиатур. Кроме того, в терминалах 1 и карточке 5 системные функции могут также включать управление объектами данных и передачу через порты ввода/вывода, а также механизмы межмодульного доступа и управления доступом. Маркеры предпочтительно обеспечены для операционной системы ВМ, для стековых манипуляций, для манипуляций с разъемами, для управления, например, исключительными состояниями, для собственно разъемов, включая их права доступа, для доступа к устройству ввода/вывода, для временной обработки, для обработки языка и сообщений, для устройств считывания ввода/вывода, например КИС, карточек с магнитной полосой, и модемной обработки, для обработки черного списка, для алгоритмов защищенности, для обслуживания, предоставляемого терминалами, для обслуживания, предоставляемого базой данных, для обработки объектов данных, например, обработки кода типа магнитной ленты, для манипуляций модулями и для манипуляций с расширяемой памятью. Однобайтовые маркеры называются главными маркерами; они относятся к примитивным командам, обычно имеющимся в любом множестве команд. Мультибайтовые маркеры называют вторичными маркерами и используются для менее часто используемых видов обслуживания. Полный набор маркеров для ВМ 20 приведен в приложении. Как схематично представлено на фиг. 3, прикладная программа записывается на главной компьютерной системе 70 разработки, а затем отлаживается и проверяется на соответствующем языке высокого уровня, таком какForth, С, Pascal и т.д. Затем исходный код программы компилируется в компиляторе маркеров 71 в поток маркеров. Этот поток маркеров от 19 дельно комбинируется с другими данными (соответствующими обрабатываемыми данными),требуемыми для программы, и с заголовком, и выделяется в самостоятельный элемент (инкапсулируется) в виде файла доставки модуля для создания модуля 72, предпочтительно в стандартизованном формате доставки модулей. Если модуль содержит исполняемые маркеры, то он доставляется в формате исполняемой программы. Конкретным аспектом изобретения является то, что исполняемые модули содержат не только поток маркеров, но и соответствующие оперативные данные (инкапсуляции). Также особый аспект изобретения заключается в том, что модули, соответствующие изобретению, содержат указание того, какой объем оперативной памяти должен быть выделен посредством ВМ 20 для исполняемых модулей. Модуль 72 доставляется к терминалу 1 с помощью любых пригодных для этого средств,например, посредством КИС 5, через телекоммуникационную сеть. После загрузки модуля он запоминается в архиве модулей. Если требуется его функция, то терминал 1 или карточка 5 используют загрузчик/интерпретатор 73 маркеров для обработки маркеров в целях исполнения в ЦПБ 2 терминала. Этот процесс заключается в выполнении функции, связанной с каждым маркером. Загрузчик/интерпретатор 72 маркеров обеспечивается ВМ 20 в соответствии с настоящим изобретением. Связанное с ВМ программное обеспечение на терминале 1 может быть подразделено на четыре основные категории:- ядро, которое включает в себя зависимые от терминала реализации драйверов ввода/вывода и все функции, требуемые для поддержки ВМ 20. Любое другое программное обеспечение, связанное с ВМ 20, написано в машинонезависимых маркерах;- резидентные услуги терминала (РУТ) представляют собой, по меньшей мере, один модуль, который выполняется на ВМ 20 в качестве администратора прикладных программ и включает в себя все функции, не относящиеся к прикладным программам; библиотеки, поддерживающие эти функции; функции загрузки модулей; и главный цикл, определяющий поведение терминала. Специальные маркеры (например DIOCTL) позволяют определить зависимые от терминала аспекты устройств ввода/вывода как операционные функции;- выбираемые терминалом услуги (ВТУ) включают прикладные программы, такие как функции обслуживания платежей, и библиотеки, поддерживающие эти функции. ВТУ содержат только независимые от терминала маркеры и являются резидентными для терминала 1. Главный программный цикл РУТ должен выбирать и вызывать функции ВТУ, как это требуется для конкретной транзакции;- выбираемые карточкой услуги (ВКУ) включают в себя функции, поддерживающие транзакции, осуществляемые на терминале, такие как функции обслуживания платежей, которые используются как часть прикладной программы ВТУ. ВКУ являются резидентными для КИС 5 и загружаются в терминал 1 по мере необходимости. Для терминалов 1 с двумя устройствами считывания 8 КИС (например, одно для нормальных транзакций, а другое для технического обслуживания) может иметься два независимых набора ВКУ (ВКУ 1 и ВКУ 2). Все программное обеспечение в терминале 1 в соответствии с настоящим изобретением,выше ядра, организовано как набор отдельных модулей. Фундаментальной характеристикой модуля является то, что он является набором определений или программных функций, которые были пропущены через компилятор 71 маркеров и инкапсулированы в виде одного пакета для доставки в определенную среду функционирования, например, в терминал 1 или КИС 5. Основная программа терминала (РУТ), каждая прикладная программа, каждая библиотека и каждая загрузка ВКУ представляют собой примеры модулей. Предпочтительно все модули используют стандартный формат. Ядро в системе, соответствующей изобретению, определяет ВМ 20, которая обеспечивает множество услуг высокого уровня для этих модулей, например:- универсальная поддержка ввода/вывода для известных устройств, которая предусматривает для универсального ввода/вывода поддержку дополнительных устройств, которые могут быть добавлены;- функции организации базы данных;- управление передачей объектов данных,включая преобразования формата и другие функции;- распределение модулей маркеров, включая хранение их в памяти (с обновлением данных в случае необходимости) и выполнение по требованию. В предпочтительном варианте настоящего изобретения выполнение модулей осуществляется под контролем ВМ 20 в течение всего времени. Следовательно, модули никогда не используют управление от главного процессора, а являются пассивными по отношению к ВМ 20. Предпочтительно ВМ 20 постоянно работает в режиме супервизора и может только выполнять команды, определенные в терминах ее набора маркеров, при этом ни один модуль не может работать в пользовательском режиме, т.е. в предположении управления виртуальной машиной 20. Следовательно, при реализации ВМ 20 с использованием карты памяти, создается только одна карта памяти, а именно карта супервизора. Ни один модуль не может изменить операционную систему, определяемую виртуальной 21 машиной 20. Это гарантировано, так как модуль может содержать только набор маркеров ВМ и ни один из этих маркеров не разрешает доступ к кодовому пространству, где хранится ядро. Если виртуальной машиной 20 обнаружен маркер,который находится вне определенного набора маркеров, то вырабатывается исключительное состояние (ILLOP). Как схематично показано на фиг. 4, терминал 1 включает в себя конкретную операционную систему 8 терминала, обеспечивающую загрузку модуля РУТ виртуальной машины 20(процедура загрузки описана ниже). Код для ВМ 20 хранится в энергонезависимом ПЗУ 11 терминала. Перед загрузкой РУТ энергозависимая память 19 терминала 1 не содержит никаких данных, связанных с транзакцией. Энергонезависимое ОЗУ 18 содержит прикладные программы, которые должны выполняться ВМ 20, в форме модулей 72 в архиве модулей; энергонезависимые базы данных содержат конкретные пользовательские данные и библиотеки, такие как библиотеку подключений, что будет описано ниже. Если ВМ 20 также реализована на КИС 5, то те же самые принципы, что и описанные выше, будут применимы по отношению к энергонезависимому ОЗУ 13, энергозависимой памяти 14 и энергонезависимому ОЗУ 15 КИС 5. Так как ВМ 20 представляет собой виртуальную машину, она адресует все формы ЗУ 11,18, 19, 13, 14, 15 терминала и КИС в качестве виртуальных ЗУ, т.е. все они адресуются в области логических адресов в том виде, как она рассматривается со стороны ВМ 20. В практической реализации ВМ 20 эти области логических адресов отображаются в области реальных адресов в памяти терминала 1 или КИС 5 с помощью карты памяти или аналогичного средства. В последующем описании ссылки будут делаться на энергозависимое ЗУ, энергонезависимое ОЗУ и энергонезависимое ПЗУ, в качестве составных частей ВМ 20. Следует иметь в виду,что эти ссылки делаются на область логически адресуемой памяти, если только не будут делаться специальные указания на реальные адреса при реализации ВМ 20 на терминале 1 или на КИС 5. Энергозависимая память не сохраняет работоспособность при загрузке программы или отключении питания и/или перезагрузке. Предпочтительно энергозависимая память не сохраняет работоспособность при отключении питания по соображениями обеспечения защищенности. Энергонезависимая память сохраняет работоспособность при загрузке программы или при отключении питания и перезагрузке. Описание виртуальной машины Схематичное представление ВМ 20, соответствующей настоящему изобретению, приведено на фиг. 5. Предпочтительно, ВМ 20 является стековой машиной и имеет указатель стека данных (хранящийся в регистре 32 указателя стека данных), который указывает на стек 27 22 помещенных в стек данных, предпочтительно в памяти на кристалле. Все операции выполняются в этом стеке 27. Стек данных 27 используется для хранения параметров процедур и промежуточных результатов оценки выражений. Данные вводятся или выводятся из стека данных 27. ВМ 20 также включает в себя возвратный стек 28. Возвратный стек 28 может быть использован ВМ 20 для хранения адресов возврата, а также для временного хранения. Эта множественная архитектура стеков известна из языка программирования Forth (ANSI X3.215-1994). Эта архитектура была дополнительно модифицирована для обеспечения переносимости (машинонезависимости), плотности кода, надежности,простоты компиляции и для использования с другими языками программирования. Например, она содержит средства, обеспечивающие локально изменяемые фреймов, используемые в языках программирования высокого уровня,таких как С. Таким образом, компиляторы 71 маркеров в соответствии с настоящим изобретением могут быть записаны не только для языкаForth, но и для С и других языков программирования. В соответствии с настоящим изобретением имеется только один стек данных 27 и один возвратный стек 28, связанные с ВМ 20. Стеки 27,28 не создаются для каждой логической последовательности обработки. В соответствии с настоящим изобретением прикладные программы могут только вызывать из возвратного стека 28 загруженные ими данные в явном виде в текущей процедуре, и должны удалять данные, помещаемые в возвратный стек 28 в течение текущей процедуры, перед выходом из процедуры. Как вариант, ВМ 20 включает администратора защищенности для обеспечения целостности данных при выполнении, который контролирует каждое действие в возвратном стеке и проверяет все данные, удаляемые в текущей процедуре. Кроме данных, помещаемых в явном виде для временного хранения, ВМ 20 может хранить в обратном стеке 28 информацию состояний для исполнения исключительных состояний, фреймы локальных переменных, параметры цикла управления и контекст базы данных. В соответствии с настоящим изобретением, ВМ 20 может включать в себя множество стеков. Например, вместо использования только возвратного стека 28, как вариант, могут предусматриваться дополнительные стеки 29, в качестве стеков исключительных состояний и фреймов. Стек исключительных состояний используется для хранения данных исключительного состояния в процессе обработки исключительного состояния. Стек фрейма используется для хранения информации локальных переменных, а также записи активизации языков, подобных языку программирования С. Как упомянуто выше, все стеки исключительных состояний и 23 фреймов 29 могут быть реализованы на возвратном стеке 28. Стек данных 27, возвратный стек 28 и другие стеки 29, такие как стеки исключительных состояний и фреймов, не находятся в области памяти, непосредственно доступной для какойлибо прикладной программы. Стек данных 27 и возвратный стек 28 не могут быть адресованы непосредственно. Доступ к ним обеспечивается путем стековых операций. По причинам обеспечения защищенности отсутствуют ограничения относительно того, каким образом данные запоминаются в действительной реализации, чтобы нарушители не могли иметь сведений о том,каким образом фактически осуществляется хранение данных. ВМ 20 содержит виртуальный центральный процессор 20, который включает в себя виртуальный арифметико-логический блок 23. ВМ 20 адресует виртуальную или логическую область данных 24, которая обрабатывается в ВМ 20 как ОЗУ и в типовом случае может быть реализована как часть энергозависимой памяти 19, например в ОЗУ терминала 1 или карточки 5. Логическая область данных 24 доступна только для хранения данных. Поток маркеров модуля хранится в ВМ 20 в памяти кодов 26,которая обрабатывается в ВМ 20 как ПЗУ. Только ВМ 20 может считать маркеры. Память кодов 26 не доступна ни для прикладных программ, ни посредством какого-либо маркера. ВМ 20 может включать в себя виртуальные регистры 30. Регистры 30 ВМ 20 могут включать в себя регистр 31 указателя маркеров, который содержит указатель, указывающий на следующий маркер, предназначенный для выполнения; регистр 32 указателя стека данных,который содержит указатель, указывающий ячейку памяти текущей вершины стека данных 27; регистр 33 указателя возвратного стека, который содержит указатель, указывающий ячейку памяти текущей вершины возвратного стека; регистр 34 указателя фрейма, который содержит указатель, указывающий на начало фрейма в области данных 24; регистр 35 указателя конца фрейма, который содержит указатель, указывающий конец фрейма в области данных 24. Для набора маркеров не предусмотрен прямой доступ к регистрам 31-36. Доступ обеспечивается только посредством маркеров доступа к регистрам. Наконец, виртуальные устройства ввода/вывода 25 связаны с ЦПБ 22 посредством системы виртуальной шины 21, которая также связывает 27-29, арифметико-логический блок 23, регистры 30, память кодов 26 и область данных 24. ВМ 20 в соответствии с настоящим изобретением определяется предпочтительно как 32-битовая машина с байтовой адресацией, дополнительным кодом, с 32-битовыми регистрами и стековыми элементами, однако изобрете 001598 24 ние не ограничивается данным вариантом. Размер регистра/стека определяется как размер блока данных для ВМ 20, причем блок данных представляет собой базовый блок, обрабатываемый с помощью стеков и регистров 31-36 ВМ 20. Размер такого блока данных, используемого ВМ 20, не оказывает какого-либо влияния на настоящее изобретение. Все программы, выполняемые из модулей,должны соблюдать следующие правила: Программы могут не предусматривать, что данные любой из вышеописанных категорий гарантированно хранятся в возвратном стеке 28,и поэтому могут использовать только механизм вызова, определенный в явном виде для заданной категории данных, так как администратор защищенности может исключить любые такие данные. Программы, которые пропускают данные одной из этих категорий в ВМ 20, должны предпринимать соответствующее действие для обратного получения хранимых данных из ВМ 20 перед выходом из процедуры, в которой эти данные были пропущены, иначе ВМ 20 будет перемещать данные соответствующей части памяти. Программы должны учитывать, что любые данные, ранее помещенные в обратный стек 28,становятся недоступными путем перевода данных в одной из этих категорий в ВМ 20. Программы должны учитывать, что любые данные одной из этих категорий, поступившие в ВМ 20, становятся недоступными путем выполнения кода, который помещает значения в возвратный стек 28, до того времени, когда эти значения удаляются, поскольку доступ к возвратному стеку обеспечивается только определенными процедурами с использованием маркеров. В соответствии с настоящим изобретением операционная система ВМ 20 определяет единственную адресную область 24, доступную для каждого модуля. Эта адресная область 24 должна быть доступной только для хранения данных и будет называться областью данных 24. Область данных 24 подразделяется на три и одну дополнительную логические области,каждая из которых является индивидуально непрерывной: 1) инициализированная область данных 41,которая содержит исходные значения, определенные в момент компиляции и установленные,когда активизировано ядро ВМ 20, и затем, когда загружаются инициализированные данные,образующие модуль; 2) неинициализированная область данных 42, которая содержит переменные и статические буферы, распределяемые в процессе компиляции программы. Эта область данных 42 инициализируется в нуль посредством ВМ 20; 25 3) память фрейма 46, которая управляется маркерами фрейма; 4) факультативно, расширяемая память 45,которая содержит один или несколько буферов,динамически распределяемых в процессе выполнения программы. Имеются две дополнительные области данных, которые не являются прямо адресуемыми: 5) расширенная память 43, в типовом случае массовая память, которая используется для хранения объектов данных и энергозависимых баз данных; 6) энергонезависимая память 44, используемая для хранения данных, которые гарантированы ВМ 20 для обеспечения работоспособности при загрузке модуля или при отключении питания или перезагрузке (в пределах ограничений, определяемых аппаратными средствами терминала), включая архив модуля и энергонезависимые базы данных. Эта память может быть выполнена как ОЗУ с батарейным питанием,диск или иная память. Энергонезависимая память 44 может быть реализована как составная часть постоянной памяти 18 для записи/считывания. Для повышения защищенности данных доступ к расширенной и энергонезависимой памяти 43, 44 обеспечивается только посредством маркеров, которые обеспечивают окна к выбранным данным в форме буферов в неинициализированной области данных 42. Таким образом, программист может только запросить запись и при этом может не знать точного местонахождения данных для доступа к ним. Предпочтительно, отсутствует файл или древовидная структура, которые позволили бы программисту определить местоположение файлов или баз данных индивидуального пользования. В пределах каждой области данных 24, используемой модулем, память распределяется путем относительной адресации и только в момент исполнения. Это означает, что адрес имеет значение только в пределах каждого модуля при его загрузке. Так как абсолютная адресация не используется, то невозможно для модуля получить доступ к данным другого модуля, за исключением механизмов доступа к защищенным модулям, что описано ниже. Механизм фрейма позволяет ВМ 20 удовлетворить требования языков программирования, таких как С, что позволяет локальные переменные определять при исполнении программы. Фрейм хранит параметры процедуры, помещенные в стек данных 27, а также локальные переменные (временно хранимые данные,которые будут освобождаться автоматически при освобождении фрейма, обычно в конце выполнения процедуры). Указатели начала и конца фрейма поддерживаются автоматически виртуальной машиной 20 в пределах фрейма. Регистр 34 указателя фрейма указывает на логическую 26 базу фрейма, а указатель 35 конца фрейма указывает на логический конец фрейма в области данных 24. Параметры могут выбираться из фрейма с использованием маркера доступа к фрейму. ВМ 20 может, в качестве дополнительного варианта, предоставлять динамически распределяемый пул (динамическую область памяти) расширяемой памяти 45 в качестве одиночного расширяемого буфера, управляемого ВМ 20,который возникает вне неинициализированной области данных 42 программы. Программы могут запросить выделения конкретного объема расширяемой памяти 45 и получают в ответ указатель к адресу базы для данной памяти 45. Последующие программы могут освободить память 45 от указанного адреса, например, при завершении программы, что вызывает высвобождение всех распределений за пределами указанного адреса. Предпочтительно, если модули выполняются в одной логической последовательности,однако изобретение не ограничивается этим вариантом. Это означает, что если один модуль вызывает второй модуль, второй модуль завершается, и все ресурсы второго модуля перераспределяются, прежде чем ВМ 20 возвратится к первому модулю и продолжит обработку. На фиг. 6 показано схематичное представление логической памяти, как она наблюдается виртуальной машиной 20. Согласно фиг. 6, первый модуль (слева) с инициализированной памятью 41, неинициализированной памятью 42 и памятью 46 фрейма и областью кода 26 маркера загружается в память для записи и считывания,начиная с адреса 1. Первый модуль имеет также вызываемую и распределенную часть 45 расширяемого буфера. Когда второй модуль (справа) вызывается первым модулем (например, для импорта функции fgh, которая находится в списке исключительных состояний в заголовке модуля 1 функций, которые могут быть импортированы), область данных 241, включающая инициализированную память 411, неинициализированную память 421 и память фрейма 461, распределяются в соответствии с требованием, начиная с адреса 2. Маркеры модуля 2 считываются непосредственно виртуальной машиной 20 из архива модулей, что представляет собой возможный вариант осуществления изобретения. При соответствующем вызове из модуля 2, расширяемая память 45 для второго модуля распределяется в памяти виртуальной машиной 20 выше, чем расширяемая память 45 для первого модуля. При завершении второго модуля вся память выше адреса 4 перераспределяется(эффект резиновой ленты). Предпочтительно все временно хранимые данные стираются при таком перераспределении. Если необходимо,более расширенная память 45 может быть запрошена при возврате к первому модулю. Если второй модуль вновь вызывается, ему будет вы 27 делен другой начальный адрес для расширенной памяти 451, отличный от того, который был выделен при первом запросе. Требуется, чтобы все маркеры, за исключением маркеров распределения расширяемой памяти EXTEND, CEXTEND, RELEASE и маркеров обработки исключительных состоянийTHROW и QTHROW, не оказывали влияния на указатель расширяемой памяти. Если маркер распределяет расширяемую память 45, он должен также и освобождать ее, включая любой эффект выравнивания блоков данных. Последовательные распределения расширяемой памяти 45 предпочтительно являются непрерывными в пределах модуля, но не обязательно должны быть непрерывными между модулями, за исключением того, что межмодульные вызовы с использованием маркеровDOSOCKET должны сохранять непрерывность. Автоматическое освобождение динамически распределяемой расширяемой памяти 45 должно осуществляться при завершении выполнения модуля, ограничивая влияние отказов программ на очистку памяти. Кроме того, если возникает исключительное состояние THROW, распределение динамически распределенной расширяемой памяти 45 может быть восстановлено в ее состояние в момент регулирования исключительного состояния CATCH. Пользовательские переменные представляют собой переменные, имеющие размер блока данных, в которых ВМ 20 хранит контекстуальную информацию для пользовательских программ. Память для пользовательских переменных предварительно распределена посредством ВМ 20. Может быть предусмотрено ограниченное число переменных, например, 16 переменных (указанных от 0 до 15). Возможный вариант реализации ВМ 20, который поддерживает многозадачный режим, может обеспечивать по одному набору пользовательских переменных для каждой задачи. ВМ 20 обеспечивает единый механизм обработки исключительных событий с помощью маркеров CATCH, THROW и QTHROW. Эти маркеры получаются из механизма обработки исключительных ситуаций на языке Lisp и возникают в языке ANS Forth в виде CATCH иTHROW. Назначением этого механизма является обеспечение локальной обработки исключительных состояний при программном управлении на различных уровнях программного обеспечения. Концепция состоит в том, что программа пропускает указатель исполнения функции в маркер CATCH, который должен исполнять эту функцию, и возвращает код, указывающий, какое исключительное состояние возникло (если оно есть) при ее исполнении. Маркер CATCH записывает зависимую от реализации информацию, достаточную для восстановления ее текущего состояния исполнения при 28 появлении маркера THROW в функции, переданной в маркер CATCH для исполнения. Это включает (без каких-либо ограничений) глубину стека данных и возвратного стека, указатель фрейма и, в некоторых случаях, указатель расширяемой памяти. Совокупность информации,представляющей состояние исполнения, указывается как фрейм исключительного состояния. Фреймы исключительного состояния хранятся в стеке исключительного состояния. Вслед за CATCH программа может анализировать любой код исключительного состояния,который может быть возвращен, и осуществить выбор между локальной обработкой или переходом с помощью THROW на более высокий уровень для обработки. ВМ 20 обеспечивает по умолчанию самый внешний уровень, на котором будут прерываться исключительные состояния. Такой самый внешний уровень будет задействован, если не было установлено никакого внутреннего уровня CATCH. Обработчик исключительных состояний, устанавливаемый по умолчанию, прерывает любую текущую транзакцию и пытается перезагрузить модули РУТ и повторно войти в основной цикл РУТ. ВМ 20 выдает исключительное состояние-10 для языкаANS Forth (деление на нуль), если возникает такое условие. ВМ 20 может выдавать другие исключительные состояния общего характера,поддерживаемые на ANS Forth, как приведено в прилагаемом приложении. Для обработки устройств и режимов обслуживания ввода/вывода каждому устройству,включая те устройства, операции низкого уровня которых скрываются виртуальной машиной 20 за специфическими для устройства функциями, присвоен тип устройства (используемый для определения категорий результирующих кодов) и уникальный номер устройства. Номера устройств произвольны, однако для одного маркера могут быть даны номера устройств от 1 до 15 (4 бита), которые присваиваются самым обычным устройствам, таким как клавиатуры, устройства считывания с КИС, устройства считывания с карточки с магнитной полосой, дисплеи, принтеры, устройства управления мощностью или электронные терминалы для торговли. Обычные устройства ввода/вывода снабжаются функциями, которые используют номер устройства в качестве входного параметра. Терминал 1 в соответствии с настоящим изобретением содержит, по меньшей мере, три основные энергонезависимые базы данных: журнал регистрации специализированных транзакций, базу данных сообщений на одном или более языках и базу данных модулей. ВМ 20 защищает базы данных в максимально возможной степени, так как они могут содержать конфиденциальную информацию. Доступ к базам данных ограничен. ВМ 20 обеспечивает механизм для обработки баз данных (ВМ служит в качестве сервера), который скрывает деталь 29 ные особенности реализации от прикладного программного обеспечения (прикладной программы в качестве клиента). Прямой доступ к базе данных не разрешен из модуля, выполняемого ВМ 20. Обслуживание реализует следующие особенности, которые описываются ниже со ссылками на фиг. 7.- В любой данный момент времени клиент,т.е. программа, исполняемая в модуле, имеет доступ к одной выбранной в данный момент базе данных (DBCURRENT), и только один выбранный в данный момент номер записи(DBRECNUM) совместно используется по всем определенным базам данных.- Информация о каждой базе данных пересылается между клиентом и сервером через блок параметров базы данных (БПБД) 51, к которому сервер имеет доступ для считывания и записи. Клиент владеет БПБД 51 в том смысле, что он находится в области данных 24 клиента; но клиенту не разрешен прямой доступ к нему. Вместо этого, только маркеры обслуживания базы данных могут использоваться для доступа к данным. БПБД 51 имеет стандартную структуру, включающую в себя поля, по меньшей мере, для линии связи с БПБД, указатель базы данных, указание типа базы данных и размер записи, а также следующий доступный номер записи. Вся информация для определения базы данных должна предварительно устанавливаться в БПБД 51. Программное обеспечение клиента может не осуществлять последующего прямого доступа к БПБД 51 и не должно делать никаких предположений относительно значений, непосредственно содержащихся в БПБД 51 после того, как модуль, определяющий данный БПБД 51, загружен для исполнения. Блоки параметров базы данных 51 пропускаются к загрузчику маркеров/интерпретатору в форме указателя (линия связи БПБД) к связанному перечню в разделе инициализируемых данных модуля. Это поле должно быть предварительно установлено на адрес в инициализируемых данных следующего БПБД 51 в перечне, либо на нуль,если данный БПБД 51 является последним или единственным БПБД 51 в перечне. Для компилированных баз данных, которые существуют в области инициализируемых данных клиента,указатель базы данных должен быть предварительно установлен на адрес источника в инициализируемых данных. Для баз данных, память которых контролируется сервером, это поле должно быть предварительно установлено в нуль. Тип базы данных представляет детальные особенности базы данных в кодированной форме. Имеется, по меньшей мере, три типа баз данных: энергозависимые базы данных, содержимое которых нет необходимости сохранять между загрузками модуля или при отключении питания терминала 1, в которой они установлены; 30 энергонезависимые базы данных, содержимое которых должно сохраняться между загрузками модуля или при отключении питания. Если модуль, определяющий энергонезависимую базу данных, заменяется, то база данных разрушается, если старый модуль не загружен; компилированные базы данных, создаваемые компилятором 71 маркеров в непрерывной области инициализируемых данных в виде записей фиксированной длины. Записи не могут добавляться к компилированной базе данных или уничтожаться из нее, и база данных не может быть инициализирована при выполнении, в противном случае должны поддерживаться полностью возможности записи-считывания. Поле номера следующей доступной записи должно устанавливаться на единицу плюс последний распределенный номер записи в базе данных для компилированных баз данных. Для любой другой базы данных это поле устанавливается на нуль. Адрес окна в текущую запись (буфер записи 53) обеспечивается сервером клиенту для каждой базы данных клиента. Для операций с определенной базой данных клиент может переслать адреса последовательностей и буферы ключей 52 в сервер. Для каждой базы данных,которая стала известной серверу с помощью модуля клиента, виртуальная машина 20 обеспечивает буфер записи 53. Этот буфер 53 запускается при выровненном адресе. Содержимое буфера записи 53, связанное с конкретной базой данных, после выбора записи остается доступным до тех пор, пока клиент не выберет другую запись из базы данных. За исключением этих буферов записи 53, компилированных баз данных и параметров, пересланных в стек 27 данных с помощью определенных функций базы данных, никакая другая область данных 54 не используется совместно клиентом и сервером. Программы не могут предусматривать, что записи в базе данных являются непрерывными в памяти. База данных инициируется путем процедуры загрузки для модуля, в котором определен БПБД. Энергозависимые базы данных, инсталлированные прикладными модулями, не подвергаются обработке сервером автоматически и прозрачным образом, когда РУТ завершают прикладную программу, когда вся распределенная сервером память для данных, относящаяся к этим базам данных, освобождается. Сервер удаляет энергонезависимые базы данных, если модуль, который их определил,заменяется. Если модуль загружен при замене,например, в случае модуля РУТ, то сервер должен удалять энергонезависимые базы данных модуля, когда модуль выгружается. Действие, предпринимаемое ВМ 20, когда база данных подвергается обработке в момент загрузки модуля, зависит от значения параметров тип базы данных и указатель базы дан 31 ных в БПБД 51 и от того, является ли база данных энергозависимой или энергонезависимой. Если база данных энергонезависимого типа, то адрес БПБД используется совместно с идентификацией модуля (ИД модуля) для идентификации любых предшествующих данных, принадлежащих к базе данных. Если предшествующие данные имеются, то номер следующей доступной записи восстанавливается на его предшествующее значение. В противном случае сервер(ВМ 20) присваивает номер (создает экземпляр) новой области энергонезависимой памяти и устанавливает номер следующей доступной записи на нуль. В обоих случаях для текущей записи в базе данных обеспечивается буфер 53. Если параметр указатель базы данных равен нулю,а параметр тип базы данных не относится к компилированному типу, то сервер осуществляет обработку или предоставляет в распоряжение память, требуемую для базы данных, инициализирует память путем установки нулевых значений, обеспечивает буфер 53 для текущей записи базы данных и устанавливает номер следующей доступной записи (DBAVAL) в нуль. Если параметр указатель базы данных не равен нулю, а параметр тип базы данных относится к компилированному типу, то сервер устанавливает внутренние структуры для использования структуры данных клиента, чей начальный адрес был передан указателю базы данных, и устанавливает номер следующей доступной записи (DBAVAL) на значение, переданное в поле номера следующей доступной записи блока параметров базы данных (БПБД) 51. Сервер поддерживает все действующие записи 55 базы данных, соотношение между ячейкой адреса и записью в блоке управления 56 базы данных и запись базы данных, модуль которой является доступным в блоке 57 контекстной информации. Процедура защищенной обработки модуля, соответствующая изобретению, будет описана ниже со ссылками на фиг. 6. На фиг. 6 представлена область логической памяти для считывания/записи. Область памяти, к которой может иметь доступ левый модуль (первый модуль), обозначена пунктирной линией. Область памяти, к которой не может иметь доступ первый модуль, обозначена непрерывной линией. Область памяти, к которой может быть обеспечен доступ более чем для одного модуля, показана штрихпунктирной линией. ВМ 20 защищает базы данных DB1 и DB2 и архив баз данных,а также модули в архиве модулей, так что они недоступны ни для каких модулей. После того как первый модуль загружен, неинициализированные данные в памяти 42 могут быть доступными для первого модуля, но ВМ 20 не разрешает, чтобы какая-либо область вне этого модуля была доступной непосредственно для этого модуля. Доступ к регистрам, стекам или памяти фреймов 46 может быть получен посредством 32 соответствующих маркеров. К базам данных может быть получен доступ посредством оконной процедуры, упомянутой выше. В частности,первый модуль не может получить доступ ни к свой собственной памяти программы 26, где находятся маркеры, ни к любому другому модулю. Это важно для защиты от вирусов. В соответствии с настоящим изобретением память выделяется первому модулю, который определен и защищен. Он определен распределением памяти в соответствии с указанием объема памяти, который должен быть выделен для включения в модуль. Он защищен, так как никакой другой модуль не может получить доступ к выделенной области, и никакой другой механизм загрузки не предусмотрен для программы иной, чем для модулей. Так как предпочтительный способ исполнения модулей определяется одиночной последовательностью, любая память, расположенная в расширяемом буфере 45, перераспределяется, прежде чем любой другой модуль может стать активным. Перераспределенная память предпочтительно стирается. Монопольный перечень импорта первого модуля имеется в его заголовке, к нему первый модуль не имеет прямого доступа. ВМ 20 считывает заголовок и обращается к второму модулю, который упоминается в перечне импорта(функция fgh из второго модуля). ВМ 20 загружает второй модуль и распределяет память для неинициализированных данных 42', памяти фрейма 46' и инициализированных данных 41'. Первый модуль не может получить доступ к любой части второго модуля и наоборот. В заголовке второго модуля функция fgh помещена в монопольный перечень функций, который может быть экспортирован. Это обеспечивает доступность функции fgh для других модулей. ВМ 20 осуществляет поиск функции fgh в области памяти 26' второго модуля и осуществляет исполнение последовательности маркеров совместно с обрабатываемыми данными (представлено последовательностью TITTITT). В данном примере данный участок кода требует доступа к базе данных DB2. Базой данных в соответствии с настоящим изобретением владеет модуль, т.е. к базе данных может быть обеспечен доступ только модулю, который осуществлял ее обработку (запрос в базу данных) при первой загрузке модуля. Маркеры доступа к базе данных, считанные из кодовой области 26',исполняются виртуальной машиной 20, которая распределила буфер 53' в области неинициализированных данных 42' второго модуля при загрузке. Функция fgh требует доступа к третьей записи DB2. ВМ 20 затем пересылает указанную запись в окно 53' во втором модуле, из которого она экспортируется в неинициализированную область 42 первого модуля. С использованием той же самой оконной процедуры для базы данных первый модуль может также получить запись из своей собственной базы данных DB1, 33 которая пересылается в буфер 53 в области 42 неинициализированных данных. Первый модуль может затем работать с результатами двух процедур. ВМ 20 предпочтительно обращается с объектами данных с помощью Базовых Правил Кодирования или метки (Т), длины (L), значенияTLV состоят из двух или трех последовательных полей: поле метка, определяющее их класс, тип и номер; поле длина, определяющее размер данных, и, если длина не равна нулю, то поле значение, содержащее данные. Поскольку отклики, формируемые КИС, обычно ограничены размером порядка 255 байтов или менее, то в соответствии с настоящим изобретением имеется максимальный размер объектаTLV. Поле "метка" имеет предпочтительно размер одного или двух байтов, поле длина предпочтительно равно одному или двум байтами, таким образом, максимальный размер поля значение равен 252 байта (настолько длинное поле требует двух байтов длины, как поясняется ниже). Первый байт поля метка разбит на три поля. Биты 7 и 8 определяют класс объекта. Бит 6 определяет, содержит ли поле значение данные примитива или имеется конструктивный объект, состоящий из других полей, кодированных методом TLV. Конструктивные объекты также называют шаблоном. Они обеспечивают возможность структурного анализа своих полей значение на наличиеTLV-последовательностей, если они обнаружены. Биты 1-5 определяют номер объекта или,если все биты установлены, они указывают, что следуют дополнительные байты метки. Дополнительные байты метки имеют установленный восьмой бит, если следует еще один байт. Все биты вплоть до двух байтов используются для определения имени метки. Поле длина состоит из 1-3 последовательных байтов, в типовом случае из двух. Если бит 8 первого байта равен 0, то биты с 1 по 7 указывают размер поля значение. Если бит 8 первого байта равен 1, то биты c 1 по 7 указывают число байтов, которые следуют. Следующие байты, если они есть, указывают размер поля значение и следуют, начиная со старшего бита. Поле значение может состоять из данных примитива или сконструировано с дополнительнымиTLVкодированными последовательностями. Если бит 6 первого байта в поле метка установлен,то поле значение содержит дополнительныеTLV последовательности. Объекты - примитивы могут быть закодированы в различных форматах: двоично-кодированные десятичные полубайты с начальными нулями или конечные полубайты со всеми установленными битами, двоичные числа или последовательности байтов,последовательности символов или буквенноцифровые байты или байты в коде ASCII, или 34 неопределенные форматы. Каждый из них обрабатывается по-разному, как и используется. КИС 5 может также использовать перечень объектов данных (ПОД) для запроса значений определенных имен меток. Карточка 5 передает ПОД, содержащий список полей метка и длина, а терминал 1 возвращает соответствующие поля значение без ограничителей. Каждый объект TLV для использования должен быть определен посредством терминала или прикладных программ для установления его типа данных и имени. Поскольку программа терминала и прикладные программы разрабатываются отдельно, ВМ 20 в соответствии с настоящим изобретением использует связанную структуру (уравновешенное двоичное дерево) для обеспечения быстрого добавления и удаления имен меток из общего списка имен меток. Это требует, чтобы следующая структура была компилирована для каждого объекта TLV в области инициализированных данных 41 в модуле,определяющем TLV: Связь - элемент с левым (два байта более высокого порядка) и правым (два байта более низкого порядка) компонентами, обеспечивающими связи с элементами дерева. Связь слева - 16-битовое смещение со знаком от параметра доступа данного объектаTLV до параметра доступа записи TLV, метка которого численно меньше, чем метка данной записи. Значение, равное нулю, указывает, что данный объект TLV не связан с объектом TLV метка которого меньше, чем данная. Связь справа - 16-битовое смещение со знаком от параметра доступа данного объектаTLV до параметра доступа записи TLV, метка которого численно больше, чем метка данной записи. Значение, равное нулю, указывает, что данный объект TLV не связан с объектом TLV метка которого больше, чем данная. Метка - двухбайтовая последовательность, численное значение старшего конца которой представляет собой метку TLV. Тип - одиночный байт, который определяет информацию управления. Зарезервировано - байт, который должен быть инициализирован в нуль компилятором 71. Данные - пакет, который хранит информацию, специфическую для виртуальной машины, включающую в себя доступ к полям длина и значение данного объекта TLV. Это поле должно инициализироваться в нуль компилятором 71. Система также должна поддерживать байт статуса для каждого TLV. Это может быть зарезервированным байтом в вышеупомянутой структуре. Бит низшего порядка в этом байте должен устанавливаться, если объекту TLV присваивается значение как результат присутствия в последовательности, обрабатываемой маркерами TLVPARSE (анализ TLV) или TLVSTORE (хранение TLV). Целью поддержания присвоенного статуса является иден 35 тификация значений TLV, которые содержат действительные данные (которые могут быть нулевыми), и их отличие от значений TLV, которые никогда не были установлены и поэтому являются недействительными. Ядро ВМ манипулирует общим перечнем меток TLV путем поддержки перечня указателей к области 41 инициализированных данных, содержащих их действительные определения, как описано выше. При загрузке модуля его TLV определения добавляются к указанному перечню как часть его инициализации; а когда он выгружается, то его TLV определения должны быть автоматически удалены из перечня виртуальной машиной 20. Исключительная ситуация может быть выдана, если модуль содержит TLV определение,которое уже существует. Адрес поля связь,описанного выше, возвращается в качестве параметра доступа для ссылок на данный TLV. Программист не должен иметь прямой доступ к этим полям и не допускать предположений об их содержимом, после того как ВМ 20 установила TLV определения. Ссылки на TLV определения в исходном коде компилируются либо как прямые ссылки на структуры определений, приведенные выше,либо как численные значения меток. В рамках определенных двоичных TLV определений индивидуальные биты или группы битов определены для получения некоторых определенных значений. Они упоминаются как TLV биты. Ссылки на TLV биты могут компилироваться с литеральными указаниями на бит в поле значение объекта TLV. Бит 0 является младшим битов первого байта, бит 7 является старшим битом того же самого байта, бит 8 является младшим битом второго байта и т.д. Данные, присвоенные TLV определению,выдаются в прикладную программу через 252 байтовую область временной клавиатуры, поддерживаемую ВМ 20 в форме окна базы данных(см. фиг. 7). Прикладная программа может изменять содержимое этой области временной клавиатуры. Если изменения должны быть сохранены, то адрес и длина в области временной клавиатуры должны быть возвращены обратно к маркеру TLVSTORE (хранение TLV). Адрес и содержимое области временной клавиатуры могут стать недействительными, когда какойлибо маркер TLV затем выполняется. В качестве составной части обеспечения защищенности карточек 5, вводимых в считывающее устройство 7, осуществляется проверка карточек 5, которые известны как потерянные или недействительные. Перечень таких карточек 5 известен как черный список или список горячих карточек. Обработка черного списка обеспечивает набором специализированных функций, которые являются специфическими для обработки большого черного списка. Типовой список может содержать 10000 номеров основных счетов (НОС), каждый величиной до 36 10 байтов или 20 двоично-кодированных десятичных цифр. Записи НОС хранятся в сжатом численном формате, снабженные с правой стороны заполнителями в виде шестнадцатеричныхFH. Так как НОС имеет максимально 19 двоично-кодированных десятичных цифр, то запись в списке всегда будет снабжена, по меньшей мере, одним FH. При поиске в черном списке FH в записи списка рассматривается как символ обобщения или безразличная цифра, но любыеFH в НОС, использованном в качестве входных данных, не являются символами обобщения. Символы обобщения могут появиться только на правом конце записи. НОС должен рассматриваться как найденный в черном списке, если имеется запись списка, которая идентична первому FH в записи. Другой составной частью мероприятий по защищенности является обеспечение криптографических услуг для шифрования и декодирования данных. Могут использоваться любые подходящие методы шифрования. В частности,для ВМ 20 предусмотрены три криптографических алгоритма: умножение по модулю и возведение в степень по модулю, что используется в алгоритме RSA, и алгоритм хеширования (рандомизации) для засекречивания SHA-1, но изобретение не ограничено использованием данных алгоритмов. Умножение по модулю выполняет умножение двух значений без знаков х и у, причем произведение сокращается с использованием модуля z. Формула имеет вид: Результат = mod(x y, z) Входные значения (х, у, z) имеют одну и ту же длину. Они представлены байтовыми последовательностями и могут быть любым кратным 8 битов вплоть до 1024 включительно. Эти значения должны находиться в байтовом порядке на конце старшего значения. Алгоритм SHA-1 стандартизован в видеFIPS (рекомендации правительства США относительно стандартов) 180-1. Алгоритм SHA-1 использует в качестве входных сообщений сообщения произвольной длины и формирует 20 байтовое хэшированное значение. Возведение в степень по модулю увеличивает значение без знака х до степени, определяемой показателем степени у без знака, причем произведение сокращается с использованием модуля z. Соответствующая формула имеет вид: Результат = mod (x y, z) Входное значение х и модуль z представлены байтовыми последовательностями и могут являться любым кратным значением 8 битов вплоть до 1024 включительно. Эти значения должны находиться в байтовом порядке на конце старшего значения. Услуги и, следовательно, программное обеспечение и даже устройства ввода/вывода могут изменяться со временем в зависимости от потребностей рынка. Если требуются значительные изменения, то обновление программно 37 го обеспечения в терминале 1 может выполняться либо непосредственно оператором, либо дистанционно через телекоммуникационную сеть. Однако для услуг, зависящих от пользователя, предпочтительно иметь динамический, но защищенный метод осуществления незначительных или специфических для пользователя модификаций обслуживания, обеспечиваемого терминалом 1. Механизм программного обеспечения типа штекер и гнездо в соответствии с настоящим изобретением обеспечивает гибкий и защищенный способ онлайнового (т.е. при подключении) конфигурирования различных модулей, которые составляют программы терминала и прикладные программы. Как показано схематично на фиг. 8, в системе осуществления транзакций, выполненной согласно изобретению, может быть определено некоторое число процедур (условно обозначенных здесь как гнезда 60), которые могут быть введены программистом прикладных программ (причем защищенным образом, поскольку он находится под контролем обслуживающего банка и платежной системы) в прикладную программу 61,62, чтобы выполнять функции меткизаполнителя для дополнительных кодов, повышающих возможности программы (условно обозначенных здесь как штекеры 66) при обработке транзакции. Любой дополнительный код, предназначенный для ввода в гнездо 60,должен быть записан в терминах набора маркеров виртуальной машины 20. Гнезда 60 предпочтительно размещаются в различных подходящих точках в существующих прикладных программах 61, 62 терминала или даже собственно в программе терминала. Они используются для отсылок к библиотечным функциям и могут возникать даже внутри библиотечной функции, если платежная система предусматривает необходимость изменения способа работы библиотечной функции. Гнезда 60 инициализируются в режиме по умолчанию виртуальной машиной 20. Если никакие дополнительные действия не предпринимаются программой терминала, то указанный режим по умолчанию для гнезд 60 будет соответствовать отсутствию операций с ними при исполнении. Штекеры 66 включают в себя исполняемый код, записанный в маркерах, поддерживаемых терминалом 1, чтобы они могли быть введены в точках, определяемых гнездами 60 для обеспечения дополнительных возможностей относительно логики терминала, установленной по умолчанию. Штекеры 66 могут уже иметься в терминале 1 в библиотеке 63 штекеров и предназначаться для вызова из КИС 5, например идентификаторами 67 гнезда/штекера в КИС 5 и логикой в терминале 1. Идентификаторы 67 гнезда/штекера включают в себя ссылку как на штекер, так и на гнездо, причем штекер находится не в КИС 5, а в библиотеке 63. Штекеры 66 могут также доставляться от 38 входного устройства 65 (например, от КИС 5 или от главной системы, соединенной с терминалом 1), но только если они согласованы с членами платежной системы, т.е. с эмитентом, обслуживающим банком и предприятием коммерческой сети (продавцом). При завершении транзакции гнезда 60 возвращаются в режим по умолчанию их исходной прикладной программы. В соответствии с настоящим изобретением предпочтительным является то, что КИС 5 содержит не прикладные программы в целом, но только вышеуказанные сменные вставки (штекеры) 66, которые повышают эффективность существующих прикладных программ терминала, так как они требуют меньше памяти. Гнезда 60 содержат указатели исполнения, известные также как процедурные указатели, которые позволяют создавать процедуру,режим осуществления которой может изменяться во время исполнения. Гнезда 60 могут рассматриваться (и реализовываться) как массив процедур, к которым может быть обеспечен доступ посредством маркера DOSOCKET (создать гнездо), который принимает номер гнезда в виде байта инлайновых (т.е. обрабатываемых) данных, или посредством маркераIDOSOCKET, который принимает номер гнезда от стека данных 27. Гнезда 60 обеспечивают реконфигурирование программы терминала или прикладной программы для обеспечения изменений или усовершенствований в процедуре обработки транзакции. Как вариант, гнезда в КИС 5' могут обеспечивать модернизацию КИС 5' с терминала 1. Гнезда 60 обеспечивают интерфейс между модулями программного обеспечения и процедурами, которые могут поступать из различных источников (обслуживающий банк, эмитент и т.д.). Поскольку обслуживающий банк или эмитент имеют взаимоотношения, обусловленные контрактом, то они могут согласовать использование конкретных гнезд 60, обеспечиваемых программной обслуживающего банка в терминале, так чтобы эмитент мог усовершенствовать режим обслуживания, предоставляемого программой, например, обеспечить дополнительные функции,обеспечивающие приверженность потребителя данной компании (скидки на воздушном транспорте, купоны и т.д.). Модуль может быть определен таким образом, чтобы конфигурация гнезд 60 изменялась автоматически при его загрузке для исполнения, или программа пользователя может программным путем задавать новую процедуру для гнезда в процессе исполнения. При условии,что условия обеспечения защищенности позволяют это, гнездам 60 в прикладной программе может быть поставлен в соответствие режим по умолчанию, и затем они могут сопрягаться с новыми процедурами, предусматриваемыми последующими модулями, чтобы обеспечивать 39 специализированные режимы. Для исключения неопределенных ситуаций предпочтительно,если все процедуры векторизованы для использования конкретного гнезда 60, чтобы исключить влияние стека данных (за исключением нулевого гнезда, как пояснено ниже). Это гарантирует непрерывность программы, независимо от того, какая векторизованная версия процедуры исполняется. Действие всех гнезд 60 перед модифицированием, устанавливаемое по умолчанию, должно соответствовать, по меньшей мере, отсутствию операций. Обслуживающий банк может разрешить усовершенствование транзакций с помощью кода на КИС 5 в качестве составной части обслуживания, выбираемого карточкой. Если это так, то подобные усовершенствования могут быть реализованы с помощью гнезд 60. Библиотека или исполняемый модуль может включать в себя определение новых гнезд 60 для штекеров, которые могут быть позднее введены с помощью карточки 5. В этом случае модуль должен определять гнездо 60 и затем использовать маркер SETSOCKET (установить гнездо) для присвоения ему режима работы по умолчанию (чаще всего нулевой режим). Если управление доступом позволяет, то КИС 5 может затем загрузить штекер 66, включающий в себя маркеры, которые определяют новый режим, и затем использовать маркер SETSOCKET(установить гнездо) для его хранения в том же гнезде 60, игнорируя режим по умолчанию. Режимы модификации отличаются удобством и гибкостью, но могут создать возможность для нарушителей модифицировать режим работы в свою пользу. Специальные меры могут потребоваться для штекеров 66 с КИС 5, если они могут модифицировать режим работы гнезд или помещаться в программную последовательность перед успешной проверкой подлинности карточки. Для обеспечения защищенности программное обеспечение может определять в соответствии с настоящим изобретением процедуру управления гнездом, которая контролирует, может ли модифицироваться каждое индивидуальное гнездо 60, или нет. Таким образом, например, выполнение кода, загруженного с КИС 5, может жестко контролироваться обслуживающим банком, чтобы ни в одно гнездо не мог быть осуществлен ввод штекера с КИС 5, пока все процедуры подтверждения подлинности для карточки не будут выполнены, т.е. пока не будет проведен анализ электронной подписи. В соответствии с настоящим изобретением меры обеспечения защищенности гнезда включают в себя определение процедуры контроля гнезда, которая должна быть использована при последующих попытках ввода штекера 60 в гнездо (маркер SETPLUGCONTROLSETPLUGCONTROL (установить проверку штекера) может быть написана так, чтобы получать для конкретного номера гнезда обратное сообщение, может ли гнездо 60 в данный момент модифицироваться. Если список гнезд модуля затем обрабатывается при загрузке модуля или если гнездо 60 программным образом сопрягается со штекером, то ВМ 20 сначала исполняет записанную пользователем процедуру PLUGCONTROL (проверка штекера) для определения того, может ли действительно гнездо 60 сопрягаться со штекером, и если не может, то сохраняет существующий режим для гнезда 60. Модуль, который стремится ограничить доступ к каким-либо гнездам 60 перед загрузкой другого модуля, загружаемого для исполнения, может исполнить процедуру, определяемую маркером SETPLUGCONTROL (установить проверку штекера) для конкретного гнезда, куда должен быть введен штекер(нулевого гнезда), с использованием выбранной функции PLUGCONTROL (проверка штекера) в качестве параметра, перед загрузкой указанного модуля. Если следующий модуль и любые другие модули, загруженные для исполнения, имеют списки гнезд, которые обработаны, то гнезда 60, для которых отказано в доступе в результате определенной пользователем процедуры PLUGCONTROL (проверка штекера), должны сохранить свой действующий режим. Это условие не должно рассматриваться как ошибка. Код, который направлен на ограничение доступа к каким-либо гнездам 60 перед выполнением другого кода, может выполнить процедуру, определяемую маркеромSETPLUGCONTROL (установить проверку штекера) с использованием выбранной функции PLUGCONTROL (проверка штекера) в качестве параметра в соответствующей точке программной последовательности. Программный запрос на ввод штекера в гнездо 60 может определить, был ли принят или отвергнут данный запрос, путем обращения к маркеруSETSOCKET (установить гнездо). Любое гнездо 60, режим которого был модифицирован, либо в процессе загрузки модуля, либо динамически путем программных команд, восстанавливается в режим, который он имел, когда последний исполняемый модуль был загружен для исполнения, что является составной частью процедуры завершения, упакованной внутри процедуры, определяемой маркером исполнения модуля (EXECUTEMODULE - исполнить модуль). В качестве примера функции, специфической для обслуживающего банка, предположим,что базовый код транзакции включает фразу "27SOCKET LOYALTY" (режим лояльности для 27 гнезда), которое определяет режим лояльности и обеспечивает его использование при последующем исполнении. Программный код 41 транзакции обслуживающего банка, кроме того,определяет код, который устанавливает флаг разрешения для данного гнезда, только если эмитент тот же самый, что и обслуживающий банк, и сумма транзакции превышает определенное минимальное значение. В процессе транзакции имеется команда, которая обеспечивает считывание в произвольном коде с карточки 5. Часть кода КИС может определять стандартную программу REWARD (поощрение), которая обновляет данные, соответствующие количеству миль полета для пользователя, и затем пытается исполнить команду PLUG REWARD INTOLOYALTY (ввести поощрение в режим лояльности). Эта команда сопрягает исполнение программы REWARD (поощрение) с исполнением LOYALTY (режим лояльности). Если флаг разрешения для гнезда LOYALTY (режим лояльности) установлен в соответствии с вышеуказанной логикой, то будет осуществляться функция SETSOCKET (установка гнезда), в противном случае LOYALTY (режим лояльности) сохранит свой режим по умолчанию, соответствующий, вероятно, отсутствию операций. Затем, когда код прикладной программы будет выполнять свою функцию LOYALTY (режим лояльности), он разрешит исполнение программы REWARD (поощрение),определенной карточкой, только в соответствии с правилами, определенными обслуживающим банком. В типовом случае, ВМ 20, функционирующая на терминале 1, может иметь ограниченное число гнезд 60, например 64 гнезда с номерами от 0 до 63. В своей наиболее базовой форме структурная программа терминала может состоять примерно из 60 гнезд и базовой программной последовательности от гнезда к гнезду. Гнезда 60 должны сопрягаться с процедурами обработки транзакции другими модулями, загружаемыми при выборе прикладной программы, либо с терминала 1, либо с КИС 5. Гнездам 60, возникающим в структурной программе перед выбором прикладной программы, с помощью РУТ присваивается по умолчанию нулевой режим. Если данное гнездо 60 сопрягается с определенной процедурой посредством более чем одного модуля, то последующая операция просто заменяет более раннюю операцию. Загрузка, обработка и исполнение модулей Код, написанный для исполнения на ВМ 20 (включая РУТ, компилированные в виде модулей маркеров), может предполагать, что вслед за включением питания ядро программного обеспечения, специфическое для терминала,поддерживающее ВМ 20, выполнило соответствующую необходимую инициализацию при включении питания, специфическую для терминала, и начало исполнение главного цикла обработки резидентных услуг терминала (РУТ) посредством процесса загрузки модулей, как опи 001598 42 сано ниже. Если главный цикл обработки РУТ выполнен, то управление возвращается к специфическому для терминала уровню программного обеспечения, ответственного за повторную загрузку РУТ и повторный ввод его главного цикла. Все ресурсы ВМ освобождаются при выходе из РУТ, за исключением данных в энергонезависимых базах данных. Освобождение ресурсов имеет место при отключении питания терминала, выходах из РУТ или при перезапуске РУТ операционной системой терминала. Если модернизированная версия какого-либо модуля РУТ была введена с того времени, как последний раз вводился главный цикл РУТ, то все ресурсы РУТ, включая данные в энергонезависимых базах данных, освобождаются при выходе. Программное обеспечение, исполняемое на терминале 1 или КИС 5, обрабатывается ВМ 20 в форме одного или более модулей, причем каждый модуль может содержать информацию любой из следующих категорий:- код маркеров,- инициализированные данные,- распределение неинициализированных данных,- определения баз данных,- определения объектов TLV,- список гнезд,- взаимозависимости модулей. Каждый модуль предпочтительно доставляется в терминал в формате доставки модулей. ВМ 20 поддерживает энергонезависимый архив в энергонезависимом ОЗУ 18 модулей, которые доставлялись и инсталлировались на терминале 1. Каждый модуль в архиве должен быть идентифицирован идентификатором модуля. После регистрации в архиве модулей информация модуля становится доступной посредством энергонезависимой базы данных модулей, поддерживаемой ВМ 20 и хранящейся в энергонезависимой памяти 18. В соответствии с настоящим изобретением ВМ 20 защищает модули в архиве от модифицирования любыми другими модулями, поскольку отсутствуют какие-либо маркеры для такого доступа. Кроме того, ВМ 20 обеспечивает возможность помещения в архив новой версии конкретного модуля, в то время как модуль с тем же идентификатором имеется для целей исполнения. Принципиально имеются две фазы в обработке модуля: во-первых, он загружается, что означает, что он становится доступным, и его данные, базы данных и т.п. обрабатываются; и,во-вторых, если он является исполняемым модулем, то ВМ 20 начинает обработку его последовательности маркеров, начиная с точки ввода. Процедура исполнения будет подробно описана ниже со ссылками на блок-схему последовательности операций на фиг. 9. Во-первых, на этапе 100 ресурсы маркируются и сохраняются. Перед исполнением мо 43 дуля ВМ 20 маркирует его состояние и сохраняет необходимые ресурсы, так чтобы его состояние могло быть восстановлено позднее. Состояния включают:- местоположение указателя расширяемой памяти, указателя фрейма, указателя конца фрейма;- содержимое всего текущего списка гнезд;- объекты TLV, зарегистрированные в списке имен меток TLV;- другие внутренние данные реализации ВМ, требуемые для управления активизацией и исполнением модулей. Затем на этапе 102 модуль загружается. Идентификатор исполняемого модуля подается в подпрограмму загрузка модуля, которая будет описана ниже. Если модуль загружается без ошибок, как определено на этапе 104, то он может исполняться, и программа переходит к этапу 108. Если на этапе 104 определена ошибка, то исполнение модуля прекращается, и все ресурсы, требуемые для исполнения модуля, на этапе 105 освобождаются. Это требует от ВМ 20 выполнения следующих действий.- Вся энергозависимая память, требуемая для загрузки модуля, и любой модуль, требуемый для загрузки, должны быть освобождены и очищены в нуль. Сюда относятся, без какихлибо ограничений:- область памяти, необходимая для всех инициализированных и неинициализированных данных модуля;-область памяти, необходимая для любых внутренних буферов объектов TLV и структур данных управления, определяемых этими модулями;- область памяти, необходимая для любых внутренних буферов структур данных управления, требуемых базами данных, определяемых этими модулями.- Список имен объектов TLV, поддерживаемый виртуальной машиной, для перекодировки меток, должен быть восстановлен в его состояние непосредственно перед исполнением модуля.- Содержимое списка гнезд, поддерживаемого виртуальной машиной, должно быть восстановлено в его состояние непосредственно перед исполнением модуля.- Содержимое указателя фрейма, указателя конца фрейма, указателя расширяемой памяти должно быть восстановлено в соответствующее состояние непосредственно перед исполнением модуля. После успешной загрузки модуля на этапе 106 определяется, является ли модуль исполняемым или библиотечным модулем. В последнем случае исполнения модуля не производится и ВМ 20 освобождает все ресурсы на этапе 110,как описано для этапа 105. Если модуль является исполняемым, то определяется поле, определяющее точку ввода модуля. 44 ВМ 20 запускает модуль путем вызова маркера, определенного в поле точки ввода. Затем каждый маркер исполняется на этапе 108. Исполнение модуля завершается с использованием маркера RETURN (возврат), после чего все ресурсы на этапе 110 освобождаются. Процедура, требуемая для загрузки модуля, подпрограмма загрузка модуля, будет описана ниже со ссылками на блок-схему последовательности операций, представленной на фиг. 10. Если при загрузке модуля обнаружена ошибка, то это приводит к тому, что подпрограмма загрузка модуля немедленно выдает сообщение об ошибке. Общей ошибкой является нехватка памяти, когда недостаточно ресурсов для обеспечения области инициализированных данных, неинициализированных данных, баз данных или объектов TLV; когда обнаружена дублирующая метка TLV и т.п. Инициализированные данные должны сначала устанавливаться перед обработкой базы данных и разделов TLV, поскольку они являются частью области инициализированных данных. На этапе 120 определяется, не загружен ли уже модуль в память. Если он уже загружен, то он не загружается второй раз, и непосредственно осуществляется программа загрузка модуля, возвращая ответное сообщение об успешной загрузке. Затем на этапе 122 определяется, если ли модуль в архиве. Если его нет, то он не может быть загружен, и подпрограмма загрузка модуля отвечает сообщением о неуспешной операции. На этапе 124 определяется, сколько байтов данных требуется для области 41 неинициализированных данных модуля, и требуемое количество резервируется. Эта область 41 устанавливается в нулевое состояние посредством ВМ 20. Аналогичным образом, на этапе 126 резервируется требуемое количество байтов данных для области 42 инициализированных данных модуля. Затем инициализированные данные копируются в эту область. На этапе 128 объектыTLV, определенные в модуле, подлежащем загрузке, добавляются с помощью ВМ 20 в ее внутренний список имен, используемый для перекодировки объектов TLV. Корень структуры данных TLV запоминается. Затем на этапе 130 базы данных, определенные в модуле, подлежащем загрузке, обрабатываются с помощью ВМ 20. Этапы 128 и 130 могут быть выполнены в любом порядке. На этапе 132 выбираются импортированные модули для текущего модуля. На этапе 134 список импортированных модулей обходится, рекурсивно загружая каждый по очереди. Если импортированный модуль по какой-то причине не может быть загружен, как определено на этапе 136, то для модуля, импортировавшего данный модуль, устанавливается,что он не смог осуществить загрузку, так как он не может получить доступ к услугам импортированного модуля. В данном случае подпрограмма загрузка модуля возвращает сообще 45 ние ошибки. На этапе 138 определяется, имеется ли еще импортируемый модуль. Если имеется,то процедура возвращается к этапу 132. После определения на этапе 138, что последний импортированный модуль рекурсивно загружен,для текущего модуля выделены ресурсы, он загружен и обработан без ошибок, подпрограмма загрузка модуля на этапе 139 осуществляет ввод в гнездо 60 в ее списке и затем возвращает ответное сообщение об успешной загрузке модуля. Любая попытка ввода штекера в нулевое гнездо должна игнорироваться виртуальной машиной 20. Если необходимо осуществить ввод штекера в нулевое гнездо, то это можно выполнить с использованием маркераSETSOCKET (установить гнездо). Процедура ввода штекера в гнезда 60 на этапе 140 будет описана со ссылками на фиг. 11. На этапе 140 режим, установленный по умолчанию, для каждого гнезда в загруженном модуле, подвергается обработке. На этапе 141 определяется, имеется ли штекер. Если нет, то модуль исполняется на этапе 149. Если имеется, то на этапе 142 выбирается первый штекер. На этапе 143 определяется, установлен ли флаг защищенности для соответствующего гнезда. Если нет, то на этапе 146 в гнездо водится штекер. Если флаг установлен, то исполняется функция защищенности,определенная для данного гнезда. Если оценка защищенности положительна, то на этапе 146 в гнездо водится штекер. На этапе 148 определяется, является ли штекер последним,если нет, то для оценки выбирается следующий штекер. Если проверка защищенности отрицательна, то на этапе 147 определяется, является ли штекер последним. Если на этапах 147 или 148 определено, что штекер является последним, то модуль исполняется в режиме по умолчанию для всех гнезд, которые не были сопряжены со штекерами, и в режиме, соответствующем штекеру, для тех гнезд, которые были сопряжены со штекерами. При таком выполнении обеспечивается реализация защищенного режима. Модули, которые загружаются из КИС 5 с помощью маркера LOADCARDMODULE (загрузка модуля карточки), должны обрабатываться иначе, по сравнению с теми, которые загружаются из архива в терминале 1 с использованием маркера EXECUTEMODULE (исполнение модуля). Блок-схема последовательности операций для маркера LOADCARDMODULE (загрузка модуля карточки) показана на фиг. 12. Перед исполнением модуля карточки ВМ 20 маркирует свое состояние и сохраняет требуемые ресурсы на этапе 150, чтобы данное состояние могло быть восстановлено позже. Такое состояние включает в себя:- местоположение указателя расширяемой памяти, указатель фрейма, указатель конца фрейма;- объекты TLV, зарегистрированные в списке имен меток TLV;- другие внутренние данные реализации ВМ, требуемые для управления активизацией модулей карточки. Модуль загружается на этапе 152 с использованием подпрограммы загрузки модуля,описанной выше со ссылками на фиг. 9; различие состоит только в том, что модуль находится на КИС 5, а не в архиве, и не загружен. Если на этапе 154 определено, что модуль карты не загружен успешным образом, то все ресурсы возвращаются на этапе 155 в состояние, которое они имели непосредственно перед исполнением маркера LOADCARDMODULE (загрузка модуля карточки). Для этого требуется следующее.- Вся энергозависимая память, требуемая для загрузки модуля, и любой модуль, требуемый для загрузки, должны быть освобождены и очищены в нуль. Сюда относятся, без какихлибо ограничений:- область памяти, необходимая для всех инициализированных и неинициализированных данных модуля;- область памяти, необходимая для любых внутренних буферов объектов TLV и структур данных управления, определяемых этими модулями;- область памяти, необходимая для любых внутренних буферов структур данных управления, требуемых базами данных, определяемых этими модулями.- Список имен объектов TLV, поддерживаемый виртуальной машиной, для перекодировки меток, должен быть восстановлен в его состояние непосредственно перед исполнением модуля.- Содержимое списка гнезд, поддерживаемого виртуальной машиной, должно быть восстановлено в его состояние непосредственно перед исполнением модуля.- Содержимое указателя фрейма, указателя конца фрейма, указателя расширяемой памяти должно быть восстановлено в соответствующее состояние непосредственно перед исполнением модуля. Если модуль карточки успешно загружается, то состояние, запомненное на этапе 150 маркировки и сохранения ресурсов, просто отменяется на этапе 156. Тем самым модуль карточки вводится в выполняющуюся систему. При использовании модуль карточки должен вводиться в гнезда, в противном случае отсутствует способ выполнения какого-либо кода, который присутствует в модуле карточки. Затем на этапе 158 определяется, является ли модуль исполняемым модулем, и если это так, то он выполняется на этапе 160, как описано со ссылками на этапы 106 и 108 по фиг. 9. Конкретные варианты осуществления изобретения, описанные выше, являются всего 47 лишь иллюстративными, причем возможны различные варианты и модификации, соответствующие принципам изобретения. Все такие варианты и модификации следует рассматривать как входящие в объем изобретения, определяемый пунктами формулы изобретения. Приложение 1. Определение маркеров. 1.1. Общие сведения. Маркеры EPI-кода (кода команд исполняемой программы) представляют собой набор команд двухстековой виртуальной машины с дополнительным указателем фрейма. Маркеры могут обрабатываться как промежуточный язык компилятора. Некоторые реализации транслятора программы могут реально компилировать маркеры EPI-кода в машинный код. Маркеры EPI-кода представляют собой байтовые маркеры, обеспечивающие максимум 256 маркеров. Байтовые префиксные маркеры позволяют расширить данный набор маркеров до теоретического максимума 65536 маркеров,если рассматривать префиксы как определяющие страницы маркеров числом 256 каждая. Реально определяется ограниченный набор префиксных маркеров. Каждое значение маркера представлено в шестнадцатеричной форме как 2-разрядный шестнадцатеричный код с соответствующим именем. Маркеры без префикса (однобайтовые маркеры) называются основными маркерами, в то время как маркеры без префикса (двухбайтовые маркеры) называются вспомогательными маркерами. Исполнение любого основного или вспомогательного маркера, который не определен в приведенном ниже списке, вызывает исключительное состояние ILLOP. 1.1.1. Forth - функции маркеров EPI-кода. В данном разделе представлен алфавитный список слов языка Forth, используемых в качестве маркеров EPI-кода. Каждая строка содержит слева направо:- произношение на естественном языке,если отличается от слова на английском языке;- специальные указатели, если это применимо: А - слово на языке ANS Forth (включая все дополнительные наборы слов). С - директива компилятора; может использоваться внутри определения.G - родовое слово языка Forth (в обычном использовании, например Forth Interest Group,но не на языке ANS Forth. Н - слово главного узла (компилятора), которое может вносить (или нет) маркеры в место назначения. 1.2. Условные обозначения. 1.2.1. Форматы чисел. Числа, превышающие один байт, передаются в программах маркеров в дополнительной форме, где первым следует старший разряд. В программе EPI-кода к числам всегда должен обеспечивать доступ для операторов корректного формата, чтобы обеспечивать возможность программам запоминать числа в форме, наиболее подходящей для соответствующей архитектуры. Типы данных с различной точностью хранятся в стеке, причем наиболее значимая комбинация данных на самой верхней позиции. В памяти эти типы данных хранятся так, что наиболее значимые комбинации данных находятся в самой нижней адресуемой ячейке в пределах типа данных с множеством комбинаций. 1.2.2.Структуры управления и смещения. 50 Структуры управления образованы маркерами управления (BRA, RLOOP и т.д.), за которыми следует знаковое четырехбайтное, двухбайтное или однобайтное смещение. Смещение,следующее за маркером управления, добавляется к указателю маркера (ТР) после того, как смещение выбрано. Таким образом, если маркер перехода есть addr, то адрес места назначения будет addr+2+offset (смещение) для 1-байтного смещения (SBRA), или addr+3+offset для 2 байтного смещения (BRA), или addr+5+offset для 4-байтного смещения (EBRA). Маркеры, принимающие 4-байтные смещения, доступны только для специфического для терминала кода при реализациях виртуальной машины, которые поддерживают для кода область 32-битовых линейных адресов. 1.2.3. Адреса. Определенные пользователем процедуры определяются их адресами в программе EPIкода. Если маркеры транслированы или компилированы в собственном коде для больших процессоров, то адрес области маркеров не будет соответствовать реальному адресу кода. 1.3. Контроль типов данных. Большинство маркеров работают с величинами с размером данных и знаковой или беззнаковой интерпретацией, определяемой маркерами, но команды доступа к памяти в памяти фрейма могут принять игнорирование типа данных, определяемое префиксными маркерами. Набор байтных кодов, показанных в таблице 1,зарезервирован для таких префиксных маркеров, но в настоящее время используются толькоSBYTE и UBYTE. Типы данных, которые требуют менее одной ячейки (1 байт), выбираются из памяти с использованием байтового оператора или оператора с игнорированием префикса. Если подразумевается или определен тип знаковых данных,то данные расширяются для учета знака до размера ячейки. Если подразумевается или определен тип беззнаковых данных, то данные получают нулевое расширение. Таблица 1. Префиксы типов данных АббреОписание виатураUV Беззнаковый очень длинный Префикс 1.4. Арифметика. Операции суммирования и вычитания, которые приводят к переполнению размера, определенного для получаемого результата, определяют соответствующий результат по модулю 51 Операции запоминания, для которых предусмотренный объем памяти меньше, чем размер прошедшего значения, будут реализовывать запоминание значения, усеченного до размера выделенного объема памяти. Операции деления симметричны; это означает, что округление всегда осуществляется в направлении нуля, независимо от знака. 1.5. Основные маркеры. Маркеры для удобства подразделяются на несколько логических наборов и приведены ниже в отдельных параграфах. Все значения маркеров выражены в шестнадцатеричных значениях. Префиксы типов данных, применимые для маркеров, приведены в явном виде с использованием аббревиатур из таблицы 1. Любой основной маркер, который имеет префикс, образованный маркером, не входящим в список префиксов, является недействительным, и исполнение такого маркера приводит к вызову исключительного состояния ILLOP. Устанавливаемый по умолчанию тип для маркера приведен курсивом и всегда перечисляется первым. Устанавливаемый по умолчанию префикс типа данных является избыточным и является недействительным, если используется в качестве префикса маркера, как указано выше. 1.5.1. Набор операций. 00 NOOP(-) Никакого действия не предпринимается. 04 BFETCHS(addr - num) Выборка 8-битового байта из указанного адреса, со знаковым расширением. 08 LIT(- addr) Возврат элемента данных, который следует в режиме подключения как литерал, который является адресом в кодовом отображении. Значение литерала может быть перемещено в данном отображении загрузчиком программы. 0 А LITD(- addr) Возврат элемента данных, который следует в режиме подключения как литерал, который является адресом в инициализированной области данных. Значение литерала может быть перемещено в данном отображении загрузчиком программы. 0B LITU(- addr) Возврат элемента данных, который следует в режиме подключения как литерал, который является адресом в неинициализированной области данных. Значение литерала может быть 52 перемещено в данном отображении загрузчиком программы. 0 С PLIT(-u) Возврат байта, который следует в режиме подключения. Байт имеет нулевое расширение до 32 битов. 0D NLIT(-num) Возврат байта, который следует в режиме подключения. Байт имеет нулевое расширение до 32 битов и затем инвертируется. 0 Е HLIT(-u) Возврат 2-байтного значения, которое следует в режиме подключения. Значение имеет нулевое расширение до 32 битов. 10 HLITC(- addr) Возврат адреса, являющегося результатом суммирования беззнакового 2-байтного значения, которое следует в режиме подключения с базовым адресом кодового отображения. Значение имеет нулевое расширение до 32 битов. 11 SLITD(- а - addr) Возврат адреса, являющегося результатом суммирования беззнакового байта, который следует в режиме подключения, интерпретированный как положительное смещение в элементах данных, с базовым адресом инициализированных данных. Байт имеет нулевое расширение до 32 битов и умножен на 4 для получения смещения в байтах. 12 HLITD(- addr) Возврат адреса, являющегося результатом суммирования 2-байтного значения, которое следует в режиме подключения с базовым адресом инициализированных данных. Значение имеет нулевое расширение до 32 битов. 13 SLITU(-addr) Возврат адреса, являющегося результатом суммирования беззнакового байта, который следует в режиме подключения, интерпретированный как положительное смещение в элементах данных, с базовым адресом неинициализированных данных. Байт имеет нулевое расширение до 32 битов и умножен на 4 для получения смещения в байтах. 14 HLITU(- addr) Возврат адреса, являющегося результатом суммирования 2-байтного значения, которое следует в режиме подключения, с базовым адресом неинициализированных данных. Значение имеет нулевое расширение до 32 битов. 15 ADDLIT(x1-x2) Суммирование литерала из знакового 1 байтного значения данных, которые следуют в режиме подключения, с x1, что дает х 2. 19(d-d-lit) Вычитание знакового 8-байтного значения данных, которые следуют в режиме подключения, из удвоенного числа d. 1DSETxx выполняют сравнение с нулем, в соответствии с результатом сравнения устанавливается флаг. 42 SETGE(u1u2 - flag) Сравнение беззнаковых значений u1 и u2 и возврат TRUE, если u1u2. 4 С CMPGE(num1 num2 - flag) Сравнение знаковых значений num1 и num2 и возврат TRUE, если num1 num2. 4F CMPLE 54 Сравнение знаковых значений num1 и num2 и возврат TRUE, если num1num2. Следующие маркеры обеспечивают доступ к памяти фрейма. 5053 PFRFETCH2PFRFETCH5SFRFETCHn(q.v.), где n равно 25. Обходы возможных типов данных включают : SL, SB, UB. 545F TFRFETCH12TFRFETCH1SFRFETCHn(q.v.), где n равно-12-1. Обходы возможных типов данных включают: SL, SB, UB. 6063 PFRSTORE2PFRSTORE5SFRSTORE(q.v.), где n равно 25. Обходы возможных типов данных включают: SL, SB. 646F TFRSTORE12TFRSTORE1SFRSTORE(q.v.), где n равно -12-1. Обходы возможных типов данных включают: SL, SB. 70 SFRFETCH(-num) Выборка значения (по умолчанию элемента данных) num при знаковом однобайтном смещении инлайновых данных относительно указателя фрейма. Смещение интерпретируется как индекс элемента данных (т.е. оно умножается на 4 для получения байт-адресованного смещения) для устанавливаемого по умолчанию типа данных и как байтный индекс для обхода данных байтного размера. Заметим, чтоSFRFETCH 0 и SFRFETCH 1 возвращают внутренние данные обработки фрейма без какоголибо значения для вызывающей программы и таким образом не образуют истинных ссылок в фрейме. Таким образом, параметры запускаются с SFRFETCH 2, а временные переменные - сSFRFETCH -1, поскольку стеки фреймов нарастают в памяти в направлении вниз. Обходы возможных типов данных включают: SL, SB, UB. 71 SFRSTORE(num -) Запоминание значения (по умолчанию элемента данных) num в аргументе при знаковом однобайтном смещении инлайновых данных относительно указателя фрейма. Смещение выдается как инлайновое значение, которое интерпретируется как индекс элемента данных(т.е. оно умножается на 4 для получения байтадресованного смещения) для устанавливаемого по умолчанию типа данных и как байтный индекс для обхода данных байтного размера. См 55 Обходы возможных типов данных включают: SL, SB. 72 FRFETCH(-num) Выборка значения num при знаковом смещении относительно указателя фрейма. Смещение обеспечивается двухбайтным инлайновым значением. См SFRFETCH. Обходы возможных типов данных включают: SL, SB, UB. 73 FRSTORE(-num) Запоминание значения num в аргументе при знаковом смещении относительно указателя фрейма. Смещение обеспечивается двухбайтным инлайновым значением. См SFRFETCH. Обходы возможных типов данных включают: SL, SB. 74 SFRADDR(-addr) Возврат адреса в фрейме при знаковом смещении относительно указателя фрейма. Смещение обеспечивается однобайтным инлайновым значением, которое умножается на 4 для получения байтного смещения для устанавливаемого по умолчанию типа данных и используется непосредственно в виде байтного индекса для обхода данных байтного размера. Обходы возможных типов данных включают: SL, SB. 75 FRADDR(-addr) Возврат адреса в фрейме при знаковом смещении на элемент данных относительно указателя фрейма. Смещение обеспечивается двухбайтным инлайновым значением, которое умножается на 4 для получения байтного смещения для устанавливаемого по умолчанию типа данных и используется непосредственно в виде байтного индекса для обхода данных байтного размера. Для маркеров, обеспечивающих поддержку для стандартных функций преобразования чисел языка Forth : NMBR в имени маркера произносится как номер Маркеры LTNMBR,NMBRS и TONUMBER использует пользовательскую переменную BASE в качестве базы числового преобразования. 8 С UNDER(x1x2-x1x1x2) Дублирование второго элемента в стеке. 9 С(- а - addr) Возврат адреса в области данных, смещение которого следует в инлайновом элементе непосредственно за данным маркером, и выполнение подпрограммы выхода. Этот маркер используется для идентификации области данных путем вызова процедуры, соответствующей этому, что обеспечивает создание позиционнонезависимых таблиц данных.(- а - addr) Переход к адресу кодовой области, смещение которого хранится в инлайновом элементе данных, который следует; после ввода в стек данных адреса, получаемого в результате суммирования беззнакового смещения, которое следует в последующем элементе инлайновых данных (т.е. после кодового смещения), с базовым адресом области инициализированных данных. Этот маркер используется для идентификации структуры данных в памяти программы и для переноса управления к подпрограмме, которая их обрабатывает, обеспечивая базу механизма простого класса. А 4 DOCREATE(- а - addr) Возврат адреса в области данных, смещение которого следует в инлайновом двухбайтном значении непосредственно за данным маркером, и выполнение подпрограммы выхода. Этот маркер используется для идентификации смещения данных путем вызова процедуры,соответствующей этому, что обеспечивает создание позиционно-независимых таблиц данных. А 5 DOCLASS(- а - addr) Переход к адресу кодовой области, смещение которого хранится в инлайновом элементе данных, который следует; после ввода в стек данных адреса, получаемого в результате суммирования беззнакового смещения, которое следует в последующих двух байтах инлайновых данных (т.е. после кодового смещения), с базовым адресом области инициализированных данных. Этот маркер используется для идентификации структуры данных в памяти программы и для переноса управления к подпрограмме,которая их обрабатывает, обеспечивая базу механизма простого класса. А 6 ECALL(-) При наличии последующего инлайнового элемента данных вызывает процедуру, использующую этот элемент данных в качестве знакового байтового смещения в кодовой области. А 7 SCALL(-) При наличии последующего инлайнового байта вызывает процедуру, использующую этот 57 байт в качестве знакового байтового смещения в кодовой области. А 8 CALL(-) При наличии последующего инлайнового двухбайтного смещения вызывает процедуру,использующую это значение в качестве знакового байтового смещения в кодовой области. А 8 SMAKEFRAME(xparamsxj ) Сопровождается двумя беззнаковыми однобайтными литералами, содержащими сначалаparams - число элементов данных, образующих параметры процедуры, и затем temps - число элементов временных переменных. Распределяет params + temps + 2 элемента данных, и затем устанавливает текущий указатель фрейма для указания на новый фрейм. Данный маркер обеспечивает возможность доступа FRFETCH иFRSTORE к параметрам процедуры и временным переменным. Виртуальная машина имеет возможность формировать фреймы в возвратном стеке, так что использование фреймов ограничено правилами, которые применяются в использованию возвратного стека в принципе. Параметры процедуры будут перемещаться из стека данных в фрейм с помощью SMAKEFRAME, так что к ним может быть обеспечен доступ дляFRFETCH и FRSTORE. Если невозможно сформировать фрейм запрошенного размера, то будет выдаваться FRAMESTACKERROR.(xparamsx1 ) Сопровождается двумя беззнаковыми двухбайтными литералами, содержащими сначала params число элементов данных, образующих параметры процедуры, и затем temps - число элементов временных переменных. См. SMAKEFRAME.(-) Восстановление указателя фрейма в его предшествующее значение и освобождение текущего фрейма. 1.5.2. Набор переходов. Эти маркеры включают в себя обычные операторы перехода стековой машины плюс периоды прогона для слов языка Forth DO DO(-) Переход при любом условии. Четырехбайтное инлайновое смещение. В 0 EBZ(-) Короткий переход. Знаковое байтное инлайновое смещение. В 3 SBZ(num-) Короткий переход, если num= 0. Знаковое байтное инлайновое смещение.(num-) Короткий переход, если num = 0. Знаковое байтное инлайновое смещение.(-) Безусловный переход. Знаковое двухбайтное инлайновое смещение. В 7 BNZ(num-) Переход, если num0. Знаковое двухбайтное инлайновое смещение. 1.5.3. Обходы типов данных и кодовых страниц. Эта группа обеспечивает возможность преодоления ограничений 8-битовых маркеров. Заметим, что эта стековая операция зависит от следующего маркера. Пара маркеров называется вспомогательным маркером. Маркеры расширения для типов данных занимают маркеры от С 0 до CF. Неиспользуемые маркеры в этом диапазоне зарезервированы для будущего использования, если потребуются дополнительные префиксы типов данных.(063), который определяет номер требуемой функции. Стековый эффект определяется функцией, приписанной гнезду.(u-) Выполняет функцию гнезда, номер гнезда (063) которого определяется посредством u. Эффект стека более низкого уровня определяется функцией, присвоенной гнезду. Исключительное состояние языка ANS Forth 24 (недействительный числовой аргумент) будет выдано,если u больше, чем 63. 1.5.5. Набор управления. Е 6 IMCALL 59 Выполняет функцию из модуля, номер модуля которого (0-255) дан в следующем байте инлайновых данных, а номер функции которого(0-255) дан в следующем байте инлайновых данных. Стековые эффекты зависят от вызываемой функции. Е 7 CLASSPROC(-) При загрузке CLASSPROC маркирует запись в код обработки класса. Используется для обеспечения компиляции и может быть реализован как NOOP.(-) Маркер расширения страницы, обрабатываемый как первый байт вспомогательного маркера. Вызывает подпрограмму, определенную в следующем инлайновом байте. Поддерживаемый набор вспомогательных маркеров определен в параграфе 1,7. Стековый эффект определяется специализированной подпрограммой. 1.6 Гнезда Первые восемь вспомогательных маркеров гнезд зарезервированы для функций управления гнездами, причем определенные функции управления описаны ниже. Остальные гнезда(от D2 08 до D2 3F) предназначены для использования в прикладной программе.(xp - flag) Установить указатель исполнения хр в качестве обработчика функции гнезда u, в результате чего хр будет исполняться путем последующего исполнения DOSOCKET u. Перед установкой указателя исполнения выполняется процедура, инсталлируемая посредством SETPLUGCONTROL, для определения того, может ли в данное гнездо быть введен штекер с этим новым хр. flag представляет собой значение, возвращаемое этой процедурой. SETSDOCKET устанавливает указатель только в том случае, если flag является FALSE (ложно), в противном случае указатель отбрасывается. Если и больше, чем 63, выдается исключительное состояние Exception-24 (недействительный числовой аргумент).(хр-) Запоминает указатель исполнения хр пользовательской процедуры, которая должна выполняться посредством SETSOCKET для определения того, имеется ли возможность ввода штекера в гнездо. Действие этой процедуры (которая здесь определяется как PLUGCONTROL в целях иллюстрации) должно состоять в следующем:(u-flag) где u - номер гнезда, причем flag возвращается в виде FALSE (ложно), если в гнездо может быть введен штекер, или TRUE (истинно) в противном случае. Кроме того, процедура PLUGCONTROL должна вызывать ис 001598 60 ключительное состояние exception - 24 (недействительный числовой аргумент) для значений u вне диапазона 0-63). Действие по умолчанию PLUGCONTROL инсталлируется виртуальной машиной и возвращает FALSE (ложно) для всех значений u,обеспечивающих возможность ввода штекеров во все гнезда.(dev fn num1 num2 - ior) Вызывает процедуру операционной системы с параметрами: dev - выбирает затребованное устройство ввода/вывода для функции fn сargv соответственно при использовании языка С. Заметим, что данное гнездо является зависимым от реализации и предусмотрено таким образом, что специфические программы терминала, написанные с использованием EPI-кода,могли иметь зависящий от терминала ввод/вывод. Если конкретная функция не поддерживается, то выдается исключительное состояние exception - 21 (неподдерживаемая операция).(dev fn num1 num2 - ior) Гнездо для подпрограммы EPI-кода, которая вызывается соответствующей операционной системой. Четырьмя параметрами являются 32-битовые значения, предназначенные для использования следующим образом: dev - выбирает затребованное устройство ввода/вывода для функции fn с num1 32-битовыми параметрами,содержащимися в массиве num2, возвращая ior,зависимое от реализации. Заметим, что num1 иnum2 соответствуют arvc и argv соответственно при использовании языка С. Заметим, что данное гнездо является зависимым от реализации и предусмотрено таким образом, что специфические программы терминала, написанные с использованием EPI-кода,могут вызывать стандартные программы для операционной системы. Если конкретная функция не поддерживается, то выдается исключительное состояние exception - 21 (неподдерживаемая операция). 1.7. Набор ввода/вывода SYSFUNC. Данный набор определяет функции, доступные посредством маркера SYSFUNC, который действует как обобщенный интерфейс для соответствующих стандартных программ операционной системы. 1.7.1. Доступ к устройству. Каждому устройству выделен уникальный номер устройства. Коды ior статуса являются зависимыми от устройства, за исключением того, что код ior всегда указывает успешную операцию.
МПК / Метки
МПК: G06K 19/07, G07F 7/10
Метки: осуществления, устройств, транзакций, переносимая, микропроцессорами, система, программируемых, защищенная
Код ссылки
<a href="https://eas.patents.su/30-1598-perenosimaya-zashhishhennaya-sistema-osushhestvleniya-tranzakcijj-dlya-programmiruemyh-ustrojjstv-s-mikroprocessorami.html" rel="bookmark" title="База патентов Евразийского Союза">Переносимая защищенная система осуществления транзакций для программируемых устройств с микропроцессорами</a>
Предыдущий патент: Способ изомеризации алкилароматических углеводородов
Следующий патент: Способ и устройство для измерения расхода текучей среды
Случайный патент: 2-арилбензо[b]тиофены, полезные для лечения синдрома эстрогенной недостаточности