发明内容
本发明要解决的主要技术问题是,提供一种存储设备访问方法、访问系统及存储设备访问管理器,提高当需要在多个存储设备之间频繁访问离散数据时的访问速度。
根据本发明的一方面,提供一种存储设备访问方法,包括:
检测运算设备中当前存在的存储设备;
为每个存储设备创建并运行一个访问请求缓冲模块,并为每个访问请求缓冲模块对应配置一个任务处理器;
创建记录有存储设备与访问请求缓冲模块对应关系的对应表;
接收存储设备访问请求,根据存储设备访问请求和对应表判断出该存储设备访问请求所对应的访问请求缓冲模块;
将存储设备访问请求发送给与其对应的访问请求缓冲模块;
各任务处理器分别从与其对应的访问请求缓冲模块中获取访问请求,并根据访问请求对与其对应的存储设备进行访问操作。
在一种实施例中,所述访问请求缓冲模块中储存有访问请求队列,所述存储设备访问请求被发送到与其对应的访问请求缓冲模块的访问请求队列中,各任务处理器分别从与其对应的访问请求缓冲模块中获取存储设备访问请求包括:
各任务处理器按照预定时间周期性对与其对应的访问请求缓冲模块进行查询;
如果访问请求缓冲模块中缓存有存储设备访问请求,则任务处理器从访问请求队列中依序获取访问请求;
如果访问请求缓冲模块中没有存储设备访问请求,则等待所述预定时间后再次对与其对应的访问请求缓冲模块进行查询。
在另一实施例中,各任务处理器根据访问请求对与其对应的存储设备进行访问操作后还包括:
完成访问操作的任务处理器将处理结果发送到预先建立的存储模块的完成队列中,并向存储设备访问请求产生方发送通知,以便存储设备访问请求产生方收到通知后从完成队列中取出处理结果。
本发明还公开一种存储设备访问管理器,包括:判断模块,用于检测运算设备中当前存在的存储设备,接收系统应用模块产生的存储设备访问请求,从存储设备访问请求中识别出目标存储设备,并按照目标存储设备分类发送存储设备访问请求;访问请求缓冲模块,所述访问请求缓冲模块与存储设备一一对应,并接收对应存储设备的存储设备访问请求;任务处理器,所述任务处理器与访问请求缓冲模块一一对应,所述各任务处理器分别从与其对应的访问请求缓冲模块中获取访问请求,并根据访问请求对与其对应的存储设备进行访问操作;对应表,记录有存储设备与访问请求缓冲模块的对应关系。
在一种实施例中,上述存储设备访问管理器还包括存储模块,所述存储模块中储存有完成队列,所述各任务处理器在完成访问后将处理结果发送到完成队列,并发出通知。
根据本发明的另一方面,还提供一种存储设备访问方法,包括:
系统应用模块根据访问指令产生存储设备访问请求,并将存储设备访问请求发送给上述的存储设备访问管理器;
系统应用模块发送存储设备访问请求后等待存储设备访问管理器的反馈通知;
当系统应用模块接收到存储设备访问管理器发送的反馈通知时,从存储设备访问管理器中读取访问结果,否则继续等待存储设备访问管理器的反馈通知。
本发明还提供一种存储设备访问管理器,包括判断模块,所述判断模块包括:检测子模块,用于检测运算设备中当前存在的存储设备;第一创建子模块,用于根据存储设备的数量为每个存储设备创建并运行一个访问请求缓冲模块,并为每个访问请求缓冲模块对应配置一个任务处理器,使各任务处理器分别从与其对应的访问请求缓冲模块中获取访问请求,并根据访问请求对与其对应的存储设备进行访问操作;第二创建子模块,用于创建记录有存储设备与访问请求缓冲模块对应关系的对应表;识别子模块,用于接收存储设备访问请求,从存储设备访问请求中识别出目标存储设备,并根据对应表判断出该目标存储设备对应的访问请求缓冲模块;访问请求分配子模块,将存储设备访问请求发送给与其目标存储设备对应的访问请求缓冲模块。
根据本发明的又一方面,还提供一种存储设备访问系统,包括:用于根据访问指令产生存储设备访问请求的系统应用模块;上述存储设备访问管理器,系统应用模块将存储设备访问请求发送给存储设备访问管理器处理。
本发明中,存储设备访问管理器针对每个逻辑磁盘分区均设置了独立的任务处理器,可同时运行多个线程来处理多个磁盘分区的访问请求,从而实现了多存储设备的并行访问,提高了存取速度及效率。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
首先对一些术语进行描述。
运算设备,指可执行计算机程序的各种处理设备,例如计算机、服务器以及各种可进行数据读取和存储的终端。
存储设备,运算设备上自身配置的硬盘,为操作方便,通常将硬盘分为几个逻辑磁盘分区,每个磁盘分区用一个逻辑盘符标识,一个磁盘分区即为一个存储设备。对于具有多个磁盘分区的运算设备,就具有多个存储设备。另外运算设备还可以通过各种接口接入可读写数据的磁盘,例如可移动硬盘或闪存盘,接入的移动硬盘上的每个逻辑磁盘分区被认为是一个存储设备,接入的每个闪存盘也被认为是一个存储设备。对于既有自身配置的硬盘,又有外接的磁盘时,该运算设备也具有多个存储设备。
本发明的构思是:针对每个存储设备都配置独立的访问请求缓冲模块和任务处理器,将对存储设备的访问请求发送到与该存储设备对应的访问请求缓冲模块,由任务处理器对各自对应的存储设备进行并行的访问任务处理。
为了更有效地管理和协调多个存储设备的访问请求,本实施例提供了一种存储设备访问管理器,请参考图1a,存储设备访问管理器10包括判断模块11、对应表12、访问请求缓冲模块13和任务处理器14。
判断模块11用于检测运算设备中当前存在的存储设备的数量,为每个具有逻辑盘符标识的存储设备创建并运行一个访问请求缓冲模块13,为访问请求缓冲模块13配置任务处理器14,并创建记录每个逻辑盘符与访问请求缓冲模块之间的对应关系的对应表12。判断模块11还接收系统应用模块100产生的存储设备访问请求200,从存储设备访问请求200中识别出目标存储设备,并按照目标存储设备分类发送存储设备访问请求,即将存储设备访问请求200按照目标存储设备分类,目标存储设备相同的存储设备访问请求200归为一类,因此可分成若干个类别的存储设备访问请求200a、200b、200c、200d等,每一类别的存储设备访问请求发送到与该类别的目标存储设备对应的访问请求缓冲模块中。
对应表12中记录有存储设备与访问请求缓冲模块的对应关系,具体可以是盘符与访问请求缓冲模块标识的对应关系。判断模块11接收到存储设备访问请求时,根据存储设备访问请求中的盘符查询对应表,得到该盘符对应的访问请求缓冲模块,即得到该类别的存储设备访问请求对应的访问请求缓冲模块。
访问请求缓冲模块13可以包括多个,例如包括访问请求缓冲模块13a、13b、13c、13d等,每个访问请求缓冲模块与一个存储设备一一对应,每个访问请求缓冲模块接收与其对应的存储设备访问请求,例如只将存储设备访问请求200a发送给访问请求缓冲模块13a,将存储设备访问请求200b发送给访问请求缓冲模块13b。在一种具体实例中,访问请求缓冲模块中储存有访问请求队列,所述存储设备访问请求被发送到与访问请求队列中,存储设备访问请求在访问请求队列中以先入先出的方式或按照设定的优先级顺序排列。
任务处理器14包括与访问请求缓冲模块13对应配置的任务处理器14a、14b、14c、14d。各任务处理器14a、14b、14c、14d分别从与其对应的访问请求缓冲模块13a、13b、13c、13d中获取访问请求,并根据访问请求对与其对应的存储设备300a、300b、300c、300d进行访问操作。
在如图1b所示的另一种实施例中,存储设备访问管理器10包括判断模块11、对应表12、访问请求缓冲模块13、任务处理器14和存储模块15,判断模块11、对应表12、访问请求缓冲模块13和任务处理器14可与图1a所示实施例中相同,存储模块15中储存有完成队列,任务处理器14中的任何一个在完成对与其对应的存储设备的访问后都将处理结果发送到存储模块15中的完成队列,并发送通知给系统应用模块100。系统应用模块100得到通知后从上述完成队列中取出处理结果。
上述实施例中,判断模块11的一种实现方案如图2所示,判断模块11包括检测子模块111、第一创建子模块112、第二创建子模块113、识别子模块114和访问请求分配子模块115。检测子模块111用于检测运算设备中当前存在的存储设备;第一创建子模块112用于根据存储设备的数量为每个存储设备创建并运行一个访问请求缓冲模块,并为每个访问请求缓冲模块对应配置一个任务处理器;第二创建子模块113用于创建记录有存储设备与访问请求缓冲模块对应关系的对应表;识别子模块114用于接收存储设备访问请求,从存储设备访问请求中识别出目标存储设备,并根据对应表12判断出该目标存储设备对应的访问请求缓冲模块,并通知访问请求分配子模块115;访问请求分配子模块115将存储设备访问请求发送给与其目标存储设备对应的访问请求缓冲模块13。
基于上述存储设备访问管理器,在一种实施例中,存储设备访问管理器执行以下程序,如图3a、3b所示。
如图3a所示,在启动存储设备访问管理器后,存储设备访问管理器执行以下步骤:
步骤31,存储设备访问管理器在启动后检测运算设备中当前存在的存储设备的数量,其检测的存储设备包括运算设备自身配置的所有的逻辑磁盘分区和已经接入的逻辑磁盘分区,从而得到存储设备的数量。
步骤32,然后存储设备访问管理器为每个存储设备创建并运行一个访问请求缓冲模块,并为每个访问请求缓冲模块对应配置一个任务处理器,并创建一个记录有存储设备与访问请求缓冲模块对应关系的对应表。从而使访问请求缓冲模块、任务处理器和存储设备形成一一对应的关系。存储设备访问管理器接收系统应用程序产生的存储设备访问请求,根据存储设备访问请求中的盘符得知目的存储设备,根据盘符查询对应表,判断出该存储设备访问请求所对应的访问请求缓冲模块。在一种具体实例中,访问请求缓冲模块中储存有访问请求队列,当存储设备访问管理器接收到存储设备访问请求时,处理流程如图4所示,当存储设备访问管理接收到存储设备访问请求时,识别出存储设备访问请求的盘符,选择对应的访问请求缓冲模块,然后将存储设备访问请求发送到对应的访问请求缓冲模块的访问请求队列中,存储设备访问请求被发送到访问请求缓冲模块时,按照设定的顺序排列在访问请求队列中等待处理,顺序排列为按照先入先出或按照设定的优先级顺序。
步骤33,各任务处理器分别从与其对应的访问请求缓冲模块中获取存储设备访问请求,在一种具体实例中,各任务处理器同时对与其对应的访问请求缓冲模块进行轮询检查,每个任务处理器的轮询检查每间隔设定时间执行一次。
步骤34,各任务处理器判断与其对应的访问请求缓冲模块中的访问请求队列是否缓存有存储设备访问请求,如果有,则执行步骤35,如果访问请求缓冲模块中没有存储设备访问请求,则执行步骤36,任务处理器等待设定时间(例如1毫秒或5毫秒)后再次对与其对应的访问请求缓冲模块进行查询。
步骤35,各任务处理器从各自对应的访问请求缓冲模块的访问请求队列中依序获取访问请求并进行并行处理。各任务处理器根据获取的访问请求中的盘符,对该盘符标识的目标存储设备进行访问,具体可以是将数据写入目标存储设备,也可以是从该目标存储设备中读出数据。
本实施例中,存储设备访问管理器针对每个逻辑磁盘分区均设置了独立的任务处理器,每个任务处理器只负责从一个队列中读取访问请求,也只负责一个存储设备的访问,不需要在不同的队列之间跳转,也不需要在不同的存储设备之间跳转,不但省去了跳转的时间,而且不同的任务处理器可同时运行,实现不同存储设备的并行访问,从而提高了存取速度及效率。
在另一种实施例中,存储设备访问管理器对存储设备访问请求的处理流程如图3b所示,在步骤35之后还包括以下步骤:
步骤37,当任何一个任务处理器完成访问操作后,都将处理结果发送到预先建立的存储模块的完成队列中,并向存储设备访问请求产生方发送通知。如果访问操作是数据写入,则将写入的结果(例如表示写入成功或失败的表述或表示写入时出现某种问题的表述)暂存到存储模块的完成队列中。如果访问操作是读取数据,则可以将读取的结果(例如表示读取成功或失败的表述或表示写入时出现某种问题的表述,和读出的数据)暂存到存储模块的完成队列中。
存储设备访问请求产生方收到通知后从完成队列中取出处理结果,存储设备访问请求产生方可以将处理结果向用户展示。
在一种实施例中,存储设备访问请求由系统应用程序产生,本申请中,系统应用程序也称为系统应用模块,系统应用程序对存储设备访问请求的处理流程如图5所示,包括以下步骤:
步骤51,系统应用模块根据访问指令产生存储设备访问请求。
步骤52,系统应用模块将存储设备访问请求发送给存储设备访问管理器,由存储设备访问管理器按照上述实施例对存储设备访问请求进行处理,对于存储设备访问管理器对访问结果没有反馈通知的情况,系统应用模块不再理会访问结果,当有用户发出访问指令时,继续执行步骤51。对于存储设备访问管理器对访问结果有反馈通知的情况,系统应用模块除了继续执行步骤51外,还执行以下步骤。
步骤53,等待存储设备访问管理器的反馈通知,当系统应用模块接收到存储设备访问管理器发送的反馈通知时,执行步骤54,否则继续等待存储设备访问管理器的反馈通知。
步骤54,系统应用模块从存储设备访问管理器中读取访问结果。
系统应用模块在将多个存储设备访问请求发送给存储设备访问管理器之后,会根据存储设备访问管理器的通知,从完成队列中依次取出处理结果。这样既能使系统应用模块得知访问请求处理结果,又能避免多个任务处理器一起将访问处理结果发送系统应用模块时带来数据冲突。
上述实施例中,存储设备访问管理器在启动时检测当前运算设备系统的逻辑磁盘分区数量,为适用于存储设备访问管理器在启动后又有外接磁盘接入的情况,可以在检测到有外接磁盘接入运算设备时,向存储设备访问管理器发送一新设备接入通知,存储设备访问管理器接收该通知后,为该新接入的磁盘创建并运行一访问请求缓冲模块和与该访问请求缓冲模块对应配置一任务处理器,并在对应表中增加新接入磁盘的盘符和访问请求缓冲模块的对应关系。
上述实施例中存储设备访问管理器、系统应用模块和其它模块中的任一都可编制成计算机可执行程序,该程序可被安装在运算设备或各种处理器中,通过执行可执行程序完成上述步骤。
上述模块或流程编制成的程序可以被存储在外部可读性存储介质中,这种存储介质可以是软盘、CD-ROM、硬盘、磁带记录介质、IC卡的半导体存储器或其它的光学记录介质(例如DVD或PD)或磁记录介质。介质还包括电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)。
下面举例说明本发明的具体应用。
应用实例一:
当用户需要将某个文档读出或需要运行某个文档时,例如文档可以是某种多媒体文件,用户在人机交互界面上选中并点击该文档图标,产生一读取指令,系统应用模块根据该指令产生一存储设备访问请求,请求中包括该文档图标指向的盘符、地址和要求执行的读操作。系统应用模块将该存储设备访问请求发送给存储设备访问管理器,存储设备访问管理器按照上述处理方法,先根据盘符确定存储设备,然后根据地址从该存储设备中读取数据。读取操作顺利完成后,向系统应用模块发送通知,并将读取成功的信息和读出的数据一起放入存储设备访问管理器的存储模块中,系统应用模块收到通知后,从存储模块中取出读取成功的信息和读出的数据。读取成功的信息可通过显示提示信息或发出特定的声音提示用户,读出的数据可通过合适的方式呈现给用户,例如通过文字显示和/或通过播放器播放。如果读取操作不成功,则将表示读取失败或错误的处理结果放入存储设备访问管理器的存储模块中,系统应用模块收到通知后,从存储模块中取出处理结果,通过显示提示信息或发出特定的声音来提示用户。
应用实例二:
当用户需要存储某个文档时,例如用户下载某个文档,并在人机交互界面上选择该文档的保存地址后,产生一写入指令,系统应用模块根据该指令产生一存储设备访问请求,请求中包括该文档图标指向的盘符和要求执行的写操作。系统应用模块将该存储设备访问请求发送给存储设备访问管理器,存储设备访问管理器按照上述处理方法,先根据盘符确定存储设备,然后将数据写入该存储设备中。写入操作完成后,向系统应用模块发送通知,并将处理结果放入存储设备访问管理器的存储模块中,系统应用模块收到通知后,从存储模块中取出处理结果,通过显示提示信息或发出特定的声音来提示用户。
综上,通过对存储设备访问请求的并行处理,提高了在具有多存储设备运算设备上频繁对不同存储设备进行访问时的访问速度及效率。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。