从删除的应用软件中回收存储器的制作方法

文档序号:6484994阅读:232来源:国知局
专利名称:从删除的应用软件中回收存储器的制作方法
技术领域
本发明所涉及的是采用分段存储空间的计算机系统(诸如嵌入设备之类)内的存储器管理领域,具体地说,本发明提供了一种安全回收存储器和将其余应用软件在非易失可擦写“闪速(flash)”存储器内重新连续排列的系统。
背景技术
本申请对具有存储器限制的嵌入系统特别有用,但是也适用于任何可以从机器中删除一些应用软件而希望紧凑地将其余应用软件存储在存储器内以便为新的应用软件提供最大的连续可用空间的环境。
在嵌入系统中,系统存储器总共可能有1至4兆字节左右。理论上,一半的系统存储器应该是只读存储器(ROM),用来存储在各会话之间保持的应用软件和数据。应用软件可以相继连续装入,直到达到系统的存储器限制。
本发明将参照闪速型存储器进行说明。在技术上,闪存是一种非易失ROM,但是它是可擦的,按照当前技术,通常分成一系列64K字节的块。
特别是在迅速发展的无线通信领域中,可能需要或希望在下载一个新的应用软件前删除设备中现有的一些应用软件,以便释放出足够的存储器来容纳新的应用软件或避免与一个应用软件的新版本不兼容的问题。
发明概述本发明针对的是一种可以从ROM中安全删除应用软件、然后压缩ROM以消灭删除应用软件后留下的任何“空洞”的系统。这样就保证可以得到最大的连续自由存储器,供下载的新应用软件使用。
在一个实施例中,本发明对设备的非易失性存储器作了改进。这种闪速存储器的特征是具有多个存储段,用来接收和存储应用软件代码和数据。优选情况下,至少有一个存储段保留在存储器压缩期间使用,这个存储段用来接收从只读存储器的另一个存储段拷贝的代码和/或数据。还提供了校正代码内的指针的机制,用来定位从只读存储器的另一个存储段拷贝的代码和/或数据的新的存储位置。
按照另一个方面,本发明提供了一种从一个具有多个存储段且至少一个保留在压缩期间使用的只读存储器中删除一个所规定的代码本体的方法。在这种方法中,如果确定所规定的代码本体存储在一个与其他代码共享的存储段内,就将其他代码拷贝入一个保留在压缩期间使用的存储段内,再将保留给压缩的存储段和与其他代码共享的存储段交换,然后删除含有部分所规定的代码本体的存储段。
附图简要说明

