CN105808322B - 多分区虚拟内存的映射控制方法及装置 - Google Patents

多分区虚拟内存的映射控制方法及装置 Download PDF

Info

Publication number
CN105808322B
CN105808322B CN201610203283.9A CN201610203283A CN105808322B CN 105808322 B CN105808322 B CN 105808322B CN 201610203283 A CN201610203283 A CN 201610203283A CN 105808322 B CN105808322 B CN 105808322B
Authority
CN
China
Prior art keywords
code
switch
virtual memory
operation phase
section
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.)
Active
Application number
CN201610203283.9A
Other languages
English (en)
Other versions
CN105808322A (zh
Inventor
余云锋
吴大畏
李晓强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen SiliconGo Semiconductor Co., Ltd.
Original Assignee
SiliconGo Microelectronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SiliconGo Microelectronics Co Ltd filed Critical SiliconGo Microelectronics Co Ltd
Priority to CN201610203283.9A priority Critical patent/CN105808322B/zh
Publication of CN105808322A publication Critical patent/CN105808322A/zh
Application granted granted Critical
Publication of CN105808322B publication Critical patent/CN105808322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种多分区虚拟内存的映射控制方法及装置,该方法包括:S10,在存储器的当前代码运行阶段,且在当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;S20,判断上一代码阶运行段运行的切换代码段是否在当前代码运行阶段的下一代码运行阶段再次在代码虚拟内存映射区中运行;S30,若是,则保留上一代码运行阶段运行的切换代码段,且选择另一对应的代码虚拟内存映射区,返回步骤S10、S20;S40,若否,则将当前代码运行阶段的切换代码段加载至代码虚拟内存映射区中运行。本发明减少了该切换代码段的加载和切换次数,提高了存储器对数据的处理能力。

Description

多分区虚拟内存的映射控制方法及装置
技术领域
本发明涉及存储器处理技术领域,尤其涉及一种多分区虚拟内存的映射控制方法及装置。
背景技术
在嵌入式操作系统中,当嵌入的执行代码所需的运行空间大于当前系统所分配的代码运行空间时,则必须将该执行代码与该代码运行空间的映射关系进行处理,才能使得该执行代码在当前系统所分配的代码运行空间中正常运行。例如,SSD固态硬盘中嵌入的FTL(Flash translation layer,闪存转换层)管理算法程序的执行代码所需运行空间为150K,而该SSD固态硬盘中内存空间的代码运行空间为128K,因此必须将FTL管理算法程序的执行代码与该代码运行空间的映射关系进行处理,才能使得该150K的执行代码能在128K的代码运行空间中正常运行。
目前,将该执行代码与该代码运行空间的映射关系进行处理的方法为:将代码运行空间划分为一个代码常驻区和一个代码虚拟内存映射区,将关键的或者频繁使用的执行代码放到代码常驻区中运行,而将那些只是在某些阶段才能用到的执行代码整段的放到代码虚拟内存映射区中运行,其中,需要预先将在某些阶段才能用到的执行代码分配执行地址,该执行地址与该代码虚拟内存映射区相对应,这样,该某些阶段才能用到的执行代码则可以根据执行地址在相应阶段加载到该代码虚拟内存映射区中运行。但是,由于该某些阶段才能用到的执行代码中一些阶段才用到的执行代码所需的运行空间大,而另一些阶段才用到的执行代码所需的运行空间小,为了满足各阶段才能用到的执行代码的正常运行,需要将代码虚拟内存映射区划分的比较大,因此导致该代码虚拟内存映射区在某些阶段的利用率低,浪费资源;另外,在执行代码运行过程中,由于各阶段执行代码所实现的功能不一样,因此会触发该代码虚拟内存映射区切换该某些阶段才能用到的执行代码,对于共用代码虚拟内存映射区的两个执行代码,在后一个执行代码运行时,就必须擦除在先运行的代码,而若在先运行的代码在后一个执行代码运行完之后又要再次运行时,则需要再次重新加载,这样就造成某些执行代码的频繁加载和切换,使得存储器的数据处理能力降低。
发明内容
本发明的主要目的在于一种多分区虚拟内存的映射控制方法及装置,旨在解决在进程中,需频繁加载和切换代码,导致存储器的对数据的处理性能降低的问题。
为实现上述目的,本发明提供的一种多分区虚拟内存的映射控制方法,应用于存储器代码虚拟内存映射区,包括:
S10,在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;
S20,判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行;
S30,若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区,返回步骤S10、S20,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行;
S40,若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。
优选地,所述在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段的步骤之前还包括:
基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小;
根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区;
创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。
优选地,所述基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小的步骤之前还包括:
识别代码各运行阶段所用的切换代码段;
将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址。
优选地,所述基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小的步骤之前还包括:
配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置。
优选地,所述创建当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系的步骤包括:
确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址;
根据所述代码虚拟地址和所述物理地址创建所述映射关系。
此外,为实现上述目的,本发明还提供一种多分区虚拟内存的映射控制装置,应用于存储器代码虚拟内存映射区,包括:
第一确定模块,用于在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;
判断模块,用于判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行;
保留模块,用于若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区,调用所述第一确定模块、所述判断模块,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行;
加载模块,用于若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。
优选地,所述装置还包括:
获取模块,用于基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小;
第二确定模块,用于根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区;
创建模块,用于创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。
优选地,所述装置还包括:
识别模块,用于识别代码各运行阶段所用的切换代码段;
保存模块,用于将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址。
优选地,所述装置还包括:
配置模块,用于配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置。
优选地,所述创建模块包括:
确定单元,用于确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址;
创建单元,用于根据所述代码虚拟地址和所述物理地址创建所述映射关系。
本发明通过在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段,判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行,若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区继续加载该切换代码段,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行,若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。由于管理算法当前的运行阶段中每一个切换代码段对应的多个相适应的代码虚拟内存映射区,对于出现共用代码虚拟内存映射区的当前阶段运行的切换代码和非当前阶段运行的切换代码时,将那些上一阶段运行和下一阶段运行的非当前阶段运行的切换代码保留在该代码虚拟内存映射区中,而将当前阶段运行的切换代码映射到另一个相适应的代码虚拟内存映射区中,因此不需再次重新加载该切换代码,提高了存储器的数据处理能力。
附图说明
图1为本发明多分区虚拟内存的映射控制方法的第一实施例的流程示意图;
图2为本发明多分区虚拟内存的映射控制方法的第二实施例的流程示意图;
图3为本发明多分区虚拟内存的映射控制方法的第三实施例的流程示意图;
图4为本发明多分区虚拟内存的映射控制方法的第四实施例的流程示意图;
图5为本发明多分区虚拟内存的映射控制方法的第五实施例中创建当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系的细化流程示意图;
图6为本发明多分区虚拟内存的映射控制装置的第一实施例的功能模块示意图;
图7为本发明多分区虚拟内存的映射控制装置的第二实施例的功能模块示意图;
图8为本发明多分区虚拟内存的映射控制装置的第三实施例的功能模块示意图;
图9为本发明多分区虚拟内存的映射控制装置的第四实施例的功能模块示意图;
图10为本发明多分区虚拟内存的映射控制装置的第五实施例中创建模块的细化功能模块示意图。
本发明目的的控制、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
基于上述问题,本发明提供一种多分区虚拟内存的映射控制方法。
参照图1,图1为本发明多分区虚拟内存的映射控制方法的第一实施例的流程示意图。
在本实施例中,所述多分区虚拟内存的映射控制方法包括:
步骤S10,在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;
在本实施例中,基于代码段控制模块,控制当前代码运行阶段的某一个切换代码段加载至与该切换代码段对应的代码虚拟内存映射区之前,需检测该代码虚拟内存映射区在当前代码运行阶段的前一个代码运行阶段所运行的切换代码段。例如,SSD固态硬盘中的FTL(Flash translation layer,闪存转换层)管理算法当前代码运行阶段为B阶段,在B阶段之前的运行阶段为A阶段,则将B阶段(当前阶段)所用的切换代码片段Code Seg1加载至代码虚拟内存映射区1之前,需检测该代码虚拟内存映射区1在A阶段(当前阶段的上一阶段)所运行的切换代码片段,如Code Seg2。
步骤S20,判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行;
在检测该代码虚拟内存映射区在上一代码运行阶段运行的切换代码段后,基于代码段控制模块判断该代码虚拟内存映射区在上一代码运行阶段运行的切换代码段是否在当前代码运行阶段的下一代码运行阶段再次在该代码虚拟内存映射区中运行。例如,该FTL管理算法当前代码运行阶段的下一个代码运行阶段为C阶段,基于该FTL管理算法中的代码段控制模块,在检测完该代码虚拟内存映射区在A阶段运行的代码段后,判断该代码虚拟内存映射区在A阶段所运行的切换代码片段Code Seg2是否在C阶段再次运行。
步骤S30,若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区,返回步骤S10、S20,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行;
如果上一代码运行阶段的切换代码段在当前阶段的下一阶段再次在该代码虚拟内存映射区中运行,则保留该代码虚拟内存映射区的该切换代码段,并且选择另外一个与当前阶段所用的该切换代码段对应的代码虚拟内存映射区,继续加载该切换代码段,直至该切换代码段能够成功加载至代码虚拟内存映射区中。例如,该代码虚拟内存映射区在A阶段所运行的切换代码片段Code Seg2在C阶段会再次在代码虚拟内存映射区1中运行,则将该Code Seg2保留在代码虚拟内存映射区1,而当前阶段所用的切换代码片段Code Seg1则不会加载到该代码虚拟内存映射区1中,而是加载到与该Code Seg1对应的其他代码虚拟内存映射区中,直至能成功加载至代码虚拟内存映射区中运行。
步骤S40,若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。
如果上一代码运行阶段的切换代码段不需要在当前阶段的下一阶段再次运行时,则擦除该代码虚拟内存映射区中的切换代码段,并将当前代码运行阶段所用的代码段加载至该代码虚拟内存映射区中。例如,该代码虚拟内存映射区在A阶段所运行的切换代码片段Code Seg2在C阶段不会再次在代码虚拟内存映射区1中运行,则擦除该代码虚拟内存映射区1中的Code Seg2,并将B阶段(当前阶段)所用的切换代码片段Code Seg1加载至代码虚拟内存映射区1中。
需要说明的是,本发明不仅仅适用于存储器代码虚拟内存映射区,还满足具有同样需求的嵌入式开发方案。
本实施例通过在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段,判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行,若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区继续加载该切换代码段,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行,若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。由于管理算法当前的运行阶段中每一个切换代码段对应的多个相适应的代码虚拟内存映射区,对于出现共用代码虚拟内存映射区的当前阶段运行的切换代码和非当前阶段运行的切换代码时,将那些上一阶段运行和下一阶段运行的非当前阶段运行的切换代码保留在该代码虚拟内存映射区中,而将当前阶段运行的切换代码映射到另一个相适应的代码虚拟内存映射区中,因此不需再次重新加载该切换代码,提高了存储器的数据处理能力。
进一步的,基于第一实施例,提出本发明多分区虚拟内存的映射控制方法的第二实施例,在本实施例中,参照图2,上述步骤S10之前,还包括:
步骤S50,基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小;
在当前代码运行过程中,控制该代码段控制模块从NandFlash闪存存储器获取当前代码运行阶段所用的所有的切换代码段,并控制该代码段控制模块检测获取的切换代码段的文件大小。其中,该代码段控制模块主要负责对切换代码段的读取,并建立该切换代码段和代码虚拟内存映射区的映射关系;该NandFlash闪存存储器存储各代码运行阶段所用的切换代码段。
例如,在该CodeSegReload()模块确定该FTL(Flash translation layer,闪存转换层)管理算法程序当前运行阶段为上电阶段后,则控制该CodeSegReload()模块获取包含SATAInit()SATA接口初始化模块在内的所有的切换代码段,并检测获取的切换代码段的文件大小,如检测到该SATAInit()模块的文件大小为2K。
步骤S60,根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区;
工程人员确定管理算法中所有切换代码段的文件大小,及所有运行阶段中所用的切换代码段的文件大小在最大的情况,来划分虚拟映射区的个数及每个虚拟映射区的大小,使得该虚拟映射区在最差的情况下仍然能够正常运行而不明显影响性能,例如,将128K的代码运行空间划分为一个116K的代码常驻区和一个12K的代码虚拟内存映射区,该12K的代码虚拟内存映射区划分为4K的虚拟代码映射区1、4K的虚拟代码映射区2、2K的虚拟代码映射区3、2K的虚拟代码映射区4。在确定该获取到的切换代码段的文件大小后,该代码段控制模块检测各代码虚拟内存映射区内存空间的大小,确定与该切换代码段的文件大小相适应的代码虚拟内存映射区。例如,2K的Main()入口初始化模块对应的是2K或者4K的虚拟映射区,优选2K的虚拟映射区,在该2K的虚拟映射区被占用后,则选择4K的虚拟映射区。
步骤S70,创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。
在确定当前代码运行阶段的切换代码段对应的代码虚拟内存映射区后,则控制该代码段控制模块创建该切换代码段与对应的代码虚拟内存映射区的映射关系。例如,在FTL管理算法程序运行到上电阶段时,控制CodeSegReload()模块获取文件大小为4K的SATAInit()代码段,在该CodeSegReload()模块检测是否存在空的内存空间为4K的代码虚拟内存映射区中,如果存在,则立即创建该SATAInit()代码段与该代码虚拟内存映射区的映射关系,若不存在,则在释放某个4K的代码虚拟内存映射区中切换代码段后,在创建该SATAInit()代码段与该代码虚拟内存映射区的映射关系。在创建了该切换代码段与该切换代码段对应的代码虚拟内存映射区的映射关系后,根据该映射关系将该切换代码段获取到与该切换代码段对应的代码虚拟内存映射区中,使得该切换代码段能在该代码虚拟内存映射区中正常运行。
本实施例通过基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小,根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区,创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。由于将该管理算法各个运行阶段所运行的切换代码片段都分离出来,存储在NandFlash闪存存储器中,在确定管理算法当前的运行阶段后,控制该代码段控制模块从该NandFlash闪存存储器一次性获取该运行阶段所需的切换代码段,每一切换代码段会对应多个代码虚拟内存映射区,使得该切换代码段基于该映射关系能在对应的代码虚拟内存映射区中正常运行,因此减少了该切换代码段的加载和切换次数,从而提高了存储器对数据的处理性能。
进一步的,基于第二实施例,提出本发明多分区虚拟内存的映射控制方法的第三实施例,在本实施例中,参照图3,上述步骤S50之前,还包括:
步骤S80,识别代码各运行阶段所用的切换代码段;
在本实施例中,在对该管理算法程序开发完成后,对该管理算法程序进行代码段定位,并给各代码段分配都一个虚拟地址,该管理算法程序虚拟地址的顺序运行。该存储器调用代码段控制模块识别该管理算法各运行阶段所用到切换代码段,并且识别该代码各个运行阶段所用的切换代码段在运行过程中出现异常时必须用到的处理异常情况的切换代码片段,即在识别该管理算法各运行阶段所用到的切换代码段时,首先需要确保各运行阶段出现异常时必须用到的代码片段。例如,在逻辑数据回收时,该回收过程中发生Ecc fail纠错警报,需要Readretry读重试处理或Read Reclaim读回收处理,且需进行坏块替换,则必须用到的BlockRecy物理块的逻辑回收模块、BadBlockCtrl坏块替换管理模块、ReclaimCtl读回收处理模块和ReadRetry读重试处理模块等切换代码端作为预设切换代码段。
需要说明的是,在识别时,同一代码虚拟内存映射区的切换代码段不能在同一运行阶段出现。
步骤S90,将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址。
在划分该管理算法的切换代码段的文件大小后,将该划分后的所有切换代码段保存在存储器中,如NandFlash闪存存储器中,并给各切换代码段分配存储地址,使得该代码段控制模块根据该存储地址从该存储器中获取该切换代码段。例如,将上电阶段所用的切换代码段SATAInit()、HALInit()NandFlash操作相关的底层驱动硬件初始化模块、Main()入口初始化函数、FTLTa1Init()FTL初级算法表搜索模块(第一次运行FTL算法时需执行)保存到NandFlash闪存存储器中,并给各代码段分配一个存储地址,如SATA Init()代码段的存储地址位0x1000,在CodeSegeReload模块找到0x1000后,获取该0x1000对应的SATA Init()代码段。
本实施例通过识别代码各运行阶段所用的切换代码段,将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址,使得在某个运行阶段所用的切换代码片段能够一次性准备好,避免频繁切换和加载该切换代码片段,从而提高了存储器对数据的处理性能。
进一步的,基于第二实施例,提出本发明多分区虚拟内存的映射控制方法的第四实施例,在本实施例中,参照图4,上述步骤S50之前,还包括:
步骤S100,配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置。
在本实施例中,在编译完成需要执行的代码后,预计代码各个运行阶段中所执行的切换代码片段个数的最大值,该存储器根据该最大值配置代码虚拟内存映射区,并预留在运行该切换代码片段个数为最大值的阶段时,出现异常时所需的代码虚拟内存映射区。预计代码各运行阶段所用到的切换代码段的文件大小划分代码虚拟内存映射区的内存大小,并根据预设切换代码段的大小确定代码虚拟内存映射区预留的内存大小。例如,一个12K的代码虚拟内存映射区划分为4K的虚拟代码映射区1、4K的虚拟代码映射区2、2K的虚拟代码映射区3、2K的虚拟代码映射区4。
本实施例通过配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置,使得该管理算法在出现异常的情况下仍能够正常运行。
进一步的,基于上述任一实施例,提出本发明多分区虚拟内存的映射控制方法的第五实施例,在本实施例中,参照图5,上述步骤S70包括:
步骤S71,确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址;
在本实施例中,控制代码段控制模块从存储器获取当前运行阶段需要的切换代码片段,并获取该切换代码片段对应的代码虚拟地址,在确定该切换代码片段的文件大小后,确定与该切换代码片段的文件大小相对应代码虚拟内存映射区,并获取该代码虚拟内存映射区的物理地址。
步骤S72,根据所述代码虚拟地址和所述物理地址创建所述映射关系。
在确定切换代码段的代码虚拟地址和对应的代码虚拟内存映射区的物理地址,控制该代码段控制模块基于该代码虚拟地址和物理地址创建映射关系,使得该切换代码片段能够在该代码虚拟内存映射区中正常的运行。
本实施例通过确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址,根据所述代码虚拟地址和所述物理地址创建所述映射关系。由于一个切换代码段能与多个相适应的代码虚拟内存映射区进行映射,因此对于出现共用代码虚拟内存映射区的当前阶段运行的切换代码和非当前阶段运行的切换代码时,将将当前阶段运行的切换代码映射到另一个相适应的代码虚拟内存映射区中,从而不需再次重新加载该切换代码,提高了存储器的数据处理性能。
本发明进一步提供一种多分区虚拟内存的映射控制装置。
参照图6,图6为本发明多分区虚拟内存的映射控制装置的第一实施例的功能模块示意图。
在本实施例中,所述装置包括:第一确定模块10、判断模块20、保留模块30、加载模块40。
所述第一确定模块10,用于在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;
在本实施例中,基于代码段控制模块,控制当前代码运行阶段的某一个切换代码段加载至与该切换代码段对应的代码虚拟内存映射区之前,需检测该代码虚拟内存映射区在当前代码运行阶段的前一个代码运行阶段所运行的切换代码段。例如,SSD固态硬盘中的FTL(Flash translation layer,闪存转换层)管理算法当前代码运行阶段为B阶段,在B阶段之前的运行阶段为A阶段,则将B阶段(当前阶段)所用的切换代码片段Code Seg1加载至代码虚拟内存映射区1之前,需检测该代码虚拟内存映射区1在A阶段(当前阶段的上一阶段)所运行的切换代码片段,如Code Seg2。
所述判断模块20,用于判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行;
在检测该代码虚拟内存映射区在上一代码运行阶段运行的切换代码段后,基于代码段控制模块判断该代码虚拟内存映射区在上一代码运行阶段运行的切换代码段是否在当前代码运行阶段的下一代码运行阶段再次在该代码虚拟内存映射区中运行。例如,该FTL管理算法当前代码运行阶段的下一个代码运行阶段为C阶段,基于该FTL管理算法中的代码段控制模块,在检测完该代码虚拟内存映射区在A阶段运行的代码段后,判断该代码虚拟内存映射区在A阶段所运行的切换代码片段Code Seg2是否在C阶段再次运行。
所述保留模块30,用于若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区,调用所述确定模块、所述判断模块,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行;
如果上一代码运行阶段的切换代码段在当前阶段的下一阶段再次在该代码虚拟内存映射区中运行,则保留该代码虚拟内存映射区的该切换代码段,并且选择另外一个与当前阶段所用的该切换代码段对应的代码虚拟内存映射区,继续加载该切换代码段,直至该切换代码段能够成功加载至代码虚拟内存映射区中。例如,该代码虚拟内存映射区在A阶段所运行的切换代码片段Code Seg2在C阶段会再次在代码虚拟内存映射区1中运行,则将该Code Seg2保留在代码虚拟内存映射区1,而当前阶段所用的切换代码片段Code Seg1则不会加载到该代码虚拟内存映射区1中,而是加载到与该Code Seg1对应的其他代码虚拟内存映射区中,直至能成功加载至代码虚拟内存映射区中运行。
所述加载模块40,用于若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。
如果上一代码运行阶段的切换代码段不需要在当前阶段的下一阶段再次运行时,则擦除该代码虚拟内存映射区中的切换代码段,并将当前代码运行阶段所用的代码段加载至该代码虚拟内存映射区中。例如,该代码虚拟内存映射区在A阶段所运行的切换代码片段Code Seg2在C阶段不会再次在代码虚拟内存映射区1中运行,则擦除该代码虚拟内存映射区1中的Code Seg2,并将B阶段(当前阶段)所用的切换代码片段Code Seg1加载至代码虚拟内存映射区1中。
需要说明的是,本发明不仅仅适用于存储器代码虚拟内存映射区,还满足具有同样需求的嵌入式开发方案。
本实施例在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,通过第一确定模块10确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段,判断模块20判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行,若是,保留模块30则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区继续加载该切换代码段,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行,若否,加载模块40则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。由于管理算法当前的运行阶段中每一个切换代码段对应的多个相适应的代码虚拟内存映射区,对于出现共用代码虚拟内存映射区的当前阶段运行的切换代码和非当前阶段运行的切换代码时,将那些上一阶段运行和下一阶段运行的非当前阶段运行的切换代码保留在该代码虚拟内存映射区中,而将当前阶段运行的切换代码映射到另一个相适应的代码虚拟内存映射区中,因此不需再次重新加载该切换代码,提高了存储器的数据处理能力。
进一步的,基于上述第一实施例,提出本发明多分区虚拟内存的映射控制装置的第二实施例,在本实施例中,参照图7,所述装置还包括:获取模块50、第二确定模块60、创建模块70。
所述获取模块50,用于基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小;
在当前代码运行过程中,控制该代码段控制模块从NandFlash闪存存储器获取当前代码运行阶段所用的所有的切换代码段,并控制该代码段控制模块检测获取的切换代码段的文件大小。其中,该代码段控制模块主要负责对切换代码段的读取,并建立该切换代码段和代码虚拟内存映射区的映射关系;该NandFlash闪存存储器存储各代码运行阶段所用的切换代码段。
例如,在该CodeSegReload()模块确定该FTL(Flash translation layer,闪存转换层)管理算法程序当前运行阶段为上电阶段后,则控制该CodeSegReload()模块获取包含SATAInit()SATA接口初始化模块在内的所有的切换代码段,并检测获取的切换代码段的文件大小,如检测到该SATAInit()模块的文件大小为2K。
所述第二确定模块60,用于根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区;
工程人员确定管理算法中所有切换代码段的文件大小,及所有运行阶段中所用的切换代码段的文件大小在最大的情况,来划分虚拟映射区的个数及每个虚拟映射区的大小,使得该虚拟映射区在最差的情况下仍然能够正常运行而不明显影响性能,例如,将128K的代码运行空间划分为一个116K的代码常驻区和一个12K的代码虚拟内存映射区,该12K的代码虚拟内存映射区划分为4K的虚拟代码映射区1、4K的虚拟代码映射区2、2K的虚拟代码映射区3、2K的虚拟代码映射区4。在确定该获取到的切换代码段的文件大小后,该代码段控制模块检测各代码虚拟内存映射区内存空间的大小,确定与该切换代码段的文件大小相适应的代码虚拟内存映射区。例如,2K的Main()入口初始化模块对应的是2K或者4K的虚拟映射区,优选2K的虚拟映射区,在该2K的虚拟映射区被占用后,则选择4K的虚拟映射区。
所述创建模块70,用于创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。
在确定当前代码运行阶段的切换代码段对应的代码虚拟内存映射区后,则控制该代码段控制模块创建该切换代码段与对应的代码虚拟内存映射区的映射关系。例如,在FTL管理算法程序运行到上电阶段时,控制CodeSegReload()模块获取文件大小为4K的SATAInit()代码段,在该CodeSegReload()模块检测是否存在空的内存空间为4K的代码虚拟内存映射区中,如果存在,则立即创建该SATAInit()代码段与该代码虚拟内存映射区的映射关系,若不存在,则在释放某个4K的代码虚拟内存映射区中切换代码段后,在创建该SATAInit()代码段与该代码虚拟内存映射区的映射关系。在创建了该切换代码段与该切换代码段对应的代码虚拟内存映射区的映射关系后,根据该映射关系将该切换代码段获取到与该切换代码段对应的代码虚拟内存映射区中,使得该切换代码段能在该代码虚拟内存映射区中正常运行。
本实施例通过基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小,根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区,创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。由于将该管理算法各个运行阶段所运行的切换代码片段都分离出来,存储在NandFlash闪存存储器中,在确定管理算法当前的运行阶段后,控制该代码段控制模块从该NandFlash闪存存储器一次性获取该运行阶段所需的切换代码段,每一切换代码段会对应多个代码虚拟内存映射区,使得该切换代码段基于该映射关系能在对应的代码虚拟内存映射区中正常运行,因此减少了该切换代码段的加载和切换次数,从而提高了存储器对数据的处理性能。
进一步的,基于上述第二实施例,提出本发明多分区虚拟内存的映射控制装置的第三实施例,在本实施例中,参照图8,所述装置还包括:识别模块80、保存模块90。
所述识别模块80,用于识别代码各运行阶段所用的切换代码段;
在本实施例中,在对该管理算法程序开发完成后,对该管理算法程序进行代码段定位,并给各代码段分配都一个虚拟地址,该管理算法程序虚拟地址的顺序运行。该存储器调用代码段控制模块识别该管理算法各运行阶段所用到切换代码段,并且识别该代码各个运行阶段所用的切换代码段在运行过程中出现异常时必须用到的处理异常情况的切换代码片段,即在识别该管理算法各运行阶段所用到的切换代码段时,首先需要确保各运行阶段出现异常时必须用到的代码片段。例如,在逻辑数据回收时,该回收过程中发生Ecc fail纠错警报,需要Readretry读重试处理或Read Reclaim读回收处理,且需进行坏块替换,则必须用到的BlockRecy物理块的逻辑回收模块、BadBlockCtrl坏块替换管理模块、ReclaimCtl读回收处理模块和ReadRetry读重试处理模块等切换代码端作为预设切换代码段。
需要说明的是,在识别时,同一代码虚拟内存映射区的切换代码段不能在同一运行阶段出现。
所述保存模块90,用于将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址。
在划分该管理算法的切换代码段的文件大小后,将该划分后的所有切换代码段保存在存储器中,如NandFlash闪存存储器中,并给各切换代码段分配存储地址,使得该代码段控制模块根据该存储地址从该存储器中获取该切换代码段。例如,将上电阶段所用的切换代码段SATAInit()、HALInit()NandFlash操作相关的底层驱动硬件初始化模块、Main()入口初始化函数、FTLTa1Init()FTL初级算法表搜索模块(第一次运行FTL算法时需执行)保存到NandFlash闪存存储器中,并给各代码段分配一个存储地址,如SATA Init()代码段的存储地址位0x1000,在CodeSegeReload模块找到0x1000后,获取该0x1000对应的SATA Init()代码段。
本实施例通过识别代码各运行阶段所用的切换代码段,将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址,使得在某个运行阶段所用的切换代码片段能够一次性准备好,避免频繁切换和加载该切换代码片段,从而提高了存储器对数据的处理性能。
进一步的,基于上述第二实施例,提出本发明多分区虚拟内存的映射控制装置的第四实施例,在本实施例中,参照图9,所述装置还包括:配置模块100。
所述配置模块100,用于配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置。
在本实施例中,在编译完成需要执行的代码后,预计代码各个运行阶段中所执行的切换代码片段个数的最大值,该存储器根据该最大值配置代码虚拟内存映射区,并预留在运行该切换代码片段个数为最大值的阶段时,出现异常时所需的代码虚拟内存映射区。预计代码各运行阶段所用到的切换代码段的文件大小划分代码虚拟内存映射区的内存大小,并根据预设切换代码段的大小确定代码虚拟内存映射区预留的内存大小。例如,一个12K的代码虚拟内存映射区划分为4K的虚拟代码映射区1、4K的虚拟代码映射区2、2K的虚拟代码映射区3、2K的虚拟代码映射区4。
本实施例通过配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置,使得该管理算法在出现异常的情况下仍能够正常运行。
进一步的,基于上述任一实施例,提出本发明多分区虚拟内存的映射控制装置的第五实施例,在本实施例中,参照图10,所述创建模块70包括确定单元71、创建单元72。
所述确定单元71,用于确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址;
在本实施例中,控制代码段控制模块从存储器获取当前运行阶段需要的切换代码片段,并获取该切换代码片段对应的代码虚拟地址,在确定该切换代码片段的文件大小后,确定与该切换代码片段的文件大小相对应代码虚拟内存映射区,并获取该代码虚拟内存映射区的物理地址。
所述创建单元72,用于根据所述代码虚拟地址和所述物理地址创建所述映射关系。
在确定切换代码段的代码虚拟地址和对应的代码虚拟内存映射区的物理地址,控制该代码段控制模块基于该代码虚拟地址和物理地址创建映射关系,使得该切换代码片段能够在该代码虚拟内存映射区中正常的运行。
本实施例通过确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址,根据所述代码虚拟地址和所述物理地址创建所述映射关系。由于一个切换代码段能与多个相适应的代码虚拟内存映射区进行映射,因此对于出现共用代码虚拟内存映射区的当前阶段运行的切换代码和非当前阶段运行的切换代码时,将将当前阶段运行的切换代码映射到另一个相适应的代码虚拟内存映射区中,从而不需再次重新加载该切换代码,提高了存储器的数据处理性能。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种多分区虚拟内存的映射控制方法,其特征在于,应用于存储器代码虚拟内存映射区,所述方法包括以下步骤:
S10,在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;
S20,判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行;
S30,若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区,返回步骤S10、S20,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行;
S40,若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。
2.如权利要求1所述的多分区虚拟内存的映射控制方法,其特征在于,所述在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段的步骤之前还包括:
基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小;
根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区;
创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。
3.如权利要求2所述的多分区虚拟内存的映射控制方法,其特征在于,所述基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小的步骤之前还包括:
识别代码各运行阶段所用的切换代码段;
将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址。
4.如权利要求2所述的多分区虚拟内存的映射控制方法,其特征在于,所述基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小的步骤之前还包括:
配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置。
5.如权利要求2所述的多分区虚拟内存的映射控制方法,其特征在于,所述创建当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系的步骤包括:
确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址;
根据所述代码虚拟地址和所述物理地址创建所述映射关系。
6.一种多分区虚拟内存的映射控制装置,其特征在于,应用于存储器代码虚拟内存映射区,所述装置包括:
第一确定模块,用于在存储器的当前代码运行阶段,且在所述当前代码运行阶段的切换代码段加载至对应的代码虚拟内存映射区前,确定所述代码虚拟内存映射区在上一代码运行阶段运行的切换代码段;
判断模块,用于判断所述上一代码阶运行段运行的切换代码段是否在所述当前代码运行阶段的下一代码运行阶段再次在所述代码虚拟内存映射区中运行;
保留模块,用于若是,则保留所述上一代码运行阶段运行的切换代码段,且选择另一对应的所述代码虚拟内存映射区,调用所述第一确定模块、所述判断模块,直至所述当前代码运行阶段的切换代码段成功加载至所述代码虚拟内存映射区中运行;
加载模块,用于若否,则将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区中运行。
7.如权利要求6所述的多分区虚拟内存的映射控制装置,其特征在于,所述装置还包括:
获取模块,用于基于代码段控制模块从所述存储器中获取所述当前代码运行阶段的切换代码段,并检测所述当前代码运行阶段的切换代码段的文件大小;
第二确定模块,用于根据所述当前代码运行阶段的切换代码段的文件大小确定所述切换代码段可加载的代码虚拟内存映射区;
创建模块,用于创建所述当前代码运行阶段的切换代码段与其可加载的代码虚拟内存映射区的映射关系,以供所述代码段控制模块根据所述映射关系将所述当前代码运行阶段的切换代码段加载至所述代码虚拟内存映射区。
8.如权利要求7所述的多分区虚拟内存的映射控制装置,其特征在于,所述装置还包括:
识别模块,用于识别代码各运行阶段所用的切换代码段;
保存模块,用于将识别后的各所述切换代码段保存到所述存储器中,并给各所述切换代码段分配存储地址。
9.如权利要求7所述的多分区虚拟内存的映射控制装置,其特征在于,所述装置还包括:
配置模块,用于配置所述代码各运行阶段所需的代码虚拟内存映射区,并预留在加载所述代码各运行阶段的切换代码段出现异常时所需的代码虚拟内存映射区,所述代码虚拟内存映射区的内存大小根据检测的所述代码各运行阶段所用的切换代码段的文件大小相应配置。
10.如权利要求7所述的多分区虚拟内存的映射控制装置,其特征在于,所述创建模块包括:
确定单元,用于确定所述当前代码运行阶段的切换代码段的代码虚拟地址和所述当前代码运行阶段的切换代码段可加载的代码虚拟内存映射区的物理地址;
创建单元,用于根据所述代码虚拟地址和所述物理地址创建所述映射关系。
CN201610203283.9A 2016-04-01 2016-04-01 多分区虚拟内存的映射控制方法及装置 Active CN105808322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610203283.9A CN105808322B (zh) 2016-04-01 2016-04-01 多分区虚拟内存的映射控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610203283.9A CN105808322B (zh) 2016-04-01 2016-04-01 多分区虚拟内存的映射控制方法及装置

Publications (2)

Publication Number Publication Date
CN105808322A CN105808322A (zh) 2016-07-27
CN105808322B true CN105808322B (zh) 2019-05-03

Family

ID=56459520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610203283.9A Active CN105808322B (zh) 2016-04-01 2016-04-01 多分区虚拟内存的映射控制方法及装置

Country Status (1)

Country Link
CN (1) CN105808322B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339250B (zh) * 2016-08-19 2019-09-27 郭笃刚 一种计算机虚拟内存的管理方法
CN113778936A (zh) * 2021-08-17 2021-12-10 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 国产嵌入式dsp操作系统的性能优化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902459A (zh) * 2012-12-25 2014-07-02 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
CN104572501A (zh) * 2015-01-08 2015-04-29 北京航空航天大学 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726404B2 (en) * 2011-11-14 2014-05-13 Intel Corporation Regulating access to and protecting portions of applications of virtual machines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902459A (zh) * 2012-12-25 2014-07-02 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
CN104572501A (zh) * 2015-01-08 2015-04-29 北京航空航天大学 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法

Also Published As

Publication number Publication date
CN105808322A (zh) 2016-07-27

Similar Documents

Publication Publication Date Title
US8205070B2 (en) Device bootup from a NAND-type non-volatile memory
US8732413B2 (en) Method and system for preloading page using control flow
KR101494051B1 (ko) 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터
US20060080365A1 (en) Transparent migration of files among various types of storage volumes based on file access properties
CN102460384A (zh) 程序、控制方法以及控制装置
CN103164346A (zh) Lba位图使用
US20090049270A1 (en) System and method for using a memory mapping function to map memory defects
US20100185804A1 (en) Information processing device that accesses memory, processor and memory management method
CN101261567B (zh) 管理数据存储的系统和方法
US9495286B2 (en) Method and arrangement for completion or recovery of data transactions in a flash type memory device using a commit process
EP2026356A2 (en) Method for creating a memory defect map and optimizing performance using the memory defect map
CN105868122A (zh) 快闪存储设备的数据处理方法及装置
CN106648463B (zh) Nand Flash块管理方法和系统
KR20110001883A (ko) 리맵핑된 메모리 장치를 어드레스하기 위한 비트 에러 임계값 및 콘텐트 어드레서블 메모리
US9411719B2 (en) Memory system including nonvolatile and volatile memory and operating method thereof
CN102135927A (zh) 一种基于nand flash的系统引导方法和装置
CN103207772B (zh) 一种优化实时任务wcet的指令预取内容选取方法
CN101154185A (zh) 软件运行时执行恢复与重放方法
CN103744628A (zh) SSTable文件存储方法及装置
CN105808322B (zh) 多分区虚拟内存的映射控制方法及装置
CN110781026A (zh) 嵌入式设备数据存储与修复方法、装置和嵌入式设备
CN109918234A (zh) 一种基于ssd的元数据恢复方法、装置、设备及介质
KR101551206B1 (ko) 차량 데이터 제어 시스템 및 제어 방법
CN103365926A (zh) 在文件系统中用于保存快照的方法和装置
CN108733517A (zh) Ssd固件升级保护方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Units 05-2 and 06-08, 6th floor, Changhong Science and Technology Building, 18 Science and Technology South 12 Road, Shenzhen City, Shenzhen City, Guangdong Province, 518057

Patentee after: Shenzhen SiliconGo Semiconductor Co., Ltd.

Address before: Units 05-2 and 06-08, 6th floor, Changhong Science and Technology Building, 18 Science and Technology South 12 Road, Nanshan District, Shenzhen City, Guangdong Province, 518000

Patentee before: SILICONGO MICROELECTRONICS CO., LTD.