用于模拟慢速存储盘的方法和装置与流程

文档序号:12550518阅读:782来源:国知局
用于模拟慢速存储盘的方法和装置与流程

本发明的各实施方式涉及存储系统领域,并且更具体地,涉及用于模拟慢速存储盘的方法和装置。



背景技术:

存储系统的硬件部分通常包括一个或多个存储盘。存储盘的性能会严重影响整个存储系统的性能,尤其是当存储盘被用作根文件系统盘时。与存储盘性能相关的因素之一为I/O响应时间。I/O响应时间指代从用户发出I/O请求到接收到存储盘对该I/O请求的响应所需的时间。存储盘可以因机械问题(例如磁头退化)或环境问题(例如湿度过大)而导致I/O响应时间变长,从而成为“慢速存储盘”(在下文中简称为“慢盘”)。慢盘会对存储系统的性能造成不利影响。因而,存储系统供应商所面临的一项挑战是,如何对慢盘的事件进行模拟,以便在发布存储系统之前,充分测试慢盘对存储系统的影响以消除未来可能带来的不利影响。

目前,一般采用基于硬件的方式来对慢盘进行测试。例如,在一种方案中,采用从客户现场或存储盘制造商返回的真实的慢盘来进行测试。在另一种方案中,采用特殊的存储盘模拟器来进行测试,例如可从SANBlaze公司获得的存储盘模拟器。

然而,上述两种方案具有各自的缺点。例如,对于上述第一种方案,真实的慢盘经常是特别难以获得的;而且,即使可以获得这种慢盘,其慢速模式也是固定的,因而难以充分测试这种慢盘对存储系统的影响。此外,对于上述第二种方案,由于需要购买特殊的存储盘模拟器,因而增加了测试成本;并且这种特殊的存储盘模拟器被并入存储系统后有时无法像常规存储盘那样操作。

因此,需要提供一种便于模拟慢盘的技术方案。



技术实现要素:

为了解决一个或多个现有技术中存在的问题,根据本发明的实施方式提出一种利用软件来模拟慢盘的技术方案。

根据本发明实施方式的第一方面,提供一种用于模拟慢速存储盘的方法。该方法包括:截获将要分派至存储盘的输入/输出I/O命令;以及基于预定的延迟注入策略来向所截获的I/O命令的分派注入延迟,以利用存储盘来模拟慢速存储盘。

在一些实施方式中,延迟注入策略至少指示:该延迟注入策略所针对的存储盘和/或所针对的I/O命令的类型。

在一些实施方式中,在该延迟注入策略指示所针对的存储盘的情况下,基于预定的延迟注入策略来向所截获的I/O命令的分派注入延迟包括:识别所截获的I/O命令所针对的存储盘;确定所截获的I/O命令所针对的存储盘是否与该延迟注入策略所指示的磁盘相匹配;以及响应于所截获的I/O命令所针对的存储盘与该延迟注入策略所指示的存储盘相匹配,向所截获的I/O命令的分派注入延迟。

在一些实施方式中,在该延迟注入策略指示所针对的I/O命令的类型的情况下,基于预定的延迟注入策略来向所截获的I/O命令的分派注入延迟包括:识别所截获的I/O命令的类型;确定所识别的I/O命令的类型是否与该延迟注入策略所指示的I/O命令的类型相匹配;以及响应于所识别的I/O命令的类型与该延迟注入策略所指示的I/O命令的类型相匹配,向所截获的I/O命令的分派注入延迟。

在一些实施方式中,该延迟注入策略进一步指示:向预定数目的I/O命令的分派注入延迟;以及向该预定数目的I/O命令的分派注入延迟的频率。

在一些实施方式中,向所截获的I/O命令的分派注入延迟包括:应用随机算法以确定是否向所截获的I/O命令的分派注入延迟。

根据本发明实施方式的第二方面,提供了一种用于模拟慢速存储盘的装置。该装置包括:截获单元,被配置为截获将要分派至存储盘 的输入/输出I/O命令;以及延迟注入单元,被配置为基于预定的延迟注入策略来向所截获的I/O命令的分派注入延迟,以利用存储盘来模拟慢速存储盘。

