CN106339182A - 存储器管理方法和装置 - Google Patents
存储器管理方法和装置 Download PDFInfo
- Publication number
- CN106339182A CN106339182A CN201610734282.7A CN201610734282A CN106339182A CN 106339182 A CN106339182 A CN 106339182A CN 201610734282 A CN201610734282 A CN 201610734282A CN 106339182 A CN106339182 A CN 106339182A
- Authority
- CN
- China
- Prior art keywords
- data feedback
- feedback channel
- module
- application layer
- channel
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种存储器管理方法和装置。其中方法包括:将内核层中的nftl模块设置于应用层中;对已设置于应用层中的nftl模块设置一个应用层信息服务接口;调用应用层信息服务接口执行存储器的管理操作。上述方法解决linux nand driver的开发、调试与维护效率低的问题;同时,可以选择更多的语言来开发nand driver,使开发工作更多样,更灵活且具有易用性。
Description
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种存储器管理方法和装置。
背景技术
在Linux中,传统的nftl设计架构通过将nftl设置在kernel中,实现MTD设备的存取数据操作。但现有技术中,将nftl设置在kernel中,由于kernel的限制,开发新功能和升级驱动都较为困难,且开发稳定的驱动实现的周期长;调试和维护的效率较低;只能使用单一的C语言编写代码,编译灵活度受到限制。
发明内容
基于此,有必要提供一种灵活、高效、通用且可扩展的nftl设计方式的存储器管理方法和装置。
为达到发明目的,提供一种存储器管理方法,所述方法包括:将内核层中的nftl模块设置于应用层中;对已设置于所述应用层中的所述nftl模块设置一个应用层信息服务接口;调用所述应用层信息服务接口执行存储器的管理操作。
在其中一个实施例中,所述对已设置于所述应用层中的所述nftl模块设置一个应用层信息服务接口包括:在所述应用层信息服务接口内设置一个上行通道与一个下行通道;所述上行通道用于实现所述nftl模块与nand块设备层通信的通道;所述下行通道为建立处于所述应用层中的所述nftl模块与nand物理层进行通信的通道;其中,所述上行通道包括第一上行通道和第二上行通道,所述第一上行通道为设置于应用层中的上行通道,所述第二上行通道为设置于kernel层中的上行通道;所述下行通道包括第一下行通道和第二下行通道,所述第一下行通道为设置于应用层中的下行通道,所述第二下行通道为设置于kernel层中的下行通道。
在其中一个实施例中,对所述下行通道进行设置的方式包括:通过ioctl函数实现控制流的操作,且所述控制流用于对所述下行通道与所述上行通道建立连接;以及通过mmap函数实现数据流的操作,且所述数据流用于向所述nand物理层进行读数据和写数据操作。
在其中一个实施例中,还包括:在第一上行通道中建立多个守护线程;将所述多个守护线程与所述nftl模块支持的多个分区进行绑定连接,其中,所述守护线程与所述分区为一一对应关系。
在其中一个实施例中,还包括:在所述第二上行通道处设置nand上行通道代理,用于接收所述nand块设备层发送的io请求,并调用所述第二上行通道提供的预设程序接口;以及在所述第二下行通道处设置nand下行通道代理,用于接收nand控制层的连接指令与所述nand物理层的读和写数据,并调用所述第二下行通道提供的预设程序接口。
在其中一个实施例中,所述调用所述应用层信息服务接口执行存储器的管理操作包括:所述第一上行通道通过读程序读取所述第二上行通道的io请求;所述nand上行通道代理接收到所述nand块设备层发送的io请求后,调用所述第二上行通道提供的所述预设程序接口在所述第二上行通道中生成io请求,并启动所述第一上行通道的读程序对应的守护线程;所述第一上行通道的读程序将生成的所述io请求中的数据发送至所述应用层中;所述第一上行通道调用回调函数,并在所述nftl模块中执行所述回调函数;当所述回调函数执行完成后,所述第一上行通道通过写程序将所述回调函数执行结果发送至所述第二上行通道,并启动执行请求程序对应的线程;所述执行请求程序将所述回调函数执行结果发送至所述nand上行通道代理,并由所述nand上行通道代理反馈至所述nand块设备层。
基于同一构思还提供一种存储器管理装置,所述装置包括:设置模块,用于内核层中的nftl模块设置于应用层中;接口设置模块,用于对已设置于所述应用层中的所述nftl模块设置一个应用层信息服务接口;调用模块,用于调用所述应用层信息服务接口执行存储器的管理操作。
在其中一个实施例中,所述接口设置模块具体包括:通道设置模块,用于在所述应用层信息服务接口内设置一个上行通道与一个下行通道;所述上行通道为建立处于所述应用层中的所述nftl模块与nand块设备层进行通信的通道;所述下行通道为建立处于所述应用层中的所述nftl模块与nand物理层进行通信的通道。
在其中一个实施例中,所述调用模块具体包括:请求读取模块,用于第一上行通道通过读程序读取第二上行通道的io请求;请求生成模块,用于nand上行通道代理接收到nand块设备层发送的所述io请求后,调用所述第二上行通道提供的预设程序接口在所述第二上行通道中生成io请求;第一启动模块,用于启动所述第一上行通道的读程序对应的守护线程;第一发送模块,用于所述第一上行通道的读程序将生成的所述io请求中的数据发送至所述应用层中;执行模块,用于所述第一上通道调用回调函数,并在所述nftl模块中执行所述回调函数;第二发送模块,用于当所述回调函数执行完成后,所述第一上行通道通过写程序将所述回调函数执行结果发送至所述第二上行通道;第二启动模块,用于启动执行请求程序对应的线程;第三发送模块,用于所述执行请求程序将所述回调函数执行结果发送至所述nand上行通道代理;反馈模块,用于由所述nand上行通道代理反馈至所述nand块设备层。
本发明的有益效果包括:上述存储器管理方法和装置,将内核层中的nftl模块设置于应用层中;对已设置于应用层中的所述nftl模块设置一个应用层信息服务接口;调用应用层信息服务接口执行存储器的管理操作。上述方法解决linux nand driver的开发、调试与维护效率低的问题;同时,可以选择更多的语言来开发nand driver,使开发工作更多样,更灵活且具有易用性。
附图说明
图1是现有技术中nftl的设计架构示意图;
图2是一个实施例中存储器管理方法的流程示意图;
图3是一个实施例中存储器管理方法中建立上行通道与下行通道数据传输的流程示意图;
图4是一个实施例中存储器管理方法中数据传输的模块化示例图;
图5是另一个实施例中存储器管理方法中数据传输的模块化示例图;
图6是一个实施例中存储器管理方法抽象成生产者与消费者的模型示意图;
图7是一个实施例中存储器管理方法抽象成生产者与消费者后应用层中消费者的执行流程示意图;
图8是一个实施例中存储器管理方法的示例流程示意图;
图9是一个实施例中存储器管理方法的示例中下行通道操作步骤的示意图;
图10是多分区下存储器管理方法的流程示意图;
图11是一个实施例中存储器管理装置的结构示意图;
图12是一个实施例中存储器管理装置中接口设置模块的结构示意图;以及
图13是一个实施例中存储器管理装置中调用模块的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚明白,以下结合附图及实施例对本发明存储器管理方法和装置进行进一步详细说明。应该理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,在Linux中,传统的nftl(nand flash translation layer,nandflash转换层)架构为图1所示的设计架构。其中,nand flash是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。nand flash具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,例如,嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。
具体的,nand块设备层、nftl层和nand物理驱动层为三个层次存在于内核中,组成了nand驱动。其中,nftl是nand flash芯片上的一个虚拟块设备,它必须被配置使用一个磁盘形式的文件系统,例如,图1中的FAT32或ext4,通过MTD原始设备进行数据的存取。可以理解的是,nftl层涉及到的相关算法与管理策略是整个nand驱动的关键,直接影响了整个nand驱动的稳定性、使用寿命和性能。
由于目前市场上有多个nftl厂商,其对nftl的设计方案也各不相同。优化良好的nftl方案在技术市场中具有很大的竞争优势。所以,本发明提出的nand flash设备管理的方法使得nftl驱动的开发与调试变得更灵活,同时,也便于优化出更快捷的算法。
由于应用层运行的程序,容易开发、调试和维护,本发明提供的一种nand flash设备管理方法是将内核的nftl模块程序转移到应用层运行。实现了将数据结构与数据进行分离,但其实现的功能不变,只是运行的空间转变到更加灵活、适用的应用层的目的。
在一个实施例中,如图2所示,提供了一种存储器管理方法,该方法包括以下步骤:
步骤S200,将内核层中的nftl模块设置于应用层中。
需要说明的是,本发明是将原kernel层中的nftl模块转移设置于应用层中,基于上述原理,也可以将具有更加高效、精确的内核模块通过转移设置在应用层中,这样更有利于程序的管理以及算法的及时有效的更新操作的完成。
步骤S400,对已设置于应用层中的nftl模块设置一个应用层信息服务接口。需要说明的是,应用层信息服务接口还可以用数据库、通用的应用程序接口进行替代,这样应用层信息服务接口不仅可为nand驱动服务,同时,还可以提供给linux内核模块进行更加充分的使用。其中,应用层信息服务接口为具有高效、灵活、通用可扩展的通用接口
步骤S600,调用应用层信息服务接口执行存储器的管理操作。本实施例提供的存储器管理方法,通过将内核层中的nftl模块设置于应用层中;对已设置于应用层中的nftl模块设置一个应用层信息服务接口;调用应用层信息服务接口实现存储器的管理操作。上述存储器管理方法将内nand flash驱动的关键核心核nftl模块转移到应用层中,使得nftl所管理的数据与数据结构相分离,其中,数据结构在应用层进行管理,数据则在内核层进行管理,这样不仅能够提高数据的处理性能,同时,能够提高程序的开发、调试和维护的效率;且还可以选择更多的语言来开发上述程序,以满足不同的需求,具有灵活性与适用性。
需要进一步说明的是,在一个实施例中,步骤S400中,对已设置于应用层中的nftl模块设置一个应用层信息服务接口的步骤具体包括:在应用层信息服务接口内建立一个上行通道与一个下行通道;其中,上行通道为建立处于应用层中的所述nftl模块与nand块设备层进行通信的通道;下行通道为建立处于应用层中的nftl模块与nand物理层进行通信的通道。由此,提高了传输数据从上行与下行通道准确传输的易用性。
其中,下行通道进行设置的方式包括:第一种设置方式为通过ioctl函数实现控制流的操作,且控制流用于对下行通道与上行通道建立连接,可以理解的是,对下行通道与上行通道建立连接的过程类似usb枚举的过程,即usb中任何设备在使用前都可以利用地址为0的控制管道通信来进行枚举,并且保证同一时刻最多只有一个设备在进行枚举的执行;而应用层信息服务系统接口中任何对象,这里包含但不限于文件系统、分区或者nftl中的其他设备,都可以利用下行通道中的ioctl函数实现控制流操作与上行通道建立连接,并且保证同一时刻最多只有一个对象进行建立连接的操作;第二种设置方式为通过mmap函数实现数据流的操作,且数据流用于向nand物理层进行读数据和写数据操作。由此,提高了数据调用的准确性。
此外,上行通道被设置于应用层中的部分为应用层中的上行通道,即为第一上行通道;上行通道被设置于kernel层中的部分为kernel层中的上行通道,即为第二上行通道;下行通道被设置于应用层中的部分为应用层中的下行通道,即为第一下行通道;下行通道被设置于kernel层中的部分为kernel层中的下行通道,即为第二下行通道。由此,通过应用层与内核层上行通道与下行通道的准确划分为后续的数据传输准确提供了基础,具有适用性。
需要说明的是,在第一上行通道中建立多个守护线程;将多个守护线程与nftl模块支持的多个分区进行绑定连接;其中,守护线程与分区为一一对应关系。由此,提高了上行通道通过守护线程与多分区进行绑定连接的准确性。
此外,在一个实施例中,在第二上行通道处设置nand上行通道代理,用于接收nand块设备层发送的io请求,并调用第二上行通道提供的预设程序接口;以及在第二下行通道处设置nand下行通道代理,用于接收nand控制层的连接指令与nand物理层的读和写数据,并调用第二下行通道提供的预设程序接口。
需要进一步说明的是,在一个实施例中,如图3所示,步骤S600中,调用应用层信息服务接口执行存储器的管理操作包括:
步骤S601,第一上行通道通过读程序读取第二上行通道的io请求。
步骤S602,nand上行通道代理接收到nand块设备层发送的io请求后,调用第二上行通道提供的预设程序接口在第二上行通道中生成io请求,并启动第一上行通道的读程序对应的守护线程。
步骤S603,第一上行通道的读程序将生成的io请求中的数据发送至应用层中。
步骤S604,第一上行通道调用回调函数,并在nftl模块中执行回调函数。
步骤S605,当回调函数执行完成后,第一上行通道通过写程序将回调函数执行结果发送至第二上行通道,并启动执行请求程序对应的线程。
步骤S606,执行请求程序将回调函数执行结果发送至nand上行通道代理,并由nand上行通道代理反馈至nand块设备层。
为了更好地理解与应用提出的存储器管理方法,进行以下示例,需要说明的是,本发明保护范围不局限于以下示例。
在kernel中,nftl模块是处在nand块设备层之下的,直接由nand块设备层调用nftl层提供的应用程序接口来执行通信。但是nftl模块设置到应用层后,其与块设备层的通信就需要通过ALIS(Application Layer Information Service,应用层信息服务)接口设置两个通道来使nftl模块能够方便地与nand驱动的kernel层部分通信。如图4所示,其中,kalis_up表示内核层的上行通道;ualis_up表示应用层的上行通道;kalis_down表示内核层的下行通道;ualis_down表示应用层的下行通道。
需要进一步说明的是,如图5所示,kalis_up与ualis_up共同组成了上行通道,且上行通道是由一个在nftl层建立的守护线程来维持运行的。其中,在linux操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。
为了更加抽象地理解上行通道的概念,我们可以将上行通道描述成是一个生成者与消费者的关系。如图6所示,从nand块设备层传递过来的io请求,经过nand上行通道代理后,会调用kalis_up提供的应用程序接口来封装成应用层信息服务接口内部请求,即上述为应用层信息服务接口内部请求的生产者。其中,应用层信息服务接口的上行通道的生产者和消费者是处于不同的进程中的。消费者是由应用层的上行通道建立的守护线程来执行操作;生产者是由内核层的应用层的上行通道执行请求线程执行操作。io请求可视为产品,其由nand块设备层提供的,且最终都会发送至应用层的上行通道执行请求线程进行操作,经过内核层的上行通道传递至应用层的上行通道去进行消费执行。
其中,由于nftl是在应用层运行的,其上行通道的接口为ualis_up,且上行通道是由一个在nftl层建立的守护线程来维持运行的。
需要进一步说明的是,如图7所示,通过这个死循环程序,不停的从内核的kalis_up中读取请求,然后执行这个请求,并将请求执行的结果返回给kalis_up,这就是消费者。在应用层中运行的这个死循环程序ualis_up并不是使用查询方式来与内核中的kalis_up通信的,而是使用等待队列的机制通信。通过,等待队列的机制通信使得进程等待某一特定事件的发生,无需频繁的轮询,进程在等待周期中睡眠,当时间发生后由内核自动唤醒。由此,不会在应用层与内核层传递数据时,使得性能有巨大的损耗。
具体的,如图8所示,存储器管理方法n的示例流程示意图。
步骤S801,ualis_up通过read系统调用进入内核进而调用到对应的接口alis_up_read主动读取kalis_up内的请求;其中,如果kalis_up内部无请求,则ualis_up所在守护线程睡眠,等待请求的产生;否则,读取请求到ualis_up中去。
步骤S802,Nand上行通道代理收到nand块设备层传递过来的io请求后,调用kalis_up提供的应用程序接口(alis_up_do_req)在kalis_up中生成请求并唤醒之前ualis_up读时睡眠的守护线程。
步骤S803,alis_up_do_req所在线程睡眠,等待被ualis_up读取的请求执行完成。
步骤S804,alis_up_read所在线程被唤醒后,将请求中的数据拷贝或者共享到应用空间中去。
步骤S805,ualis_up调用执行请求回调函数。其中,回调函数为建立上行通道连接时被进行赋值与设置的,应用层的上行通道对请求的内容与执行过程不进行执行操作,请求的解析与执行都是由回调函数执行完成,且回调函数也正是nftl模块中的核心函数。
步骤S806,回调函数执行完成后,ualis_up会依次调用write系统,以及最终对应的alis_up_write接口将请求的执行结果返回给kalis_up,并唤醒睡眠的alis_up_do_req所在线程。
步骤S807,alis_up_do_req所在线程被唤醒后,将请求的执行结果返回给nand上行通道代理,最终请求执行结果会返回到nand块设备层。
通过上述步骤S801-步骤S807,针对一个请求的执行从由nand块设备层产生到nand块设备层接收到此请求的执行结果而完成。需要说明的是,步骤S801-步骤S807中为了描述的便捷性,我们使数据流带有了明确的传递方向而分开进行说明的。其中,步骤S801-步骤S807描述的alis_up_read和alis_up_write也可以用alis_up_mmap代替。
此外,在步骤S805中,ualis_up调用执行请求回调函数,这个回调函数的具体执行是由nftl层控制的,但会将最终的io请求以及相关的数据传递到nand flash中的nand物理层中。其中,nftl层与nand物理层的通信是通过应用层信息服务接口的下行通道来执行的。有关应用层信息服务接口的具体结构如图9所示。
其中,本实施例中,应用层信息服务接口的下行通道的设置方式有两种。第一种设置方式为通过ioctl函数实现控制流的操作,且控制流用于对下行通道与上行通道建立连接,绑定图6中的生产者和消费者。此外,通过建立连续关系,应用层信息服务接口同时可以被其他模块程序使用。由此,提高了nftl层的灵活性与易用性。
更进一步地,由于nftl是支持多分区的,并且整个nand驱动是支持多nftl的。需要说明的是,当由nand块设备层发出多个请求时,首先设置应用层信息服务接口的上行通道的连接,连接的设置保障了消费者只能消费处于相同连续关系下的生成者产生的产品请求。
如图10所示,如果想以分区为单位来提供请求服务时,生产者就会有多个,这样我们就必须在应用层的上行通道中建立多个消费者,即多个守护线程与之对应,每个守护线程对应一个生产者,即分区。其中,生产者与消费者在进行数据通信前必须先绑定,以确定连接关系。同样的,如果以nftl为服务单位来提供请求服务时,如果有多个需要nftl进行管理,也要设置多个应用层信息服务接口的上行通道的连接。只有设置了应用层信息服务接口的上行通道连接后,这个连接才可以使用应用层信息服务接口的上行通道进行通信,这样才会使得连接的消费者只会消费本连接的生产者的产品,而不会消费别的连接的产品。
上述存储器管理方法,首先将内核层中的nftl模块设置于应用层中;对已设置于应用层中的nftl模块设置一个应用层信息服务接口;调用应用层信息服务接口执行存储器的管理操作。上述存储器管理方法将内nand flash驱动的关键核心核nftl模块转移到应用层中,这样能够提高程序的开发、调试和维护的效率;同时还可以选择更多的语言来开发上述程序,以满足不同的需求,具有灵活性与适用性。
基于同一发明构思,还提供一种存储器管理装置,由于此装置解决问题的原理与前述一种存储器管理方法相似,因此,该装置的实施可以按照前述方法的具体步骤实现,重复之处不再赘述。
如图11所示,为一个实施例中的一种存储器管理装置的结构示意图。该存储器管理装置10包括设置模块200、接口设置模块400和调用模块600。
其中,设置模块200用于将kernel层中的nftl模块设置于应用层中;接口设置模块400,用于对已设置于应用层中的所述nftl模块设置一个应用层信息服务接口;调用模块600,用于调用应用层信息服务接口执行存储器的管理操作。
本实施例中,如图12所示,接口设置模块400包括:通道设置模块410。用于在应用层信息服务接口内设置一个上行通道与一个下行通道;其中,上行通道为建立处于应用层中的nftl模块与nand块设备层进行通信的通道;下行通道为建立处于应用层中的nftl模块与nand物理层进行通信的通道。
此外,如图13所示,本实施例提供的一种存储器管理装置10中调用模块600具体包括:请求读取模块610、请求生成模块620、第一启动模块630、第一发送模块640、执行模块650、第二发送模块660、第二启动模块670、第三发送模块680和反馈模块690。
其中,请求读取模块610用于第一上行通道通过读程序读取第二上行通道的io请求;请求生成模块620用于nand上行通道代理接收到nand块设备层发送的io请求后,调用第二上行通道提供的预设程序接口在第二上行通道中生成io请求;第一启动模块630用于启动第一上行通道的读程序对应的守护线程;第一发送模块640用于第一上行通道的读程序将生成的io请求中的数据发送至应用层中;执行模块650用于第一上通道调用回调函数,并在nftl模块中执行回调函数;第二发送模块660用于当回调函数执行完成后,第一上行通道通过写程序将回调函数执行结果发送至第二上行通道;第二启动模块670用于启动执行请求程序对应的线程;第三发送模块680用于执行请求程序将回调函数执行结果发送至nand上行通道代理;反馈模块690用于由nand上行通道代理反馈至nand块设备层。
上述存储器管理装置,首先通过设置模块200将内核层中的nftl模块设置于应用层中;再通过接口设置模块400对已设置于应用层中的nftl模块设置一个应用层信息服务接口;最后通过调用模块600调用应用层信息服务接口执行存储器的管理操作。上述装置将内nand flash驱动的关键核心核nftl模块转移到应用层中,这样能够提高程序的开发、调试和维护的效率;同时还可以选择更多的语言来开发上述程序,以满足不同的需求,具有灵活性与适用性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种存储器管理方法,其特征在于,所述方法包括:
将内核层中的nftl模块设置于应用层中;
对已设置于所述应用层中的所述nftl模块设置一个应用层信息服务接口;
调用所述应用层信息服务接口执行存储器的管理操作。
2.根据权利要求1所述的存储器管理方法,其特征在于,所述对已设置于所述应用层中的所述nftl模块设置一个应用层信息服务接口包括:
在所述应用层信息服务接口内设置一个上行通道与一个下行通道;
所述上行通道用于实现所述nftl模块与nand块设备层通信的通道;
所述下行通道为建立处于所述应用层中的所述nftl模块与nand物理层进行通信的通道;
其中,所述上行通道包括第一上行通道和第二上行通道,所述第一上行通道为设置于应用层中的上行通道,所述第二上行通道为设置于kernel层中的上行通道;所述下行通道包括第一下行通道和第二下行通道,所述第一下行通道为设置于应用层中的下行通道,所述第二下行通道为设置于kernel层中的下行通道。
3.根据权利要求2所述的存储器管理方法,其特征在于,对所述下行通道进行设置的方式包括:
通过ioctl函数实现控制流的操作,且所述控制流用于对所述下行通道与所述上行通道建立连接;以及
通过mmap函数实现数据流的操作,且所述数据流用于向所述nand物理层进行读数据和写数据操作。
4.根据权利要求2所述的存储器管理方法,其特征在于,还包括:在第一上行通道中建立多个守护线程;
将所述多个守护线程与所述nftl模块支持的多个分区进行绑定连接,其中,所述守护线程与所述分区为一一对应关系。
5.根据权利要求2所述的存储器管理方法,其特征在于,还包括:在所述第二上行通道处设置nand上行通道代理,用于接收所述nand块设备层发送的io请求,并调用所述第二上行通道提供的预设程序接口;以及
在所述第二下行通道处设置nand下行通道代理,用于接收nand控制层的连接指令与所述nand物理层的读和写数据,并调用所述第二下行通道提供的预设程序接口。
6.根据权利要求1所述的存储器管理方法,其特征在于,所述调用所述应用层信息服务接口执行存储器的管理操作包括:
所述第一上行通道通过读程序读取所述第二上行通道的io请求;
所述nand上行通道代理接收到所述nand块设备层发送的io请求后,调用所述第二上行通道提供的所述预设程序接口在所述第二上行通道中生成io请求,并启动所述第一上行通道的读程序对应的守护线程;
所述第一上行通道的读程序将生成的所述io请求中的数据发送至所述应用层中;
所述第一上行通道调用回调函数,并在所述nftl模块中执行所述回调函数;
当所述回调函数执行完成后,所述第一上行通道通过写程序将所述回调函数执行结果发送至所述第二上行通道,并启动执行请求程序对应的线程;
所述执行请求程序将所述回调函数执行结果发送至所述nand上行通道代理,并由所述nand上行通道代理反馈至所述nand块设备层。
7.一种存储器管理装置,其特征在于,所述装置包括:
设置模块,用于内核层中的nftl模块设置于应用层中;
接口设置模块,用于对已设置于所述应用层中的所述nftl模块设置一个应用层信息服务接口;
调用模块,用于调用所述应用层信息服务接口执行存储器的管理操作。
8.根据权利要求7所述的存储器管理装置,其特征在于,所述接口设置模块具体包括:
通道设置模块,用于在所述应用层信息服务接口内设置一个上行通道与一个下行通道;
所述上行通道为建立处于所述应用层中的所述nftl模块与nand块设备层进行通信的通道;
所述下行通道为建立处于所述应用层中的所述nftl模块与nand物理层进行通信的通道。
9.根据权利要求7所述的存储器管理装置,其特征在于,所述调用模块具体包括:
请求读取模块,用于第一上行通道通过读程序读取第二上行通道的io请求;
请求生成模块,用于nand上行通道代理接收到nand块设备层发送的所述io请求后,调用所述第二上行通道提供的预设程序接口在所述第二上行通道中生成io请求;
第一启动模块,用于启动所述第一上行通道的读程序对应的守护线程;
第一发送模块,用于所述第一上行通道的读程序将生成的所述io请求中的数据发送至所述应用层中;
执行模块,用于所述第一上通道调用回调函数,并在所述nftl模块中执行所述回调函数;
第二发送模块,用于当所述回调函数执行完成后,所述第一上行通道通过写程序将所述回调函数执行结果发送至所述第二上行通道;
第二启动模块,用于启动执行请求程序对应的线程;
第三发送模块,用于所述执行请求程序将所述回调函数执行结果发送至所述nand上行通道代理;
反馈模块,用于由所述nand上行通道代理反馈至所述nand块设备层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610734282.7A CN106339182A (zh) | 2016-08-25 | 2016-08-25 | 存储器管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610734282.7A CN106339182A (zh) | 2016-08-25 | 2016-08-25 | 存储器管理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106339182A true CN106339182A (zh) | 2017-01-18 |
Family
ID=57822223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610734282.7A Pending CN106339182A (zh) | 2016-08-25 | 2016-08-25 | 存储器管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339182A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214213A (zh) * | 2020-10-27 | 2021-01-12 | 南方电网数字电网研究院有限公司 | Linux内核的开发和管理方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149759A1 (en) * | 2013-11-28 | 2015-05-28 | Kyocera Document Solutions Inc. | Electronic Device Including a Memory Technology Device |
CN105224474A (zh) * | 2014-06-03 | 2016-01-06 | 深圳市腾讯计算机系统有限公司 | 固态硬盘闪存转换层的实现系统和闪存转换层的实现装置 |
CN105353989A (zh) * | 2015-11-19 | 2016-02-24 | 华为技术有限公司 | 存储数据访问方法及相关的控制器、设备、主机和系统 |
CN106354486A (zh) * | 2016-08-08 | 2017-01-25 | 珠海全志科技股份有限公司 | nand flash设备管理的方法和系统 |
-
2016
- 2016-08-25 CN CN201610734282.7A patent/CN106339182A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149759A1 (en) * | 2013-11-28 | 2015-05-28 | Kyocera Document Solutions Inc. | Electronic Device Including a Memory Technology Device |
CN105224474A (zh) * | 2014-06-03 | 2016-01-06 | 深圳市腾讯计算机系统有限公司 | 固态硬盘闪存转换层的实现系统和闪存转换层的实现装置 |
CN105353989A (zh) * | 2015-11-19 | 2016-02-24 | 华为技术有限公司 | 存储数据访问方法及相关的控制器、设备、主机和系统 |
CN106354486A (zh) * | 2016-08-08 | 2017-01-25 | 珠海全志科技股份有限公司 | nand flash设备管理的方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214213A (zh) * | 2020-10-27 | 2021-01-12 | 南方电网数字电网研究院有限公司 | Linux内核的开发和管理方法、装置、计算机设备和存储介质 |
CN112214213B (zh) * | 2020-10-27 | 2023-10-20 | 南方电网数字电网科技(广东)有限公司 | Linux内核的开发和管理方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100561444C (zh) | 一种基于关键字驱动的自动测试方法及其测试系统 | |
CN103441900B (zh) | 集中式跨平台自动化测试系统及其控制方法 | |
EP3454210B1 (en) | Prescriptive analytics based activation timetable stack for cloud computing resource scheduling | |
CN102937918B (zh) | 一种hdfs运行时数据块平衡方法 | |
CN102279766B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN104935660B (zh) | 一种云程序开发运行系统、方法及装置 | |
CN103729235A (zh) | Java虚拟机的编译方法和Java虚拟机 | |
CN101241752A (zh) | 存储卡和包含所述存储卡的存储系统 | |
CN102789401B (zh) | 基于柔性测试技术的测试流程控制方法和装置 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN106445514A (zh) | 一种管理Android平台的Activity实例的方法和装置 | |
CN114490023B (zh) | 一种基于arm和fpga的高能物理可计算存储设备 | |
JP2015506519A (ja) | ユーザ生成によるデータセンターの省電力 | |
CN106354486B (zh) | nand flash设备管理的方法和系统 | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
JP5810918B2 (ja) | スケジューリング装置、スケジューリング方法及びプログラム | |
CN106339182A (zh) | 存储器管理方法和装置 | |
CN104731564A (zh) | 系统接口调用记录的生成方法和装置 | |
CN102402483A (zh) | 软件测试方法 | |
CN110427260A (zh) | 主机作业调度方法、装置及系统 | |
CN113986658B (zh) | 基于计算管理平台的计费方法、装置、设备和介质 | |
CN107817972A (zh) | 缓存代码处理方法、装置、存储介质及电子设备 | |
CN103198017B (zh) | 一种测试数据完整性保护的方法及装置 | |
CN110874344B (zh) | 数据迁移方法、装置及电子设备 | |
CN112669097A (zh) | 一种基于税务Ukey盘组的开票服务系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170118 |