通过删除应用程序压缩非易失性存储器的方法技术

技术编号:2882182 阅读:230 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种从只读存储器中删除代码(应用软件和数据)和由于删除了一个应用软件或者在没有足够空间保存一个新的应用软件时压缩存储器内其余代码的方法。将一个或多个“备用存储段”保留在压缩期间使用。如果要删除的代码与其他不要删除的代码共享一个存储段,就将其他代码拷贝到一个备用存储段,再交换回它的原来位置。然后可以压缩代码,消除由于擦除代码而留下的“空洞”。(*该技术在2020年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术所涉及的是采用分段存储空间的计算机系统(诸如嵌入设备之类)内的存储器管理领域,具体地说,本专利技术提供了一种安全回收存储器和将其余应用软件在非易失可擦写“闪速(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)。以与上面对本文档来自技高网...

【技术保护点】
一种在一个计算环境内具有多个用来接收和存储应用软件代码和数据的存储段的非易失性存储器,所述非易失性存储器包括: 至少一个保留在存储器压缩期间使用的存储段,用来只接收从所述非易失性存储器的另一个存储段拷贝的代码和/或数据;以及 一种校正指针/标记的机制,用来确定从所述非易失性存储器的另一个存储段拷贝的代码和/或数据的新的存储位置。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:德罗伊皮尔森比特纳基姆克罗海西迈克尔奥恩
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1