根据本发明实施方式的第三方面,提供了一种服务器。该服务器包括根据本发明实施方式的用于模拟慢速存储盘的装置。

根据本发明实施方式的第四方面,提供了一种服务器。该服务器包括:一个或多个处理器;存储有计算机程序指令的存储器,当由所述一个或多个处理器执行所述计算机程序指令时使得所述应用服务器执行根据本发明实施方式的用于模拟慢速存储盘的方法。

根据本发明实施方式的第五方面,提供了一种计算机程序产品。该计算机程序产品包括计算机程序指令,当由计算设备执行所述计算机程序指令时使得所述计算设备执行根据本发明实施方式的用于模拟慢速存储盘的方法。

根据本发明的各个实施方式,由于利用软件对慢盘进行模拟,因而无需额外的硬件,从而降低了对慢盘进行测试的成本。此外,借助于操作系统的内核所提供的接口,用户可以灵活地、动态地配置延迟注入策略。另外,根据用户配置的延迟注入策略,可以模拟慢盘的任何慢速模式。

再者,现有方案的实施取决于可获得的真实的慢盘或存储盘模拟器的数目,因而无法针对大量存储盘同时实施。然而,根据本发明的各个实施方式,可以针对大量存储盘同时实施对慢盘的模拟,因而具有可扩展性。此外,采用根据本发明的各个实施方式,无需对操作系统的其他组件进行改动,从而实现了透明性。

附图说明

结合附图并参考以下详细说明,本发明的各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:

图1示出能够用于支持本发明的实施方式的示例性存储系统实现 架构的示意图;

图2示出根据本发明的一个实施方式的用于模拟慢盘的方法的流程图;

图3示出了根据本发明的一个实施方式的延迟注入过程;

图4示出根据本发明的一个实施方式的用于模拟慢盘的装置的框图;以及

图5示出了能够用于实现根据本发明实施方式的计算机系统的示意性框图。

具体实施方式

下面将参考附图中示出的若干示例实施方式来描述本发明的原理。应当理解,描述这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。

图1示出能够用于支持本发明的实施方式的示例性存储系统实现架构100的示意图。支持本发明实施方式的示例性存储系统实现架构例如可以采用Linux操作系统。这里对于Linux操作系统的描述仅旨在给出一种示例性的存储系统实现架构,而并非以该示例中的任何细节对本发明的范围进行任何限制。本领域的技术人员可以理解,还可以采用任何其它适合的操作系统来支持根据本发明的各个实施方式。

如图1所示,存储系统实现架构100包括软件堆栈和硬件部分。软件堆栈包括应用程序110、文件系统120、SCSI(Small Computer System Interface,小型计算机系统接口)协议层130、以及HBA(Host Bus Adapter,主机总线适配器)驱动程序层140。硬件部分包括存储盘1501、…、150n(统称为存储盘150)。

具体地,SCSI协议层130包括SCSI上层131、SCSI中间层132和SCSI下层133。

SCSI上层131为SCSI设备驱动层,其可以由SCSI设备开发商提供。SCSI上层131被配置为接收来自上层(例如文件系统)的请求并将其转换成SCSI请求,同时将SCSI中间层132执行的SCSI命 令及状态信息返回上层。

SCSI中间层132为SCSI总线驱动层,其可以由操作系统开发者提供。SCSI中间层132为SCSI上层131和SCSI下层133的公共服务层,其提供了可供上层和下层驱动器使用的多个函数。SCSI中间层132是SCSI协议层130的核心,可以包括与SCSI协议模块化相关的多种功能,例如总线扫描、错误处理、SCSI命令排序等。这意味着可以以相同的方式使用具有不同类型接口的HBA。此外,SCSI中间层132能够将来自SCSI上层131的SCSI请求转换成SCSI命令。在SCSI命令执行完成后,SCSI中间层132能够接收来自SCSI下层133的SCSI响应,并通知SCSI上层131响应的SCSI请求已经完成。

SCSI下层133为适配器驱动层,其可以由适配器的制造商提供。SCSI下层133可以包括适于处理各种不同的适配器类型的大量代码。

HBA是在服务器和存储设备(例如存储盘150)之间提供I/O处理和物理连接的电路板和/或集成电路适配器。HBA驱动程序层140被配置为用于实现服务器和存储设备之间的通信。

