图1中,能够读出一个芯片卡的终端20,或一个集成了芯片卡功能的终端22,通过一个数据通信网络26与远处的数据库23到25连接并且协同工作。这个数据通信网络26尤其是一个电话网络,因特网,或其他任何的数据通信网。每个数据库含一个数据处理中央单元以管理一个存储器。根据本发明和以上的说明,当这个卡片21或这终端22它检测到由于缺少存储空间以致不能在它的存储器中装载新的应用程序时,可以决定向数据库23到25中的一个卸载另一个应用程序。通过卸载,为接收这个新的应用程序释放出一个足够的空间。如果这个卡片21或这个终端22今后需要这个被卸载的应用程序,为了重新装载这个应用程序,它们(21或22)向数据库发一个命令,然后在必要的情况,卸载一个应用程序以释放一段新的存储空间。
终端20和卡片21的构成在图2中说明。终端本身包含一个微处理器2,微处理器上面连接一个存储器ROM3和一个存储器RAM4,带或不带物理接触地与芯片卡21连接的连接装置5,和一个可以使终端和图1的数据通信网26通信的传输接口7。这个终端可另外配备存储装置,例如可拆或不可拆的磁盘或小磁盘,输入装置(例如一个键盘和/或鼠标型点击设备),这些不同的装置在图2中没有表示出。
这个终端可以由安装在个人或公共的场所中的任何信息设备构成,能够提供一个管理信息的方法或支持各种购物或服务,这种设备是固定的或是移动的。它也可以特别是涉及提供电信服务的设备。
另外,卡片21带有一个芯片,这个芯片具有信息处理装置9,一个非易失存储器10,一个工作的易失存储器RAM14,和连接终端20的连接装置13。这样的卡片设计成在存储器10中确定一段保密区11,一旦在这个区中存入信息,就不能从这个卡片的外部访问这些信息,而只能由信息处理装置9访问,卡片还确定一段可访问区12,这个区可以在卡片的外部由微处理器执行一个读和/或写信息时被访问。非易失存储器10中的每个区可以包含一部分只读存储器ROM和一部分只读EPROM,EEPROM,或者由“快速”型存储器RAM或FRAM(后者是一种铁磁的存储器RAM)组成,也就是说,具有一个存储器EEPROM的特性,而在访问时间以外,它们就和一个一般的RAM一样。
作为芯片,如本申请人所申请的美国专利No4.382.279所述,特别是可以用一个微处理器把非易失存储器编程。在该专利中的第1列,第13-25行指出,芯片的自动编程特性相当于可以在一个存储器ROM中安放一个程序fi,在一个可编程存储器中把另一个程序fj修改成一个程序gj。在一个变例中,芯片的微处理器全部或部分地用半导体芯片组成的逻辑电路代替。这些电路特别是ASIC型(专用集成电路),实际上这些电路,借助于硬件连接而不是微程序,就可以进行包括鉴别和特征标志的计算。作为ASIC的例子可以参考市场上的SIEMENS公司部件编号SLE4436和SGS-THOMSON公司部件编号ST1335。这个芯片最好是单片式的构造。
图2的一个变例表示于图3,这里在图1中的终端22,除了终端20的部件之外,在模块15上具有卡片21的构件,那些和图2,3共同的元件仍然用同样的编号。但是,图2中的连接装置5,13被换成在微处理器2和微处理器9之间的一固定的连接。
图3的一个变例表示于图5,该终端只有一个单独的微处理器51或者等效的器件连接到一个存储器RAM52和一个非易失存储器53。非易失存储器53包含一个区54,该区可以让外部终端通过微处理器51访问,还包含一个只能由微处理器51访问的保密区55。如图2中有关的说明,微处理器51具有可以由微处理器9自动编程的特性。最后,终端50具备可以和图1中的数据通信网26通信的一个传输接口56。
参考图2的实施例的说明,不作为限制性,终端20由它的阅读卡片21的功能而被称为“计卡器”。
卡片的存储器根据下面的类型组成:ROM型存储器,RAM型工作存储器,和EEPROM或FLASH型可编程存储器。如表1所示,ROM存储器含一个基本操作系统区,该区中至少存有一些子程序和一些例行程序,这些程序涉及输入/输出以及存储器的写入/读出,ROM存储器还包含一个虚拟存储器的操作系统区,该虚拟存储器是由数据库的存储器23到25组成。以后基本操作系统和虚拟存储器的操作系统一起合称为“卡片的操作系统”。
虚拟存储器的操作系统可以管理至少九个命令。至少有四个命令是由计卡器传送到卡片的:
-向卡片装载应用程序。
-在卡片中执行预先装载的程序。
-擦除卡片上的应用程序。
-控制卡片上现存的应用程序。由五个命令是由卡片传送到计卡器的:
-向网络卸载应用程序。
-从网络再装载应用程序。
-挂起装载过程。
-恢复装载过程。
-擦除网上的应用程序。
在一个专门的实施例中,虚拟存储器的操作系统过滤所有从外部接收到的命令并且将它们传送给可编程存储器中装载的应用程序,这些命令都应该由这个程序处理。
在本说明书中,术语“信息”通常指任何可执行程序和不可执行的数据,术语“应用程序”指一个特定的程序以及与这个程序有关的数据,这个特定的程序由服务或产品的提供者在实现一个应用时提供。
总之,根据表1,可编程存储器至少包含三个区:
-第一区称为“系统的数据区”,它包含一个识别卡片的代码“C”;
-第二区称为“管理数据区”,它包含管理这个应用程序的数据,也就是称为“SWAP”的一个专门对应于每个应用程序的特征标志密钥,一个或几个根据需要与应用程序的供应者或特定的应用的情况联系的加密密钥,和一个称为“TAB-APPLI”的表;和
-第三区称为“装载区”,用来接收应用程序的信息,也就是可执行的程序和/或这个程序工作时所必需的数据。开始时,交给持卡者卡片可以有一个装载区和一个空的TAB-APPLI表。在卡片的非易失存储器10的保密区11至少有密钥SWAP。
应用信息装载区 |
管理数据区(SWAP,TAB-APPLI,…) |
系统数据区(代码C,…) |
虚拟存储器操作系统区(ROM) |
基本操作系统区(ROM) |
表1
表TAB-APPLI包含与卡片上可用的应用程序相应的信息,或者这些应用程序实际存在卡片上,或者由于向网上卸载,使这些程序虚拟地存在卡片上。这个表的结构如下:
应用程序代码 |
存储地址 |
八比特组数 |
信息特征标志 |
装载/卸载 |
I |
ADR-I |
l |
SGN-I |
装载 |
J |
ADR-J |
m |
SGN-J |
卸载 |
K |
ADR-K |
n |
SGN-K |
装载 |
表2:TAB-APPLI
表TAB-APPLI的行数和卡片上可用的应用程序数同样多,每行有五栏。第一栏定义这个应用程序的一个识别码I,J,K。第二栏定义一个存储地址ADR-I,ADR-J,ADR-K,应用程序从这个地址开始存储在卡片中。第三栏表示这个应用程序的信息量的八比特组的数量。第四栏定义赋予这个应用程序的所有八比特组的一个特征标志,这个特征标志是用一种算法和卡片的作为密码的密钥SWAP计算的。作为一种算法,可以用一种对称的算法例如D.E.S.(英文Data EncryptionStandard的缩写)或不对称的算法例如R.S.A.(作者为Rivest,Shamir和Adleman);可是为了方便,它只要求满足最简单的功能,例如像MD5或SHA的散列函数或例如像“或非”的函数,因为,在本发明的卡片中,特征标志不离开这个卡片而是保存在卡片中。最后,第五栏确定有关的应用程序是处于卡片上的“装载”状态还是处于“卸载”到一个数据库的状态。
在最初时,卡片的所有者或应用程序的供应者希望在卡片上装载第一个具有识别码“K”的应用程序。可以根据卡片的所有者或应用程序的供应者成功的鉴别来保证定执行一个装载命令。鉴别机制本身是熟知的,包括向卡片的所有者或应用程序的供应者提供带信息的卡片,用这些信息保证与一个授权过的对话者对话。
装载命令包含一个装载命令,卡片的代码C,应用程序的代码K和对应这个应用程序的信息的八比特组的数量n,命令的格式如下:
一旦由卡片接收到一个命令,卡片的操作系统检查传来的代码C和在系统数据区登记的是否一样。如果不是,卡片向网络返回一个出错消息。如果正是,这个应用程序的信息就提供给卡片:卡片的操作系统读出在管理数据区的表TAB-APPLI以确定它是否开始装载。开始时,TAB-APPLI不包含应用程序K的信息,如果不是这种情况,卡片向计卡器作出响应,发消息“应用程序已经装载”,如果是这种情况,它就开始装载。卡片的操作系统确定这n组八比特组能否装进它的存储器中。如果肯定,它就计算在装载区中n个可用的八比特组的第一块的起始地址“ADR-K”。如果不能,它返回一个“存储器不够”的消息。最后,卡片用响应“OK-Chargement(可以装载)”向计卡器指出它可以传送这个应用程序的n个八比特组。于是计卡器传送这个应用程序的n个八比特组。
一旦应用程序的信息存到可编程存储器中,卡片的操作系统计算这些信息的特征标志“SGN-K”。然后在表TAB-APPLI中返回这个应用程序的代码K,存储的地址ADR-K,八比特组数量n,和特征标志SGN-K。一旦执行完这些操作,“装载/卸载”指示器就被置为“装载”。表TAB-APPLI的更新完成后,卡片的操作系统就可以发送一个执行报告,指示这个应用程序的装载已经正确完成。表TAB-APPLI具有以下构造:
应用程序代码 |
存储地址 |
八比特组数 |
信息的特征标志 |
装载/卸载 |
K |
ADR-K |
n |
SGN-K |
装载 |
表3:TAB-APPLI
根据第一个变例,卡片的操作系统在装载后,可以正确地运行包含在这些应用中的信息,也就是在应用程序的信息中的可执行程序。这样就可以初始化应用的信息。例如,在一个电子小钱包的应用情况,执行程序首先把钱包初始化为0法郎(Frs)的余额写入存储器中。根据第二个变例,当计卡器向卡片传送第一个命令后,就立即运行这个可执行程序,并且调用被考虑的应用程序。为了简单起见,应用程序执行的起始地址可以使用一个间接地址:按照在微处理器领域内众所周知的方式指定地址,存储器的内容[ADR-K]包含执行地址。
计卡器向卡片传送的命令规定了应用程序的类型;例如,根据标准ISO 7816-3,命令中五个八比特组开始的一组是类型的代码;这组八比特在所述标准中称为“CLA”。卡片中的虚拟存储器的操作系统检查那些计卡器传送的命令,并且判断应用程序的代码是否与这个命令相符。然后检查表TAB-APPLI看看是否已经写上这个代码;如果已经写上,卡片就可以执行这个应用程序K。否则,卡片就不可以执行这个应用程序K,并且传送一个出错消息作为响应。如果代码K已经写入表TAB-APPLI中,随后就测试“装载/卸载”指示器的值。如果指示器被置为“装载”,这些应用的信息已经在卡片的可编程存储器中装好。在这样情况,卡片的操作系统着手把一个应用的程序安放在地址ADR-K或[ADR-K]中。以后将看到,当卡片的可编程存储器由于已经卸载而不再包含应用的信息时,将发生什么情况。
现在假设卡片的所有者或应用程序的供应者希望它的卡片还包含例如记为“J”的第二个应用程序。这里可以把应用程序“J”的信息装载进卡片的可编程存储器中。和以前一样,在一个密钥之后送入下面的命令,以鉴别卡片的所有者或应用程序的供应者,应用信息装载的命令如下:
这里和以前装载应用程序K时的命令一样;只是这里应用程序的八比特组数是m。
卡片的操作系统检查代码C,并且在可编程存储器中找寻第一块可用的m组八比特组。假如可编程存储器不能物理上同时容纳应用程序J和K的两个应用信息块,但是,如果把应用程序K部分地或全部地卸载,就能容纳应用程序J。卡片就向计卡器传送一个专门的命令,通知计卡器把应用程序J的装载挂起,并且立即决定把应用程序K卸载到数据库中,把数据库看作卡片的虚拟存储器。这样卸载是为装载应用程序J释放存储空间。
卸载包括把这个卡片特有的应用信息,转移到网络的为当前的卡片提供的数据库23到25中的一个。因为在装载时对特征标志进行了计算,在以后再装载中,卡片就可以保证检查这些特定的信息的完整和特征标志。而且实际上在开始装载时对特征标志进行了计算,会优化执行卸载命令的时间。卡片传送给计卡器的命令如下:
向网络卸载的命令 |
卡片C |
应用程序J |
数量n |
信息的n个八比特组 |
这个命令和装载命令一样包含卡片的代码C,被卸载的应用程序的代码K,和应用程序的信息的八比特组的数量n;它还包含在卸载命令的同一时间传送给计卡器的信息的同样n组八比特组的内容。在有些情况,应用程序已经部分地执行,只是部分的要求卸载,以便在被中断地的方再接续应用程序的执行,上下文信息或者存放在卡片的可编程存储器中,或添加到这个应用程序的信息的n个八比特组中并且同时卸载到网络中。
可以采取网络地址的方式来指示目的地识别符。最好是网络有一个对照表,使每个卡片与特别为它提供的数据库的地址相对应。这样就可以避免在卡片上存储上述的地址或上述的识别符,而是在同一个数据库中集中所有从一个卡片卸载的信息。
计卡器收到这个命令,认定这是提供给网络的:就把命令返回到它寻址的数据库。如果网络上有许多数据库,就根据卡片的代码C进行选择。数据库接收应用的信息的n组八比特组,并且通过计卡器向卡片返回一个接收完成的回答,表示已经存储好。然后卡片更新表TAB-APPLI,把装载/卸载指示器置为“卸载”。一直被应用程序K的应用信息所占有的存储空间变为可用。于是可以恢复应用程序J的装载操作,卡片就向计卡器传送一个恢复装载的命令;执行装载的操作与装载K的操作一样。卡片的操作系统确定应用程序J的m组八比特组的存储地址ADR-J并且用一个消息“装载正常(OK-Chargement)”向计卡器指出计卡器可以传送这m组应用信息的八比特组。
计卡器从地址“ADR-J”开始传送这m组应用信息的八比特组。一旦这些应用程序J的信息存入可编程存储器,卡片的操作系统借助密钥SWAP进行一个密码的计算,算出这个应用程序的特征标志。最后,操作系统通过写入代码J,和ADR-J,m,SGN-J的值更新表TAB-APPLI,更新“装载/卸载”指示器,把它置为“装载”。操作系统向计卡器传送一个执行报告,指出已正确进行装载。
因而表TAB-APPLI具有以下的数值:
应用程序代码 |
存储地址 |
八比特组数量 |
数据的特征标志 |
装载/卸载 |
K |
ADR-K |
n |
SGN-K |
卸载 |
J |
ADR-J |
m |
SGN-J |
装载 |
表4:TAB-APPLI
一旦完成表TAB-APPLI的更新,卡片的操作系统就可以像运行应用程序K一样地运行应用程序J,并且卡片执行计卡器传送给它的执行命令。
如果卡片的所有者或应用程序的供应者把他的卡片和一个计卡器连接,并且希望重新执行一次应用程序K,卡片的操作系统分析表TAB-APPLI中的内容,判断这个应用程序能否记录在这个卡片上。现在的情况是,应用程序已记入TAB-APPLI中,但是它是卸载到网络上的。在存储器中的另一个程序是J,它占有m组八比特组。操作系统于是检测在存储器中要占有n组八比特组应用程序K能否装载到这个存储器余下的可用空间。按照以前的假设,这个检测的响应是否定的。于是操作系统决定为重新装载应用程序K而把当前的应用程序J卸载。
由卡片向网络发出的卸载J的命令是:
向网络卸载的命令 |
卡片C |
应用程序J |
八比特组数m |
信息的m组八比特组 |
一旦执行完这个操作,应用程序J的装载指示器在表TAB-APPLI中被置为“卸载”。存储空间保持在可用状态,操作系统向计卡器传送一个从网络再装载应用程序K的命令。这个命令的形式如下:
从网络再装载的命令 |
卡片C |
应用程序J |
八比特组数n |
计卡器接到这个命令,并将它传送给与这个卡片相应的数据库。这个具有卡片C的信息的数据库接收这个命令,就在这个卡片的文件中寻找与应用程序K有关的应用信息的n组八比特组。这个数据库制作如下的信息作为对卡片最后一个命令的响应。这个响应通过计卡器传送给卡片:
卡片C |
应用程序K |
八比特组数n |
数据的n组八比特组 |
卡片的操作系统可以检查收到的代码C,K和n值是否与以前发送的卸载命令中的这些数值符合。如果符合,继续执行命令,接着向装载区写从地址ADR-K开始的n组八比特组数据,这个地址是操作系统从表TAB-APPLI中读出的,或者是从再装载文件的信息中收到的。同时,操作系统用密钥SWAP的值进行一个密码的计算,算出这n组八比特组的特征标志。这个算出的特征标志与写在表TAB-APPLI中的值比较。如果网络上收到的数据与以前卸载时的值不一样,特征标志的这两个数值就不相等。这样收到的信息的完整性和一致性就有疑问。这些装载的信息就不可以执行。卡片向计卡器返回一个出错消息,指出在最后一次装载操作中有错误的一个错误信息,并且指出不可能执行应用程序K;操作系统没有把新装载指示器置为“装载”来更新;在必要的情况,操作系统可以擦除应用程序K的内容。
如果相反,特征标志的两个指示相等的,接收的信息和以前装载在卡片中的应用程序K的信息很好地符合。一旦进行过这些检查,卡片的操作系统把应用程序K的装载指示器更新到“装载”位置。
因而表TAB-APPLI具有以下的数值:
应用程序代码 |
存储地址 |
八比特组数量 |
数据的特征标志 |
装载/卸载 |
K |
ADR-K |
n |
SGN-K |
装载 |
J |
ADR-J |
m |
SGN-J |
卸载 |
表5:TAB-APPLI
一旦完成表TAB-APPLI的更新,卡片的操作系统就可以像以前那样运行应用程序K,并且卡片执行计卡器传送给它的最后的应用类型的命令。
以上说明,当卡片接收装载一个不在当前存储的应用程序的命令时,卡片的操作系统检测存储器中的可用空间。如果这个空间是足够的,不用卸载在存储器中当前的应用程序就可以进行装载。这样在卡片上就有两个应用程序。表TAB-APPLI会有以下的内容:
应用程序代码 |
存储地址 |
八比特组数量 |
数据的特征标志 |
装载/卸载 |
K |
ADR-K |
n |
SGN-K |
装载 |
I |
ADR-I |
l |
SGN-I |
装载 |
J |
ADR-J |
m |
SGN-J |
卸载 |
表6:TAB-APPLI
在这个例中,应用程序I和K共同存在这个卡片,它们是可以直接执行的。第三个应用程序可以通过这个卡片访问,但是他需要从网络上重新装载。这个卡片的非易失存储器包含如下信息:
ADR-K应用K的程序应用K的数据 |
ADR-I应用I的程序应用I的数据 |
可用区 |
管理数据区(SWAP密钥TAB-APPLI…) |
系统数据区(代码C…) |
虚拟存储器操作系统区(ROM) |
基础操作系统区(ROM) |
表7
这个表相当于以前的表1,这里的装载区划分如下:可以看到应用信息的装载区包含三个子区:一个区容纳应用程序K的信息,一个区容纳应用程序I的信息,一个规模小于m的区仍然是可用的。
依照这个例子,可以更好地了解本发明的特点。这个卡片配备的操作系统至少可以管理存储器的空间,装载或卸载应用程序,标出向网络卸载的应用程序的信息,检测卸载的应用程序信息,和通过比较这些特征标志检测向网上卸载和从网上接收的信息,和运行装载在存储器中的应用程序。特征标志允许检测存放在数据库中的应用的信息是否就是原来装载在这个卡片中的信息。计卡器配备一段程序,这段程序辨认卡片的装载和卸载命令,还配备向网络传送上述命令的装置。最后网络配备一些数据库,这些数据库的存储器可以被看作是卡片的可编程存储器的扩展。
如在本文开始时所说,为了改变ROM中的程序的功能,编写可编程存储器中的例行程序,只能由熟识这个程序的人进行。向这些例程跳转和从这些例程返回ROM中的程序必需预先知道它的地址,这些例程的输入和输出的参数,以及工作存储器的使用……等等。本发明避免使用这些例程从而解决了这个问题,允许运行许多应用程序,因而揭示了这些例程的特征。尽可能少用ROM中的程序来执行这些应用程序。这个程序的设计者可以为某些所谓基本例程指出入口点:接收八比特组,发送八比特组,向可编程存储器写入八比特组,保密的计算…等等。
本发明的第一点改进在于把这些应用的信息加密,当这些信息在接收这些应用程序的信息处理设备(例如图1种的卡片21或终端22)和网络之间传送时和存储在卡片21或终端22的外面时,保护这些信息。
应用程序的第一个加密方法涉及由一个应用程序供应者进行应用程序的初始装载,和使用一个基础的保密密钥,这个密钥由信息处理设备中和网络中的应用程序的供应者保存;当信息处理设备是一个卡片的情况,它的计卡器不知道基础的密钥。最好是每个应用程序用各式专门的密钥加密,专门的密钥加密是从这个基础的密钥和应用程序的一个特定的参数得到的,这些参数是例如,它的代码K或它在可编程存储器中的存储地址ADR-K。这些密钥可以存放在表TAB-APPLI中,因而当命令装载/卸载时,操作系统可以方便的找到这些密钥。
当应用程序的供应者向信息处理设备21或22初次装载应用程序时,这位供应者计算与这个应用程序相应的专门的密钥,在应用程序发送给网络之前,用这个密钥把应用程序加密;接收时,信息处理设备计算与这个应用程序相应的专门的密钥,在应用程序存入可编程存储器的装载区之前,用这个密钥把应用程序解密。
应用程序的第二个加密方法涉及由信息处理设备21,22进行卸装和重新装载。由信息处理设备21,22向一个数据库卸装应用程序时,应用程序由这个设备重新加密。除了应用程序的供应者之外,不论信息处理设备产生的密钥合用,所用的密钥不能由这个信息处理设备与任何其他的对话者分离,因为这个设备,也只是这个设备来进行以后的解密。
最好是卡片可以利用说明书US-A-4.907.270中所述的过程,说明书目的是为了提供保证加密信息的鉴别和完整。
这个说明书所述的加密方法可以避免应用的信息被黑客发现,并且防止这个应用程序的非法复制。
在以前所说明的命令之外,还可以提供两条补充的命令:一条擦除应用程序的命令,和一条检查在卡片上的应用程序的命令。
擦除应用程序的命令是为卡片的所有者或应用程序的供应者提供向卡片传送的一条要求撤销已经不再使用的应用程序的命令,其形式如下:
擦除应用程序的命令 |
卡片C |
应用程序K |
八比特组数量n |
它包含一个擦除应用程序的命令,有关的卡片的代码C,应用程序的代码K,可能还有应用的信息的八比特组n。如果有关的程序是装载在卡片上的,卡片的操作系统释放一直为应用程序K保留的可用的存储器空间。如果相反,应用程序是卸载到一个数据库的,卡片向这个数据库发送一个和以上的格式同样的擦除命令。最后,一旦执行这个擦除命令,操作系统擦除表TAB-APPLI中有关这个应用程序的行。
检测卡片中应用程序的存在的命令可以采取两种不同的形式。命令的第一种形式允许卡片的所有者或应用程序的供应者向卡片询问卡片上是否有一个特定的应用程序;它的形式如下:
检测应用程序存在的命令 |
卡片C |
应用程序K |
八比特组数量n |
命令的第二种形式允许卡片的所有者或应用程序的供应者向卡片询问卡片上的表TAB-APPLI的全部行,显然不包括特征标志和可能的八比特组数量n及装载指示器。这个命令的形式如下:
本发明第二点改进是只有在必要的时候才启动向网络卸载应用程序。如果,在需要释放存储器时,装载的应用程序不变,并且如果网络已经有这个应用程序的同样的应用信息,就不再卸载这些信息。这点改进的目的是避免向网络上多次存储同样的应用信息的数值。
为了进行这样的改进,需要改变表TAB-APPLI,它的新的构造是:
应用程序代码 |
存储地址 |
八比特组数量 |
信息的特征标志 |
装载/卸载 |
修改 |
K |
ADR-K |
n |
SGN-K |
装载/卸载 |
是/否 |
表中增加了第六栏,其中包含一个记为“修改”的指示器,可以取两个值:是或否。当初始装载一个应用程序时,这个指示器被置为“是”:它表示为了释放相应的存储空间,需要向网络卸载这些应用的信息。反之,在一个从网络重新装载的命令之后,这个指示器就被置为“否”,它表示存储在信息处理设备(图1中的卡片21或终端22)的可编程存储器中的这些应用的信息和存储在网络上的数据库中的一样。由于这个指示器保持为“否”,信息处理设备的操作系统就不执行卸载这个应用程序的命令;它只是把装载指示器置为“卸载”,并允许其他的应用程序占用存储器中这个应用程序的位置。当这些应用的信息被修改时,这个指示器被置为“是”;因而,特征标志的值已经不再正确:应当在卸载时重新计算。
这样的修改至少在两种情况中出现。第一种情况是更新应用的程序,或者为了提供更好的性能而增加补充的功能,或者是为了修改一个错误。第二种情况是,在信息处理设备21或22的可编程存储器中,数据和应用的程序混合在一起而经常出现的情况。例如,一个电子钱包的应用程序同时包含管理借方和贷方的程序,而且还有这余额的数据。在每次应用时,这些数据通常会改变,“修改”指示器几乎总是置在“是”的位置。
最后一个例子给出本发明的第三个改进。可以看到在应用的信息中经常同时存在可执行的程序和可能改变的应用数据的值。下面说明在第三个改进中叙述的方法允许把这两类信息很好地分开。信息处理设备于是选择仅仅向网络卸载那些正真修改过的信息。
为了实现第三个改进,改变非易失存储器的构造是适宜的,它可以按照以下的方案:
应用的程序(可编程存储器) | |
序列1演变的数据 |
序列2演变的数据 |
|
应用的数据 |
在可编程存储器中的管理数据区(SWAP,TAB-APPLI…) |
可编程存储器中的系统数据区(代码C) |
虚拟存储器操作系统区(ROM) |
表9
表9和以前的表1的构造不同在于它的可编程存储器的装载区如下:
-一个与所示应用程序有关的块,包含以下两个子信息块:
-一个与应用的可执行程序有关的块,标为“应用的程序”;
-一个与这个应用程序有关的变化的数据(不可执行的)有关的块,标为“应用的数据”;
-一定数量的演变的数据(不可执行的)块,对应于可执行程序的一些特定的执行:这些执行在以后称为“序列”。按照定义,一个序列的数据是临时的,也就是说它只能用在这个序列中,而不能用在前面或后面的序列中。这一点和以前所述的 “应用的数据”有区别,应用的数据是可以用在所有的序列中的。在表9中有两块序列的数据,标为“演变的数据序列1”和“演变的数据序列2”。这些不同的信息块的作用在以后用例子说明。
为了实现第三个改进,表TAB-APPLI改编成如下的构造:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列的变化的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
p-cod |
SGN-cod-P |
装载 |
ADR-Dat-P/1 |
p-dat |
SGN-dat-P/1 |
装载 |
P/2 |
ADR-Cod-P |
p-cod |
SGN-cod-P |
装载 |
ADR-Dat-P/2 |
p-dat |
SGN-dat-P/2 |
装载 |
J/1 |
ADR-Cod-J |
j-cod |
SGN-cod-J |
装载 |
ADR-Dat-J/1 |
j-dat |
SGN-dat-J/1 |
装载 |
J/2 |
ADR-Cod-J |
j-cod |
SGN-cod-J |
装载 |
ADR-Dat-J/2 |
j-dat |
SGN-dat-J/2 |
卸载 |
表10:TAB-APPLI
与以前的表2 TAB-APPLI比较,这个表有以下不同。第一栏除了说明应用程序的代码以外,还有有关的序列的号码“i”。这些信息分成两组处理:那些与可执行程序有关的和与应用的数据有关的信息,以及那些与序列的演变数据有关的信息。每组信息可看到表2 TAB-APPLI中如下的四栏:存储地址,八比特组数量,特征标志,装载指示器。表中每行相应于给定的序列P/1或P/2,这两个都与一个应用程序P有关,或者相应于给定的序列J/1或J/2,这两个都与另一个应用程序J有关。在表中不同的情况举出应用程序的代码,是为了提醒所考虑的数值是与一个给定的应用程序有关;例如:
●ADR-Cod-P:与应用程序P有关的存储地址
●i-cod:与应用程序J有关的八比特组数量
此外,符号“Cod”表示所考虑的数值是与一个“应用程序”类的信息有关(第一组的程序或数据),而“Dat”表示所考虑的数值是与一个“序列”类的信息有关(第二组的程序或数据);例如:
●SGN-cod-P:与应用程序P有关的信息(程序或数据)的特征标志
●SGN-dat-J/2:与应用程序J的No2序列有关的数据的特征标志
一个例子将会较好的说明所遇到的问题和用本发明解决这个问题的方法。
信息处理设备(在这个情况是卡片21)接收一个初始装载应用程序P的命令:电子钱包(PME)类的支付应用。存储在可编程存储器中的应用的信息是可执行程序和有关这个应用的数据;并没有相应于一个序列的演变的数据。这些数据包含从一个地址ADR-Cod-P开始存放的n-Cod组八比特组。装载指示器置位于“装载”。除了与可执行程序和与这个应用的数据有关的信息外,在命令中还传送的信息包含与一个序列I有关的演变的数据的八比特组数量“p-dat”。表TAB-APPLI于是就有如下的数值:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列的变化的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
p-cod |
SGN-cod-P |
装载 |
0 |
p-dat |
0 |
0 |
表11:TAB-APPLI
这些交易是通过一个称为保安模块的电子电路生效的。这个模块可以或者安装在图1中的卡片的终端计卡器内,或者如果要求更加安全,安装在远离终端20的一个准许的银行中心。一个PME类的交易要经过许多步骤开展,需要在卡片,终端和保安模块之间进行通信。购买可以在装有模块的终端的商店进行,也可以在终端没有模块的卡片所有者的家中进行。
用卡片进行购买的方法是发出一个交易命令。卡片的操作系统识别应用类型的命令;就查询它的表TAB-APPLI。查表地结果指出相应与这个命令的应用程序实际上是装载了,并且还没有被分配到序列。操作系统于是就初始化一个序列,分配给它一个号码,比方说“1”。系统分配给这个序列一个从地址ADR-P/1开始的n-dat“八比特组的存储空间。对应这个序列的装载指示器被置为“装载”。于是表TAB-APPLI具有以下的数值:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列的演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p/10 |
n-dat |
0 |
装载 |
表12:TAB-APPLI
随后,卡片的操作系统执行向地址ADR-Cod-P的跳跃来启动应用程序;它指定临时的数据的使用地址ADR-D-P/1,使应用程序知道序列的数据存储在什么地方。这些数据首先包含交易的数量,交易的物品,交易的销售组织和数据。另一方面,例如电子钱包的余额这样的数据不是临时的序列数据,因为它的寿命超过一个序列的寿命;是属于应用的类型,这个数据和应用的程序存放在一起。
按顺序购买第一种产品;为了从一个可通过网络访问的支付中心得到交易有效,卡片向计卡器20发送一个消息。这个联络会持续一段时间。实际上,这些联络可能受到干扰,准许地银行中心需要一段长时间来分析送来的数据。这样就增加了交易的全部时间。此时,用户决定要进行第二笔购物。本发明可以在不必等待第一笔交易结束而开始第二笔交易。
为进行第二笔交易,卡片第二次使用启动一个新的交易的命令。和以前一样,卡片的操作系统检查电子钱包应用的可执行程序是否存在可编程存储器中。这样的检查是由查询它的表TAB-APPLI进行的;操作系统由此识别出已经存在程序和一个建立的序列(1)。因此系统将一个新的序列号码(2)分配给第二次执行,并且在表TAB-APPLI中增加新的一行而使这个表初始化。然后,系统检查在可编程存储器中是否有足够的空间可以把n-dat个八比特组分配给不可执行数据类型的信息。如果有足够的空间,就决定一个新的地址ADR-Dat-P/2,并且开始进行第二笔交易。表TAB-APPLI有如下的数值。
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列的演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p/10 |
n-dat |
0 |
装载 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p/20 |
n-dat |
0 |
装载 |
表13:TAB-APPLI
这两次交易在卡片上并行地进行而不用通过网络。计卡器要在送到卡片的应用的命令中指出那一个交易是和那一条命令有关的。
如果没有足够的空间,卡片的操作系统决定只卸载那些对应于第一笔交易的变化的数据(序列号码1)。然后系统计算第一个序列“SGN-dat-P/1”的这些数据的特征标志,并且把它写入表TAB-APPLI中。新的不可执行数据于是就放在已卸载的数据的位置中,也就是标记为ADR-Dat-P的对两个序列共同的地址。然后卡片向计卡器发送如下的命令:
向网络卸载的命令 |
卡片C |
应用程序-数据-序列号1 |
八比特组数n-dat |
数据的“n-dat”组八比特组 |
这条命令和以前提到的命令的构造一样,不同之处是:第三项的参数不仅说明应用程序的代码P,还(通过“数据”项)说明数据是序列类型和当前的序列号码1。
这个命令使表TAB-APPLI具有以下数值:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p0 |
n-dat |
SGN-dat-p1 |
卸载 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p0 |
n-dat |
0 |
装载 |
表14:TAB-APPLI
这个操作的结果,使具有序列号码2的第二笔交易可以继续。这笔新的交易也需要支付中心使之有效;因此要向保密模块发送一个请求。假定现在卡片收到一个使第一笔交易有效的消息。卡片的操作系统由序列号码识别这个消息是与一笔并非当前的交易有关的,并且由阅读表TAB-APPLI而识别这个消息与第一笔交易有关。为了处理第一笔交易,需要装载第一笔交易的不可执行的数据。
如果没有足够的存储空间同时安排两块数据块,卡片的操作系统必需因此卸载第二笔交易的数据。于是系统就计算这个数据的特征标志“SGN-dat-P/2”并且把它写入表TAB-APPLI中。然后卡片向计卡器发送以下的命令:
向网络卸载的命令 |
卡片C |
应用程序-数据-序列号2 |
八比特组数n-dat |
数据的“n-dat”组八比特组 |
于是表TAB-APPLI具有以下数值:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列的演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p |
n-dat |
SGN-dat-P/1 |
卸载 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p |
n-dat |
SGN-dat-P/2 |
卸载 |
表15:TAB-APPLI
然后卡片的操作系统向计卡器发送以下的命令:
从网络再装载的命令 |
卡片C |
应用程序-数据-序列号1 |
八比特组数n-dat |
这条命令和以前提到的再装载命令不同之处是:第三项的参数不仅说明应用程序的代码P,还(通过“数据”项)说明数据是序列类型和有关的序列号码1。
计卡器收到这个命令并且把它发送到专门分配给卡片C的数据库。数据库在这个卡片的文件中找到有关应用程序P,序列1的n-dat个八比特组不可执行的数据。数据库产生以下的消息作为卡片的最近的命令的响应;这个响应通过计卡器传送给卡片:
卡片C |
应用程序-数据-序列号1 |
n-dat |
数据的n-dat八比特组 |
这个消息和以前提到的给再装载命令的响应不同之处是:第二项的参数不仅说明应用程序的代码P,还(通过“数据”项)说明数据是序列类型和当前涉及的序列号码1。
卡片的操作系统可以进行一个初步的操作,检查收到的代码C,P,序列号码和n-dat的值是否和以前命令传送来的一样。如果一样,就把收到的八比特组从地址ADR-dat-P开始存放,这个地址是由表TAB-APPLI读出的。一旦写完最后一个八比特组,操作系统用密钥SWAP的值按照一种保密的计算法计算数据的特征标志。这个新计算的特征标志和写在表TAB-APPLI中的“SGN-dat-P/1”的值比较。如果两个特征标志的值不相等,就认为从网络收到的数据和以前卸载的不一致。于是对收到的数据的鉴别和完整有怀疑。卡片相计卡器返回一个出错消息,指出在最近一次装载操作中收到错误的数据,因而不能继续进行这笔交易。
如果这两个值相等,就认为收到的数据和以前由卡片卸载的一样:因而可以继续进行第一笔交易。卡片的操作系统于是更改表TAB-APPLI,把应用程序P/1的数据的指示器设置为“装载”。
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p |
n-dat |
SGN-dat-P/1 |
装载 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p |
n-dat |
SGN-dat-P/2 |
卸载 |
表16:TAB-APPLI
完成表TAB-APPLI的更改后,操作系统执行应用程序P,继续进行第一笔交易。
完成第一笔交易后,应用的程序在执行结束时返回管理虚拟存储器的操作系统。操作系统识别出序列“1”的终结,决定释放对应于这个序列的数据的存储空间。因此系统把信息“存储地址”,“特征标志”和装载/卸载指示器都设置为零,从而擦除了这些信息。
于是表TAB-APPLI具有以下的值:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列演变的数据有关的信息 |
|
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
0 |
n-dat |
0 |
0 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p |
n-dat |
SGN-dat-P/2 |
卸载 |
表17:TAB-APPLI
当卡片收到第二笔交易生效的消息,卡片的操作系统根据序列号码是别处这个消息是与另一个没有装载的交易有关的。第一笔交易已经完成,相应的不可执行的数据已经不再用。没有必要卸载这些数据。这就足以装载相应于第二笔交易的不可执行的数据。操作系统向计卡器发送以下命令:
从网络再装载的命令 |
卡片C |
应用程序P-数据-序列号2 |
八比特组数n-dat |
和装载序列1一样,计卡器收到这个命令并且把它发送到数据库。数据库在这个卡片的文件中找到有关应用程序P,序列2的n-dat个八比特组不可执行的数据。数据库产生以下的消息,通过计卡器传送给卡片:
卡片C |
应用程序J-数据-序列号2 |
n-dat |
数据的n-dat八比特组 |
卡片的操作系统可以进行一个初步的操作,检查收到的代码C,P,序列号码,和n-dat的值。如果检查的结果是正确的,就把这些八比特组写入。然后操作系统计算并且检查数据的特征标志。如果这两个值相等,就认为收到的数据和以前由卡片卸载的一样:因而可以继续进行第二笔交易。卡片的操作系统于是更改表TAB-APPLI,把应用程序P/2的数据的指示器设置为“装载”。
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
0 |
n-dat |
0 |
0 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
ADR-Dat-p |
n-dat |
SGN-dat-P/2 |
装载 |
表18:TAB-APPLI
完成表TAB-APPLI的更改后,操作系统执行应用程序P,继续进行第二笔交易。
完成第二笔交易后,应用的程序由一个返回指令结束,返回管理虚拟存储器的操作系统。操作系统推断出序列“2”已经结束,可以释放存储空间。因此把表TAB-APPLI中“存储地址”,“特征标志”和装载/卸载指示器的存储位置都设置为零。表TAB-APPLI取以下的值:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
P/1 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
0 |
n-dat |
0 |
0 |
P/2 |
ADR-Cod-P |
n-cod |
SGN-cod-P |
装载 |
0 |
n-dat |
0 |
0 |
表19:TAB-APPLI
在这一步,卡片的操作系统可以完全擦去表TAB-APPLI中的一行。因而表TAB-APPLI中的行可以根据需要进行动态的管理。
另外,管理这个表的静态方法是为一个应用程序一次地决定全部可执行的序列的最大数量;假设这个数是“s”。于是“s”在初始装载应用程序命令时就被传送;操作系统在表TAB-APPLI中保留对应于这些“s”序列的空间。比方假定s为2。
装载应用程序K的命令具有以下的值:
装载命令 |
卡片C |
应用程序K |
八比特组数量n |
s=2 |
n-cod |
n-dat | |
这条命令和以前叙述地不同之处在于它包含第五栏,它确定参数s的值。需要指出在这种情况,该命令说明八比特组数量n-cod涉及应用程序,并且由命令发送,而八比特组数量n-dat则涉及每个将来的每个序列,并且为此使用保留。在一个变例中,八比特组数量n-dat在这个步骤里可以不传送,而是后来由装载入这个卡片的应用程序提供给卡片。
作为这条命令的结果,操作系统用以下的值把表TAB-APPLI更新。
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列的演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
K/1 |
ADR-Cod-K |
n-cod |
SGN-cod-K |
装载 |
0 |
n-dat |
0 |
0 |
K/2 |
ADR-Cod-K |
n-cod |
SGN-cod-K |
装载 |
0 |
n-dat |
0 |
0 |
表20:TAB-APPLI
现在可以运行应用程序K:允许有两个序列。
卡片在当前可以有许多完整的应用程序,每个应用程序备有若干序列。例如这里是一个表TAB-APPLI的特定的构造:
应用程序的代码/序列号码 |
与可执行程序和应用的数据有关的信息 |
与标为“i”的序列演变的数据有关的信息 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
存储地址 |
八比特组数量 |
特征标志 |
装载/卸载 |
K/1 |
ADR-Cod-K |
k-cod |
SGN-cod-K |
卸载 |
0 |
k-dat |
0 |
0 |
K/2 |
ADR-Cod-K |
k-cod |
SGN-cod-K |
卸载 |
ADR-Dat-K/2 |
k-dat |
SNG-dat-K/2 |
卸载 |
K/3 |
ADR-Cod-K |
k-cod |
SGN-cod-K |
卸载 |
ADR-Dat-K/3 |
k-dat |
SNG-dat-K/3 |
装载 |
J/1 |
ADR-Cod-J |
j-cod |
SGN-cod-J |
装载 |
ADR-Dat-J/1 |
j-dat |
SNG-dat-J/1 |
装载 |
J/2 |
ADR-Cod-J |
j-cod |
SGN-cod-J |
装载 |
ADR-Dat-J/2 |
j-dat |
SNG-dat-J/2 |
卸载 |
表21:TAB-APPLI
对应这个例子,当前卡片由两个应用程序,记为K和J。应用程序K的可执行程序不在装载区中;这个应用程序由三个序列,记为1,2和3,可以同时执行。第一个序列已经完成,另外两个正在执行。第二个序列已经卸载;因此为了完成第二个序列需要重新装载。同样,为了完成序列2和3,需要再装载应用程序K的和执行程序和数据。
应用程序J的可执行程序不在装载区中;这个应用程序可以同时执行两个序列,记为1,和2,都是正在执行中。序列2是卸载的,为了完成序列2需要重新装载。
这个例子说明可用的存储空间需要专门的管理。装载区应当尽可能被占用,因而尽量避免卸载和重装载命令。
显然,在卸装时在标记之处还把数据加密,在装载/重装载时把数据解密,这些改进可以用在第三个改进。
一个改进初始装载一个应用程序的过程,包括向卡片输入一个应用的信息的特征标志,这个特征标志是由应用程序供应者提供的密钥计算出来的。这个密钥可以保证应用的信息的完整和这些应用的数据来源的鉴别。
根据这样改进的初始装载,包含把卡片送到应用程序供应者那里。建议进行这样的操作是以应用程序供应者为前提的。应用程序的供应者向卡片输入他的供应者密钥,应用信息的特征标志,和应用程序代码,比如是K。卡片的所有者发送一个初始装载应用程序K的请求,这个请求上以前已经说明,可以在家中进行。在文件FR-A-2.748.134中叙述以一种安全的途径进行应用程序的初始装载的方法。
根据本发明的实施例的一个变例,存储在卡片中的应用程序,没有通过网络卸载到远处的一个数据库中;而是由图2中的计卡器20接收并且存储这些应用程序;为了这样,它有一个非易失可编程存储器,把应用程序存入其中。装载和卸载的命令不变。当卡片经常插入同一个计卡器的情况,例如计卡器就装在卡片所有者的家中时,这个变例是方便的。
本发明的实施例的另一个变例使用图4种的计卡器40和芯片卡41,其中和图2相同的部件由同样的标号。卡片41和图2种的21不同之处在于它有一道个光学条纹42,比如是用激光纪录和阅读的条纹。卡片计卡器40和计卡器20不同之处在于它包含一个连接到微处理器2和存储器3,4的光学条纹计卡器,可以在光学条纹42上记录和阅读信息。
根据本发明,光学条纹42作为数据库使用,代替图1的23到25在远处数据库。实际上,从卡片41卸载一个应用程序时,卡片向卡计卡器40发送卸载命令。条纹计卡器接收这个应用程序的信息并且把它纪录在光学条纹42上。当重新装载命令时,卡片计卡器激发条纹计卡器43,使它阅读在光学条纹42上面的应用程序的信息;卡片计卡器于是把这些信息传送给卡片的微处理器9,使微处理器把信息存入它的装载区中。然而装载和卸载命令是不变的。
在一个变例中,光学条纹用另一种固体存储介质代替,比如是磁性条纹。
在以上作为例子的一些实施例中,叙述了从一个信息处理设备向它的外部的设备卸载应用程序;在图2的情况,卡片21执行向图1的计卡器20或数据库23-25卸载;在图4的情况,微处理器9和它的存储器10,14组成的信息处理设备执行向光学条纹42卸载。根据本发明的实施例的另一个变例,一个信息处理设备执行在这个设备的若干个存储器之间的卸载。例如,这个信息处理设备是由图2的卡片21组成,微处理器9从它的RAM卸载一个应用程序到它的非易失存储器10中。
例如一些应用程序K,J存储在非易失存储器10中。首先运行应用程序K。这时,与应用程序K有关的工作信息Itk在RAM中被处理,而应用程序K仍然在非易失存储器10中。这个工作信息特别是包含:
-参与计算的临时的工作变量;
-前后关系变量,它允许卡片依次恢复一个应用程序被终端的运行;
- 子程序。
在一个给定的时刻,卡片必需运行另一个应用程序J和为了这样,还必需把工作信息Itj装载进RAM中。如果卡片判断在RAM中没有足够的可用空间来接收工作信息Itj,就决定停止运行应用程序K,并且把应用程序K的工作信息Itk卸载到它的非易失存储器10中。于是它运行应用程序J,先把与应用程序J有关的工作信息Itj卸载到它的RAM中。在运行应用程序J之后,卡片在运行应用程序K是被中断的点恢复运行,把应用程序K的工作信息Itk再装载进RAM中。
在本发明最后的这个变例中,不用装载和卸载命令,因为所讨论的信息处理设备没有说有一个外部的设备对它的存储器进行装载和卸载操作。它也有一个表TAB-APPLI,但是它比以前的表2简单;消除了参数“信息的特征标志”。实际上,因为信息没有离开这个信息处理设备,在卸载时没有被改变的危险。
在上面,专门说明卡片决定卸载一组信息,是卡片收到一个要装载另一组信息的命令的结果。然而需要指出,本发明也包括卡片收到的命令并非是要装载另一组信息的情况。例如,要求卡片执行一个特别的过程,这个过程需要的存储空间大于卡片中的存储器当前的可用空间;这个过程可能是,首先,一个保密的计算。在这种情况,为了能够运行这个操作,卡片会决定卸载一组信息。另一个例子是卡片收到的命令是运行一个应用程序K的命令,而这个应用程序K是以前已经从卡片上卸载了。为了运行这个应用程序,卡片必需重新装载它;如果没有足够的存储空间来装载,卡片就会决定卸载另一个应用程序J,然后进行应用程序K的重新装载。