CN101398759B - 避免启动代码在数据段搬移时自我覆盖的方法 - Google Patents
避免启动代码在数据段搬移时自我覆盖的方法 Download PDFInfo
- Publication number
- CN101398759B CN101398759B CN2007101181381A CN200710118138A CN101398759B CN 101398759 B CN101398759 B CN 101398759B CN 2007101181381 A CN2007101181381 A CN 2007101181381A CN 200710118138 A CN200710118138 A CN 200710118138A CN 101398759 B CN101398759 B CN 101398759B
- Authority
- CN
- China
- Prior art keywords
- logical address
- data segment
- initial
- shift value
- segments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 4
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
可避免启动代码在数据段搬移时自我覆盖的方法。技术方案是:是包括下列步骤:(1)读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址;(2)计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值;(3)通过判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。
Description
技术领域
本发明属于启动代码搬移数据段方法领域,尤其是对于含有内存管理单元或启动重映射逻辑处理器芯片,取得源数据段的逻辑地址和目标数据段的逻辑地址,通过判断源数据段的逻辑地址和目标数据段的逻辑地址的相对位置关系,以选择合适的搬移顺序来搬移数据段,从而避免启动代码在数据段搬移时自我覆盖的方法。
背景技术
目前,对于含有内存管理单元或启动重映射逻辑处理器芯片来说,启动代码在进行数据段的搬移或复制时,大都采用从头至尾或从尾至头的单一固定的顺序搬移。但是,由于内存管理单元或启动重映射逻辑的采用,形成了处理器的物理空间和逻辑空间的分离,由此一个物理地址可能对应多个逻辑地址,而处理器进行的读写操作都是基于逻辑地址进行的,那么启动代码在对应有多个逻辑空间的物理空间上进行数据段的搬移或复制时,如果单一固定地采用从头至尾或从尾至头的顺序搬移,都有可能导致数据段的头部或尾部被自我覆盖。
说明书附图图1-图4,每一附图中显示的上下两个逻辑空间对应着同一个物理空间,每一附图都是为说明一个数据段的搬移,数据段的搬移都是在在同一物理空间内进行的。
对于说明书附图图1来说,源数据段逻辑地址基值M等于1,目标数据段逻辑地址基值N等于11,逻辑地址1-7和逻辑地址12-18映射到同一物理地址空间。将位于逻辑地址1-3内数据段ABC搬移到逻辑地址为16-18内,无论采用从头至尾或从尾至头的顺序都可以正确搬移,对于说明书附图图3来说,源数据段逻辑地址基值M等于11,目标数据段逻辑地址基值N等于21,逻辑地址11-17和逻辑地址21-27映射到同一物理地址空间。将位于逻辑地址15-17内数据段ABC搬移到逻辑地址为21-23内,无论采用从头至尾或从尾至头的顺序也都可以正确搬移。
而对于说明书附图图2来说,源数据段逻辑地址基值M等于3,目标数据段逻辑地址基值N等于11,逻辑地址3-9和逻辑地址11-17映射到同一物理地址空间。将将位于逻辑地址4-6内数据段ABC搬移到逻辑地址为14-16内,如果采用从头至尾的顺序搬移,即按照数据A到逻辑地址14、数据B到逻辑地址15、数据C到逻辑地址16顺序搬移,由于逻辑地址6与逻辑地址14对应同一个物理地址,因此,第一步数据A搬移到逻辑地址14时,会将位于该逻辑地址内的数据C进行覆盖,导致尾部数据被头部数据覆盖,第二步将数据B从逻辑地址5搬移到逻辑地址15,第三步,将数据C从逻辑地址6搬移到逻辑地址16,但是逻辑地址6内的数据已经变成数据A,因此逻辑地址16内的数据为A,逻辑地址14-16最后的数据段结果为ABA,这样就发生数据段搬移的错误。但是,如果采用从尾至头的顺序搬移,第一步将数据C从逻辑地址6搬移到逻辑地址16,第二步将数据B从逻辑地址5搬移到逻辑地址15,第三步将数据A从逻辑地址4搬移到逻辑地址14,最终在逻辑空间14-16内形成数据段ABC,就能够实现数据段正确搬移。
同理,对于说明书附图图4来说,如果采用从尾至头的顺序搬移,则导致头部数据被尾部数据覆盖,而如果采用从头至尾顺序搬移,则能够正确搬移数据段。
发明内容
本发明的目的是解决现有技术存在的启动代码数据段搬移时,可能出现数据自我覆盖而不能正确搬移数据段的问题,提供一种可避免启动代码在数据段搬移时自我覆盖的方法。
本发明的技术方案是:避免启动代码在数据段搬移时自我覆盖的方法,其特征是包括下列步骤:
(1)读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址,其中,源数据段为搬移或复制前的数据段,目标数据段为搬移或复制后的数据段;
(2)计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值;
(3)通过判断目标数据段的起始逻辑地址的偏移数值以及结束逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,从而确定采用从头至尾或从尾至头的搬移数据段的顺序。
所述源数据段起始及结束逻辑地址的偏移数值,为所述源数据段起始及结束位置的逻辑地址数值与源数据段逻辑地址基值之间的差值,源数据段逻辑地址基值标记为M,所述目标数据段起始及结束逻辑地址的偏移数值,为所述目标数据段起始及结束位置的逻辑地址数值与目标数据段逻辑地址基值之间的差值,目标数据段逻辑地址基值标记为M,其中以M和N为起始的逻辑地址空间映射到同一物理地址空间。
还包括下列步骤:(1)判断目标数据段起始逻辑地址的偏移数值与源数据段起始逻辑地址偏移数值关系,如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始和结束逻辑地址的偏移数值区间之内,包括区间两端的数值在内,则启动代码采用从尾至头的顺序搬移数据段;(2)如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始结束逻辑地址的偏移数值区间之外,继续判断目标数据段的结束逻辑地址偏移数值与源数据段的起始结束逻辑地址偏移数值的关系,如果目标数据段的结束逻辑地址的偏移数值位于源数据段的起始结束逻辑地址偏移数值区间内,包括区间两端的数值在内,则启动代码采用从头至尾的顺序搬移数据段;如果目标数据段的结束逻辑地址偏移数值位于源数据段的起始结束逻辑地址的偏移数值区间外,则启动代码采用从头至尾或从尾至头的顺序搬移数据段。
上述方法利用含有内存管理单元或启动重映射逻辑的处理器芯片,通过GNU-LD链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
本发明的效果是:通过读取源数据段的起始结束逻辑地址和目标数据段起始结束逻辑地址、计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值、判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。能够选择出数据段正确的搬移顺序,避免数据段搬移时自我覆盖的发生,保证系统正确运行。
下面结合附图和实施例对本发明做进一步的说明。
附图说明
图1为数据段搬移例1示意图;
图2为数据段搬移例2示意图;
图3为数据段搬移例3示意图;
图4为数据段搬移例4示意图;
图5实施本发明方法的程序框图。
具体实施方式
图5中,是避免启动代码在数据段搬移时自我覆盖方法的程序框图,包括下列步骤:
步骤101,读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址。
步骤102,计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值,通过判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。所述源数据段起始及结束逻辑地址的偏移数值,为所述源数据段起始及结束位置的逻辑地址数值与源数据段逻辑地址基值之间的差值,所述目标数据段起始及结束逻辑地址的偏移数值,为所述目标数据段起始及结束位置的逻辑地址数值与目标数据段逻辑地址基值之间的差值。
步骤103,判断目标数据段起始逻辑地址的偏移数值与源数据段起始逻辑地址偏移数值关系,如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始和结束逻辑地址的偏移数值区间之内,包括区间两端的数值在内,则执行步骤105,即启动代码采用从尾至头的顺序搬移数据段;如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始结束逻辑地址的偏移数值区间之外,继续判断目标数据段的结束逻辑地址偏移数值与源数据段的起始结束逻辑地址偏移数值的关系,即执行步骤104,如果目标数据段的结束逻辑地址的偏移数值位于源数据段的起始结束逻辑地址偏移数值区间内,包括区间两端的数值在内,则执行步骤106,即启动代码采用从头至尾的顺序搬移数据段;如果目标数据段的结束逻辑地址偏移数值位于源数据段的起始结束逻辑地址的偏移数值区间外,则执行步骤107,即启动代码采用从头至尾或从尾至头的顺序搬移数据段。
上述方法利用含有内存管理单元或启动重映射逻辑的处理器芯片,通过GNU-LD链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
结合图1-图4所示的数据段搬移情况,具体说明本发明方法的应用。
图1中所示的同一物理空间有两个逻辑空间,即对应两个逻辑地址区间,一个逻辑地址区间为1-7,另一个逻辑地址区间为12-18,源数据段的逻辑地址区间为1-3,目标逻辑地址区间为16-18。源数据段逻辑地址基值M为1,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为0(即起始逻辑地址1减去逻辑地址基值1)和2(即结束逻辑地址3减去逻辑地址基值1)。目标数据段逻辑地址基值N为12,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为16-12=4,和18-12=6,目标数据段的结束逻辑地址偏移数值4和6,位于源数据段的起始结束逻辑地址的偏移数值区间1-3之外,启动代码采用从头至尾或从尾至头的顺序搬移数据段。
图2中所示的同一物理空间有两个逻辑空间,一个逻辑地址区间为3-9,另一个逻辑地址区间为11-17,源数据段的逻辑地址区间为4-6,目标逻辑地址区间为14-16。源数据段逻辑地址基值M为3,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为1(即起始逻辑地址4减去逻辑地址基值3)和3(即结束逻辑地址6减去逻辑地址基值3)。目标数据段逻辑地址基值N为11,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为14-11=3,和16-11=5,目标数据段的起始逻辑地址偏移数值3,位于源数据段的起始结束逻辑地址的偏移数值区间1-3之内,采用从尾至头的顺序搬动数据块,如果采用从头至尾的顺序搬移,则导致尾部数据被头部数据覆盖。
图3中所示的同一物理空间有两个逻辑空间,即对应两个逻辑地址区间,一个逻辑地址区间为11-17,另一个逻辑地址区间为21-27,源数据段的逻辑地址区间为15-17,目标逻辑地址区间为21-23。源数据段逻辑地址基值M为11,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为4(即起始逻辑地址15减去逻辑地址基值11)和6(即结束逻辑地址17减去逻辑地址基值11)。目标数据段逻辑地址基值N为21,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为21-21=0,和23-21=2,目标数据段的结束逻辑地址偏移数值0和2,位于源数据段的起始结束逻辑地址的偏移数值区间4-6之外,启动代码采用从头至尾或从尾至头的顺序搬移数据段。
图4中所示的同一物理空间有两个逻辑空间,一个逻辑地址区间为31-37,另一个逻辑地址区间为41-47,源数据段的逻辑地址区间为34-36,目标逻辑地址区间为42-44。源数据段逻辑地址基值M为31,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为3(即起始逻辑地址34减去逻辑地址基值31)和5(即结束逻辑地址36减去逻辑地址基值31)。目标数据段逻辑地址基值N为41,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为42-41=1,和44-41=3,目标数据段的起始逻辑地址偏移数值1,位于源数据段的起始结束逻辑地址的偏移数值区间3-5之外,目标数据段的起始逻辑地址偏移数值3,位于源数据段的起始结束逻辑地址的偏移数值区间3-5之内,采用从头至尾的顺序搬动数据块,如果采用从尾至头的顺序搬移,则导致头部数据被尾部数据覆盖。
Claims (4)
1.避免启动代码在数据段搬移时自我覆盖的方法,其特征是包括下列步骤:
(1)读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址,其中,源数据段为搬移或复制前的数据段,目标数据段为搬移或复制后的数据段;
(2)计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值;
(3)通过判断目标数据段的起始逻辑地址的偏移数值以及结束逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,从而确定采用从头至尾或从尾至头的搬移数据段的顺序。
2.根据权利要求1所述的避免启动代码在数据段搬移时自我覆盖的方法,其特征是:所述源数据段起始及结束逻辑地址的偏移数值,为所述源数据段起始及结束位置的逻辑地址数值与源数据段逻辑地址基值之间的差值,源数据段逻辑地址基值标记为M,所述目标数据段起始及结束逻辑地址的偏移数值,为所述目标数据段起始及结束位置的逻辑地址数值与目标数据段逻辑地址基值之间的差值,目标数据段逻辑地址基值标记为N,其中以M和N为起始的逻辑地址空间映射到同一物理地址空间。
3.根据权利要求1或2所述的避免启动代码在数据段搬移时自我覆盖的方法,其特征是包括下列步骤:
(1)判断目标数据段起始逻辑地址的偏移数值与源数据段起始逻辑地址偏移数值关系,如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始和结束逻辑地址的偏移数值区间之内,包括区间两端的数值在内,则启动代码采用从尾至头的顺序搬移数据段;
(2)如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始结束逻辑地址的偏移数值区间之外,继续判断目标数据段的结束逻辑地址偏移数值与源数据段的起始结束逻辑地址偏移数值的关系,如果目标数据段的结束逻辑地址的偏移数值位于源数据段的起始结束逻辑地址偏移数值区间内,包括区间两端的数值在内,则启动代码采用从头至尾的顺序搬移数据段;如果目标数据段的结束逻辑地址偏移数值位于源数据段的起始结束逻辑地址的偏移数值区间外,则启动代码采用从头至尾或从尾至头的顺序搬移数据段。
4.根据权利要求3所述的避免启动代码在数据段搬移时自我覆盖的方法,其特征是:利用含有内存管理单元或启动重映射逻辑的处理器芯片,通过GNU-LD链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101181381A CN101398759B (zh) | 2007-06-29 | 2007-06-29 | 避免启动代码在数据段搬移时自我覆盖的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101181381A CN101398759B (zh) | 2007-06-29 | 2007-06-29 | 避免启动代码在数据段搬移时自我覆盖的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101398759A CN101398759A (zh) | 2009-04-01 |
CN101398759B true CN101398759B (zh) | 2012-06-13 |
Family
ID=40517337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101181381A Expired - Fee Related CN101398759B (zh) | 2007-06-29 | 2007-06-29 | 避免启动代码在数据段搬移时自我覆盖的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101398759B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1281562A (zh) * | 1997-10-16 | 2001-01-24 | M-系统快闪盘开拓者公司 | 改进的闪速文件系统 |
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
CN1809890A (zh) * | 2003-06-23 | 2006-07-26 | 皇家飞利浦电子股份有限公司 | 用于在出现缺陷时将逻辑地址重映射到物理地址来记录信息的装置和方法 |
CN1828557A (zh) * | 2006-04-07 | 2006-09-06 | 浙江大学 | 嵌入式操作系统中进程映射实现方法 |
-
2007
- 2007-06-29 CN CN2007101181381A patent/CN101398759B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1281562A (zh) * | 1997-10-16 | 2001-01-24 | M-系统快闪盘开拓者公司 | 改进的闪速文件系统 |
CN1809890A (zh) * | 2003-06-23 | 2006-07-26 | 皇家飞利浦电子股份有限公司 | 用于在出现缺陷时将逻辑地址重映射到物理地址来记录信息的装置和方法 |
CN1637721A (zh) * | 2003-12-30 | 2005-07-13 | 三星电子株式会社 | 地址映射方法和映射信息管理方法及其闪速存储器 |
CN1828557A (zh) * | 2006-04-07 | 2006-09-06 | 浙江大学 | 嵌入式操作系统中进程映射实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101398759A (zh) | 2009-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8825947B1 (en) | System and method for managing data access in non-volatile memory | |
CN103744694B (zh) | 基于Nand闪存的动态分区搜索装置及其方法 | |
CN101551780B (zh) | 一种电视机及其数据存储方法、装置 | |
US7111116B1 (en) | Reducing micro-controller access time to data stored in a remote memory in a disk drive control system | |
CN1096674C (zh) | 包含有固定块结构的伺服磁盘驱动器 | |
JP5064821B2 (ja) | 磁気ディスクコントローラおよび方法 | |
CN100377119C (zh) | 闪存介质中数据保护方法 | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
US10089225B2 (en) | Improving garbage collection efficiency by reducing page table lookups | |
US20140019672A1 (en) | Memory system and control method thereof | |
CN109783396A (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
US9772777B2 (en) | Systems and methods for improved access to flash memory devices | |
CN101334756A (zh) | 非易失性存储器的控制装置及其控制方法以及存储装置 | |
CN103617101A (zh) | 一种掉电保护方法及装置 | |
US20090060390A1 (en) | Image processing method and apparatus | |
JP5329689B2 (ja) | メモリコントローラ、不揮発性記憶装置 | |
CN110209355A (zh) | 基于固态硬盘的全固件读写操作优化方法和装置 | |
CN102096679A (zh) | 一种索引段合并和写入磁盘的方法及装置 | |
CN101398759B (zh) | 避免启动代码在数据段搬移时自我覆盖的方法 | |
JP2008192209A (ja) | 磁気ディスクコントローラおよび方法 | |
JP4936271B2 (ja) | 半導体記憶装置 | |
JP2008084184A (ja) | メモリコントローラ | |
JP2008192208A (ja) | 磁気ディスクコントローラおよび方法 | |
CN100470681C (zh) | 一种基于与非型闪存实现用户程序引导的方法 | |
CN105511815A (zh) | 一种基于段表的plc可运行文件存储解析方法及存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120613 Termination date: 20120629 |