在图1所示的存储系统实现架构100中,来自于用户的I/O请求经由应用程序110、文件系统120和SCSI上层131被转发至SCSI中间层132。SCSI中间层132将该I/O请求转换成I/O命令,并将该I/O命令经由SCSI下层133分发至HBA驱动程序层140。HBA驱动程序层140将该I/O命令封装成包,并将其通过存储网络(图1中未示出)转发至存储盘150的控制器(图1中未示出)。存储盘150的控制器对所接收的包进行解析并且将其转换为存储盘150可识别的I/O命令。

图2示出根据本发明的一个实施方式的用于模拟慢盘的方法200的流程图。在下文中,将参照图2并借助于图1所示的存储系统实现架构100的示例,来详细描述根据本发明的一个实施方式的用于模拟慢盘的方法。

需要注意的是,本文中所使用的术语“存储盘”可以包括固态盘(SSD)、机械存储盘(HDD)、混合存储盘(SSHD)、或者其他 类似的存储设备。本发明的范围在此方面不受限制。此外,存储盘可以是计算机、服务器或者其他计算设备的存储系统的一部分。

此外,在本公开的上下文中,如果在统计时间段内,针对一个存储盘的I/O请求中,存在数量超过预定数量阈值的I/O请求的响应时间超过预定时间阈值,则可以认为该存储盘为“慢速存储盘”或“慢盘”。该预定时间阈值例如可以根据存储盘的类型来确定。例如,对于存储系统或个人计算机的存储盘,该预定时间阈值可以被确定为10ms;而对于SSD盘,该预定时间阈值可以被确定为1ms。

如图2所示,在步骤S210,截获将要分派至存储盘的I/O命令。由于本发明旨在通过截获将要分派至存储盘的I/O命令并且向所截获的I/O命令中注入延迟来模拟慢盘,因此期望在尽可能靠近存储盘的软件层截获I/O命令并且向其注入延迟。如前所述,存储盘150通过HBA(例如如HBA驱动程序层140所示)与服务器进行物理连接。换言之,HBA驱动程序层140是软件堆栈中最靠近存储盘150的软件层。因而,在一些实施方式中,可以在与存储盘150通信的HBA驱动程序层140截获将要分派至存储盘150的I/O命令,由此可以最小化软件层对延迟注入的影响。

然而,由于可以采用多种不同类型的HBA(即,具有不同类型接口的HBA)将存储盘150与服务器进行物理连接,因而如果在HBA驱动程序层140截获I/O命令并且向其注入延迟,则意味着需要对每种类型的HBA的驱动程序进行改动,由此降低了根据本发明的方法的普遍适用性。此外,考虑到SCSI中间层132是大多数块设备都会使用的公共层并且是较为靠近存储盘150的软件层,因此,在另一些实施方式中,可以在与存储盘150通信的SCSI中间层132截获将要分派至存储盘150的I/O命令。

继续参照图2,在步骤S220,基于预定的延迟注入策略来向所截获的I/O命令的分派注入延迟,以利用该存储盘来模拟慢盘。

如前所述,从用户发出I/O请求到接收到存储盘对该I/O请求的响应所需的时间被称作I/O响应时间。该I/O响应时间包括从用户向 存储盘分派I/O请求的时间以及存储盘向用户返回对该I/O请求的响应的时间。本发明的实施方式旨在截获将要分派至存储盘的I/O命令并且向所截获的I/O命令中注入延迟,这意味着延长了从用户向存储盘分派I/O请求的时间。

在本发明的实施方式中,延迟注入策略可以由用户根据需求来预先确定或配置。在一些实施方式中,预定的延迟注入策略可以仅指示延迟注入策略所针对的存储盘,而不指示所针对的I/O命令的类型。例如,预定的延迟注入策略可以指示针对存储系统中的特定存储盘。换言之,预定的延迟注入策略可以指示针对存储系统中的特定存储盘的所有I/O命令的分派注入延迟,而不考虑I/O命令的类型。又例如,预定的延迟注入策略可以指示针对存储系统中的所有存储盘。换言之,预定的延迟注入策略可以指示针对存储系统中的所有存储盘的所有I/O命令的分派注入延迟,而不考虑I/O命令的类型。