图1包括图1A至1D,示意性地例示按照本发明,在一个存储器受限制的设备的只读存储器(ROM)内删除和压缩代码的情况;图2为例示按照本发明进行代码删除的步骤的流程图;以及图3为例示按照本发明的一个优选实施例,在代码删除之后进行存储器压缩的步骤的流程图。
优选实施例的详细说明如图1(包括图1A至1D)所示,在一个存储器有限制的设备(例如蜂窝电话机)内的ROM 2通常可以包括32个64K存储段块,这些存储段块统标为4,在设备内总共有2兆字节的闪速存储器。
在本发明的这个优选实施例中,这些应用软件在ROM中从低端存储器到高端存储器分配。
如图1A和1B所示,一个以交叉阴影线示出的应用软件6横跨了ROM 2内两个半存储段块4,而一个邻近存储的应用软件的代码或数据8(以斜线示出)与应用软件6的第一部分共享一个存储段。
如上所述,在这些设备所用的闪速存储器内只可以删除整个存储块。因此,如果用户想要删除在6的应用软件,设备的存储器管理器必须先保存邻近存储的应用软件的代码或数据8,然后再将它恢复到这个位置。
具体实现方法是保留一个或多个备用存储块,供换出需保留在设备内的所存储的代码或数据使用。在这个优选实施例中,“闪速”存储器的管理器只是保留最高的块供压缩过程使用。在图1所示的例子中,存储器管理器将代码或数据8向上拷贝入一个备用块10(图1B)内。只从要删除的块中拷贝代码/数据,于是备用块的顶部就成为空的。然后,将含有所拷贝的代码10的备用块与在12的原存储块“交换(swap)”(图1C),这样就可以安全地删除含有应用软件6的剩余代码/数据的存储块(图1D)。这种交换可以用以下两种方式之一执行如果有一个支持“虚拟”存储区的存储器管理单元(MMU)可用,就将MMU映射改变成使“新的”块使用要删除的块先前用的地址。删除了要删除的块后,将它的存储器映射改变成备用块先前用的地址。如果没有MMU可用,就将“备用”决的内容拷贝到擦除后原来的块的顶部。
图2这个流程图示出了这个过程的步骤。在用户希望从存储器删除一个应用软件时,设备的存储器管理器确定这个应用软件在ROM内的开始点和结束点的位置(方框20),再确定这两个点是否均处在一个存储段的边界上(方框22,24)。如果是这样,存储器管理器就可以安全地只是擦除含有这个应用软件的所有存储段块(方框28),并转到图3所示的压缩过程。
继续看图2,如果存储器管理器确定应用软件的一个端点在一个存储段块内(方框22或24),然后确定应用软件是否在这点与其他代码共享这个存储段块(方框26)。“闪存管理器”一直掌握每个应用软件的开始点和结束点的地址,也知道每个存储块的地址,因此只要进行简单的计算就可以确定这个应用软件/数据相对这些存储块和其他应用软件的开始点/结束点的驻留情况。
如果没有其他应用软件代码/数据,就可以安全地删除原来的应用软件(方框28),然后转到压缩ROM的过程。
如果存储器管理器确定有另一个应用软件的数据或代码与需删除的原应用软件的一部分存储在同一个块内(方框26),就将此代码或数据拷贝入一个备用存储段块内(方框28),而不带任何原应用软件代码(即备用存储段块部分是空白的)。
以设备即使在一个存储器删除/压缩操作过程中停电也可以恢复的方式进行向备用存储段块的拷贝。在这个优选实施例中,用一些标志和标记指示应用软件在装载、删除和压缩操作期间的状态(方框30)。
然后,将在备用存储段块内的其他应用软件的代码/数据交换回需删除的原应用软件的底部(方框34)。将所添加的指示正在进行转移的标志和标记复位(方框36)后,擦除那些含有原应用软件的剩余部分的存储段块(方框38)。
删除了这个应用软件后,它的存储器必须通过将在它上面的那些应用软件向下压缩或“滑动”入这个腾空的空间来收回。这样就在ROM的顶部留下最大的连续自由空间,可以供装载新的应用软件使用。
按照本发明的一个优选实施例,压缩过程遵循与删除一个应用软件相同的原理,也就是说,用备用存储段块转移部分填充存储段块的内容,这个过程例示于图3。
一旦卸载了应用软件,就应该压缩存储器,以便消除任何“空洞”。这可以提供最大的连续自由存储器,供下载新的应用软件使用。图3例示了一种利用本发明的原理执行压缩的优选方法。
应用软件卸载后,存储器管理器对存储器进行扫描,确定在由于卸载应用软件而释放的存储块上面是否有任何填有数据或代码的存储块,也就是说,确定由于卸载应用软件在录写存储器内是否留下一个腾空的“空洞”(方框40)。如果没有,就说明卸载的应用软件是在录写存储器的顶部,因此不需要压缩。
如果在释放的存储器上面有录写的数据/代码,存储器管理器就确定部分或整个腾空的存储块是否处在释放的存储器的底部(方框42)。
如果释放存储器是一些完整的存储块,执行压缩只是依次将数据块向下拷贝到下一个腾空的存储块(方框44),并且为每个数据或代码块的新位置调整标志/标记(方框46)。
如果只有部分存储器可用,存储器管理器从数据块拷贝数据/代码,填充部分存储块(方框48),并且为所拷贝的代码调整标志/标记(方框50)。
以与上面对图2所述相同的方式,将数据块的其余数据/代码拷贝到一个备用存储块(方框52),并且为这代码/数据的位置调整标志/标记(方框54)。将这个备用存储块交换到与已经压缩的数据邻近的自由存储器(方框56),并且调整所交换的块内数据/代码的标志/标记(方框58)。
这个过程以递归方式执行,直到所有数据都得到压缩(方框40)。
虽然本发明结合一些优选实施例进行说明,但是可以理解,通过所属技术领域的专业人员众所周知的修改,本发明也适用于其他平台和存储器配置。
概括地说,本发明揭示了一种从只读存储器中删除代码(应用软件和数据)和由于删除了一个应用软件或者在没有足够的空间保存一个新的应用软件时压缩存储器内其余代码的方法。有一个或多个“备用存储段”保留在压缩期间使用。如果要删除的代码与其他不要删除的代码共享一个存储段,就将其他代码拷贝到一个备用存储段,再交换回它的原来位置。然后可以压缩代码,消除由于擦除代码而留下的“空洞”。
权利要求
1.一种在一个计算环境内具有多个用来接收和存储应用软件代码和数据的存储段的非易失性存储器,所述非易失性存储器包括至少一个保留在存储器压缩期间使用的存储段,用来只接收从所述非易失性存储器的另一个存储段拷贝的代码和/或数据;以及一种校正指针/标记的机制,用来确定从所述非易失性存储器的另一个存储段拷贝的代码和域数据的新的存储位置。
2.一种按照权利要求1所述的计算环境,其中所述多个存储段可以接收数据,从低端到高端存储,而所述至少一个存储段保留在高端。
3.一种从一个具有多个存储段且至少一个存储段保留在压缩期间使用的非易失性存储器中删除一个所规定的代码本体的方法,所述方法包括下列步骤扫描所规定的代码本体,确定所规定的代码本体是否与其他代码共享一个存储段;将所述其他代码拷贝入一个保留在压缩期间使用的存储段;将所述其他代码交换到保留在压缩期间使用的存储段;擦除任何含有所规定的代码本体的一部分的存储段。
4.一种按照权利要求3所述的方法,其中所述将为压缩保留的存储段和与其他代码共享的存储段交换的步骤,在一个系统具有虚拟存储区,并且与其他代码共享的存储段处在一个第一地址的情况下,包括将为压缩保留的存储段映射到这个第一地址的步骤。
5.一种按照权利要求3所述的方法,其中所述将为压缩保留的存储段和与其他代码共享的存储段交换的步骤包括下列步骤擦除与其他代码共享的存储段;以及将为压缩保留的存储段拷贝到所擦除的存储段上。
6.一种计算机可读存储器,用来存储供在一个计算机内执行权利要求3至5的任何一种方法使用的指令。
7.一种计算机程序产品,所述计算机程序产品包括一个计算机可用媒体,其中存有计算机可读程序代码装置,用来使计算机从具有多个存储段且其中至少有一个存储段保留在压缩期间使用的非易失性存储器中删除一个所规定的代码本体,所述计算机程序产品中的计算机可读程序代码装置包括使计算机扫描所规定的代码本体、确定所规定的代码本体是否与其他代码共享一个存储段的计算机可读程序代码装置;使计算机将所述其他代码拷贝到一个保留在压缩期间使用的存储段的计算机可读程序代码装置;使计算机将所述其他代码交换到保留在压缩期间使用的存储段的计算机可读程序代码装置;以及使计算机擦除任何含有所规定的代码本体的一部分的存储段的计算机可读程序代码装置。
全文摘要
本发明提供了一种从只读存储器中删除代码(应用软件和数据)和由于删除了一个应用软件或者在没有足够空间保存一个新的应用软件时压缩存储器内其余代码的方法。将一个或多个“备用存储段”保留在压缩期间使用。如果要删除的代码与其他不要删除的代码共享一个存储段,就将其他代码拷贝到一个备用存储段,再交换回它的原来位置。然后可以压缩代码,消除由于擦除代码而留下的“空洞”。
文档编号G06F12/00GK1345427SQ0080570
公开日2002年4月17日 申请日期2000年3月21日 优先权日1999年3月30日
发明者德罗伊·皮尔森·比特纳, 基姆·克罗海西, 迈克尔·奥恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1