在另一些实施方式中,预定的延迟注入策略可以仅指示延迟注入策略所针对的I/O命令的类型,而不指示所针对的存储盘。换言之,预定的延迟注入策略可以指示针对所有硬盘上的特定类型的I/O命令(例如读取命令或写入命令)的分派注入延迟。

在又一些实施方式中,预定的延迟注入策略可以指示所针对的存储盘和所针对的I/O命令的类型二者。换言之,预定的延迟注入策略可以指示针对存储系统中的特定硬盘的特定类型的I/O命令(例如读取命令或写入命令)的分派注入延迟。

此外,在一些实施方式中,预定的延迟注入策略可以进一步指示:向预定数目的I/O命令的分派注入延迟;以及向该预定数目的I/O命令的分派注入延迟的频率。换言之,预定的延迟注入策略可以指示:向特定存储盘上的特定类型的、预定数目的I/O命令的分派注入延迟,向特定存储盘上的所有类型的、预定数目的I/O命令的分派注入延迟,向所有存储盘上的特定类型的、预定数目的I/O命令的分派注入延迟,或者向所有存储盘上的所有类型的、预定数目的I/O命令的分派注入延迟。

另外,预定的延迟注入策略可以进一步指示期望注入的延迟的时间长度。

可以理解,一般地,I/O操作是在操作系统的内核态下执行的。操作系统的内核通常会提供一系列接口以方便与用户交互。因此,在一些实施方式中,可以经由操作系统所提供的接口将用户确定的延迟注入策略导入操作系统的内核。作为一个示例,在采用Linux操作系统的情况下,每个块设备均具有sysfs(sys文件系统)接口,用户可以对sysfs接口下的某些属性文件进行读取或修改。例如,用户可以通过向sysfs接口下的配置文件写入相应的字符串来将延迟注入策略导入操作系统的内核。此外,用户也可以读取该配置文件以了解当前的延迟注入状态,例如是否启动了延迟注入、将要向何种类型的I/O注入延迟、延迟的长度等。

然而,应当理解,除了借助于sysfs接口之外,用户也可以借助于其他任何适当的方式来将延迟注入策略导入操作系统的内核,包括但是不限于:IOCTL(IO控制)接口、PROC接口、系统调用、RPC(远程过程调用)。

根据本发明的实施方式,实现了利用软件(例如在图1所示的软件堆栈中)对慢盘的模拟。模拟开销可以忽略不计,因为模拟过程仅需占用非常少的存储器/CPU资源。

此外,借助于操作系统的内核所提供的接口,用户可以动态地配置延迟注入策略。另外,根据用户配置的延迟注入策略,可以模拟慢盘的任何慢速模式。该慢速模式例如包括但是不限于:特定存储盘针对特定类型的I/O命令(例如读取或写入I/O命令)的反应较慢,特定存储盘针对所有类型的I/O命令的反应较慢,存储系统中的所有存储盘针对特定类型的I/O命令的反应较慢,存储系统中的所有存储盘针对所有类型的I/O命令的反应较慢。

以下将结合图3来描述根据本发明的一个实施方式的延迟注入过程。如前所述,预定的延迟注入策略可以指示:向存储系统中的特定存储盘上的特定类型的I/O命令的分派注入延迟。图3示出了向存储 系统中的特定存储盘上的特定类型的I/O命令的分派注入延迟的过程300的示例性流程图。在一个实施方式中,过程300可以在图1所示的SCSI中间层132执行。

具体地,如图3所示,过程300以所截获的I/O命令开始。可以理解,I/O命令本身可以指示I/O操作所针对的存储盘以及I/O命令的类型。例如,I/O命令可以指示I/O操作所针对的存储盘的标识符,I/O命令的类型是读取还是写入。在步骤S310,确定是否启动了针对该I/O命令所指示的存储盘的慢盘模拟过程。换言之,在步骤S310,识别所截获的I/O命令所针对的存储盘、以及确定所截获的I/O命令所针对的存储盘是否与延迟注入策略所指示的磁盘相匹配。如果所截获的I/O命令所针对的存储盘与延迟注入策略所指示的存储盘相匹配,则过程300前进至步骤S320;否则前进至步骤S380。

在步骤S320,识别所截获的I/O命令的类型,并且确定所识别的I/O命令的类型是否与延迟注入策略所指示的I/O命令的类型相匹配。如果所识别的I/O命令的类型与延迟注入策略所指示的I/O命令的类型相匹配,则前进至步骤S330,否则前进至步骤S380。

如前所述,预定的延迟注入策略可以指示:向特定存储盘上的特定类型的、预定数目的I/O命令的分派注入延迟。例如,预定的延迟注入策略可以指示:向特定存储盘上的1000个读取I/O命令的分派注入延迟。就此而言,在步骤S330,确定剩余的待注入延迟的I/O(也简称为“剩余的慢速I/O))命令的数目是否大于零,即确定是否对预定数目(例如1000个)的I/O命令的分派注入了延迟。如果是,则过程300前进至步骤S340,否则前进至步骤S380。

仍然如前所述,预定的延迟注入策略可以指示:向该预定数目的I/O命令的分派注入延迟的频率。该频率可以指明预定时间段内期望向其分派注入延迟的I/O命令的数目与该预定时间段内的I/O命令的总数之间的比率。例如,该频率可以为0到100之间的任意整数。该任意整数表示预定时间段内期望向其分派注入延迟的I/O命令的数目与该预定时间段内的I/O命令的总数之间的比率为0%到100%,其中 0%表示从不注入延迟,而100%表示总是注入延迟。就此而言,在步骤S340确定用户是否指定了注入延迟的频率,即确定延迟注入策略是否指示向预定数目的I/O命令的分派注入延迟的频率。如果是,则过程300前进至步骤S350,否则返回至步骤S330。

在步骤S350,应用随机算法,以便在随后的步骤S360中确定是否向所截获的I/O命令的分派注入延迟。具体地,在步骤S350中应用随机算法来生成在0到100之间均匀分布的一个随机数。接下来,在步骤S360中将所生成的随机数与延迟注入策略所指示的注入延迟的频率进行比较,如果所生成的随机数大于注入延迟的频率,则前进至步骤S370,否则前进至步骤S380。

在步骤S370,向所截获的I/O的分派注入延迟。具体地,在步骤S370中,向所截获的I/O的分派注入延迟可以包括:针对所截获的I/O应用定时器,并且将定时器的超时值设定为期望注入的延迟的时间长度。该时间长度例如可以根据存储盘的类型来确定。例如,对于个人计算机中所使用的存储盘,该时间长度例如可以被确定为10ms;而对于SSD盘,该时间长度例如可以被确定为1ms。当定时器期满时,减少剩余的慢速I/O的数目并且前进至步骤S380。

可替换地,在步骤S370中,可以通过以下方式来向所截获的I/O的分派注入延迟。具体地,可以将所截获的I/O添加到一个待处理列表中并且记录向该列表中添加该I/O的时间,例如T0。进一步,可以采用特定的线程以预定是时间间隔来周期性地检查该列表。可以根据期望注入的延迟的长度(例如D0)来设定该时间间隔。例如,如果对于个人计算机中所使用的存储盘,将期望注入的延迟的长度确定为10ms,则例如可以将该时间间隔设定为1ms。假定在时间T1检查该列表,针对每个截获的I/O,如果满足:T1–T0>=D0,则减少剩余的慢速I/O的数目并且前进至步骤S380。

在步骤S380,通过公用的SCSI I/O分派接口将I/O命令发送至下层,例如图1所示的HBA驱动程序层140。

应当理解,以上仅出于说明的目的描述了向所截获的I/O的分派 注入延迟的过程,但是本发明的实施方式并不局限于此。根据本发明的实施方式的教导,本领域技术人员可以采用任何适当的方式来向所截获的I/O的分派注入延迟。

此外,应当理解,以上仅出于说明的目的而结合图3描述了向存储系统中的特定存储盘上的特定类型的I/O命令的分派注入延迟的过程。然而,基于延迟注入策略的指示并且根据本发明的实施方式的教导,本领域技术人员可以采用与过程300类似的过程、利用比过程300中所包含的步骤更多或更少的步骤来向存储系统中的特定存储盘上的所有类型的I/O命令的分派注入延迟、或者向存储系统中的所有存储盘上的特定类型的I/O命令的分派注入延迟、或者向存储系统中的所有存储盘上的所有类型的I/O命令的分派注入延迟。

本发明的实施方式还提供了一种用于模拟慢速存储盘的装置。图4示出根据本发明的一个实施方式的用于模拟慢盘的装置400的框图。装置400可以在任何适当的服务器上实现。

如图4所示,装置400包括:截获单元410,被配置为截获将要分派至存储盘的输入/输出I/O命令;以及延迟注入单元420,被配置为基于预定的延迟注入策略来向所截获的I/O命令的分派注入延迟,以利用所述存储盘来模拟慢速存储盘。

在一些实施方式中,该延迟注入策略至少指示:该延迟注入策略所针对的存储盘和/或所针对的I/O命令的类型。

在一些实施方式中,在该延迟注入策略指示所针对的存储盘的情况下,延迟注入单元420被进一步配置为:识别所截获的I/O命令所针对的存储盘;确定所截获的I/O命令所针对的存储盘是否与该延迟注入策略所指示的磁盘相匹配;以及响应于所截获的I/O命令所针对的存储盘与该延迟注入策略所指示的存储盘相匹配,向所截获的I/O命令的分派注入延迟。

在一些实施方式中,在该延迟注入策略指示所针对的I/O命令的类型的情况下,延迟注入单元420被进一步配置为:识别所截获的I/O命令的类型;确定所识别的I/O命令的类型是否与该延迟注入策略所 指示的I/O命令的类型相匹配;以及响应于所识别的I/O命令的类型与该延迟注入策略所指示的I/O命令的类型相匹配,向所截获的I/O命令的分派注入延迟。

在一些实施方式中,该延迟注入策略进一步指示:向预定数目的I/O命令的分派注入延迟;以及向该预定数目的I/O命令的分派注入延迟的频率。

图5是示出能够用于实现根据本发明实施方式的计算机系统的示意性框图。

下面参考图5,其示出了适于用来实现本发明实施方式的计算机系统500的示意性框图。如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有计算机系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线404彼此相连。输入/输出(I/O)接口505也连接至总线504。

以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括存储盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如存储盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本发明的实施方式,上文参考图2和3描述的过程可以被实现为计算机软件程序。例如,本发明的实施方式包括一种计算机程序产品,其包括有形地包含在计算机可读介质上的计算机程序,所述计算机程序包含用于执行方法200和300的程序代码。

一般而言,本发明的各种示例实施方式可以在硬件或专用电路、 软件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本发明的实施方式的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。

而且,流程图中的各框可以被看作是方法步骤,和/或计算机程序代码的操作生成的操作,和/或理解为执行相关功能的多个耦合的逻辑电路元件。例如,本发明的实施方式包括计算机程序产品,该计算机程序产品包括有形地实现在计算机可读介质上的计算机程序,该计算机程序包含被配置为实现上文描述方法的程序代码。

在公开的上下文内,计算机可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。计算机可读介质可以是机器可读信号介质或机器可读存储介质。计算机可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机存储盘、存储盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。

用于实现本发明的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。

另外,尽管操作以特定顺序被描绘,但这并不应该理解为要求此 类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施方式的描述。本说明书中在分开的实施方式的上下文中描述的某些特征也可以整合实施在单个实施方式中。相反地,在单个实施方式的上下文中描述的各种特征也可以分离地在多个实施方式或在任意合适的子组合中实施。

针对前述本发明的示例实施方式的各种修改、改变将在连同附图查看前述描述时对相关技术领域的技术人员变得明显。任何及所有修改将仍落入非限制的和本发明的示例实施方式范围。此外,前述说明书和附图存在启发的益处,涉及本发明的这些实施方式的技术领域的技术人员将会想到此处阐明的本发明的其他实施方式。

将会理解,本发明的实施方式不限于公开的特定实施方式,并且修改和其他实施方式都应包含于所附的权利要求范围内。尽管此处使用了特定的术语,但是它们仅在通用和描述的意义上使用,而并不用于限制目的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1