发明内容
本发明提供一种磁盘读写方法及磁盘存储装置,用于提高数据读写效率。
本发明的第一个方面是提供一种磁盘数据读写方法,包括:
获取时间周期内的所有读取指令和/或写入指令对应的操作位置;
获取磁头当前位置;
根据所述磁头当前位置以及所述时间周期内的所有操作位置,对所述时间周期内的所有读取指令和/或写入指令进行排序,以使所述磁头的寻道距离最短;
根据排序结果,顺序执行相应的读取或存储操作。
本发明的另一个方面是提供一种磁盘存储装置,包括:
第一获取模块,用于获取时间周期内的所有读取指令和/或写入指令对应的操作位置;
第二获取模块,用于获取磁头当前位置;
排序模块,用于根据所述磁头当前位置以及所述时间周期内的所有操作位置,对所述时间周期内的所有读取指令和/或写入指令进行排序,以使所述磁头的寻道距离最短;
执行模块,用于根据排序结果,顺序执行相应的读取或存储操作。
由上述技术方案可知,本发明实施例根据多进程读写指令对应的读取位置和/或写入位置,将多进程读写指令根据磁盘物理位置进行排序,以使所述磁头的寻道距离最短,进而缩短了磁头寻道时间,提高了数据存储的效率。
具体实施方式
如图1所示,本发明实施例一提供的磁盘数据读写方法的流程示意图。如图1所示,本发明实施例一所述的方法的执行主体为磁盘存储装置,所述方法包括:
步骤101、获取时间周期内的所有读取指令和/或写入指令对应的操作位置。
其中,一个时间周期内可能只有一个或多个读取指令,可能只有一个或多个写入指令,还可能有一个或多个读取指令以及一个或多个写入指令。所述时间周期可预先设定。
具体地,本步骤的一种可能实现方式如下:遍历磁盘中的索引信息,分别获取所述时间周期内的所有读取指令欲读取数据在所述磁盘中的读取位置,所述读取位置为所述读取指令对应的操作位置;和/或根据所述时间周期内的所有写入指令,分别为各写入指令欲存储数据选取在所述磁盘中的写入位置,所述写入位置为所述写入指令对应的操作位置。更具体地,本实施例中磁盘存储装置可采用数据块为最小存储单位,较大数据的存储消耗多个连续的数据块,具体可采用bitmap打点算法记录数据块使用情况。磁盘存储装置可根据欲存储数据长度的匹配度来选择数据写入位置,即优先选择合适的空闲块,并能够根据数据长度统计信息决定是否对连续块进行切割,避免碎片的形成。
其中,所述磁盘中的索引信息可采用哈希结构,即分离链接哈希结构,长度可取素数。
步骤102、获取磁头当前位置。
其中,所述磁盘存储装置实时记录磁头的位置,以便获取当前时间周期开始时所述磁头的当前位置。
步骤103、根据所述磁头当前位置以及所述时间周期内的所有操作位置,对所述时间周期内的所有读取指令和/或写入指令进行排序,以使所述磁头的寻道距离最短。
其中,磁盘是提供多个进程共享的存储设备,但磁盘每个时刻只能为一个进程服务器。当有进程在访问磁盘时,其他访问该磁盘的进程必须等待,直到磁盘一次工作结束。本实施例就是采用电梯调度算法对所述多个进程提出读取和/或写入指令进行排序,然后根据排序结果,顺序执行相应的读取或存储操作。
具体地,根据所述磁头当前位置以及所述时间周期内的所有操作位置,采用电梯调度算法对所述时间周期内的所有读取指令和/或写入指令进行排序,以使所述磁头的寻道距离最短。
其中,所述电梯调度算法(又称SCAN算法)是磁头前进方向上的最短寻道时间优先算法,该算法避免了磁头在磁盘局部位置上的往复移动。所述电梯调度算法具体为:所述算法不仅考虑到欲访问的磁道与当前磁头所在磁道的距离,更优先考虑了磁头的当前移动方向。例如,当磁头正在自里向外移动时,所述算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,使磁头自外向里移动,此时,同样也是每次选择这样的进程来调度。由于这种算法中磁头移动的规律颇似电梯的运行,故称为电梯调度算法。
例如:如图2所示的磁道,假设在一个时间周期内磁盘存储装置顺序接收到三个读取指令,这三个读取指令对应的操作位置分别为:CBE,磁头当前位置为A。若磁盘存储装置按照读取指令接收顺序,则磁头的寻道过程为:磁头由A移至C,读取C处的数据后,磁头再由C移动至B,读取B处的数据后,磁头再由B移动至E,读取E处的数据。由此可知,磁头的寻道距离为:
S1=(a.size+b.size)+(c.size+b.size)+(c.size+d.size)
其中,a.size为磁盘位置A处存储数据的大小,b.size为磁盘位置B处存储数据的大小,c.size为磁盘位置C处存储数据的大小,d.size为磁盘位置D处存储数据的大小。
采用本发明实施例提供的方法,即采用电梯调度算法,先对接收到的三个读取指令进行排序,即这三个读取指令排序后顺次对应的操作位置分别为:BCE。此时,磁头的寻道过程为:磁头由A移至B,读取B处的数据后,磁头再由B移动至C,读取C处的数据后,磁头再由C移动至E,读取E处的数据。因此,磁头的寻道距离为:
S2=a.size+d.size
比较上述S1和S2,可明显的得出:采用本发明实施例提供的方法,磁盘寻道的距离最短。这里需要说明的是:本示例仅示出了多个读取指令的情况,多个写入指令以及多个读取指令和多个写入指令的情况,同理,此处不再赘述。
步骤104、根据排序结果,顺序执行相应的读取或存储操作。
具体地,所述执行读取操作具体为:读取磁盘上所述读取指令对应的操作位置处存储的数据,并启动所述操作位置对应的引用计数器加1;读取完成后,所述引用计数器减1。
其中,读取操作时增加引用技术器加1的目的是:采用引用计数器来锁定数据块,使其不能被更改,防止在读取过程中,数据发生变化。具体体现在当磁盘接收到数据删除指令或数据更新指令时,若直接将数据删除指令或数据更新指令对应的操作位置处的数据进行删除或更新操作,此时若还有进程在访问此操作位置处的数据,则会出错或进入互斥状态。因此,本实施例一所述的方法还包括:
当接收到数据删除指令或数据更新指令时,获取接收到的数据删除指令或数据更新指令对应的操作位置;判断所述操作位置对应的引用计数器的计数值是否为0,若不为0,则等待所述引用计数器的计数值为0后,执行相应地数据删除或数据更新操作。
实际上,若是删除数据,则磁盘存储装置在将删除数据对应的索引信息项从索引中移除或更新后,不立刻释放磁盘空间和内存,而是将其放入临时存储结构,等待引用计数器归零后,再进行删除操作;若是数据更新,则等待引用计数器归零后,再进行数据更新操作,以避免在其他读取进程过程中将数据删除致使存储装置出错或进入互斥状态,进而提高了磁盘存储装置的健壮性以及并发能力较强。
所述执行存储操作,具体为:在所述磁盘上所述写入指令对应的操作位置处写入数据,并在所述磁盘的索引信息中增加新的索引信息项,以便后续能通过所述索引查找到所述存储操作后写入的数据在所述磁盘中的写入位置。
本发明实施例根据多进程读写指令对应的读取位置和/或写入位置,将多进程读写指令根据磁盘物理位置进行排序,以使所述磁头的寻道距离最短,进而缩短了磁头寻道时间,提高了数据存储的效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
如图3所示,本发明实施例二提供的磁盘存储装置的结构示意图。如图3所示,本实施例二所述的磁盘存储装置包括:第一获取模块1、第二获取模块2、排序模块3和执行模块4。其中,所述第一获取模块1用于获取时间周期内的所有读取指令和/或写入指令对应的操作位置。所述第二获取模块2用于获取磁头当前位置。所述排序模块3用于根据所述磁头当前位置以及所述时间周期内的所有操作位置,对所述时间周期内的所有读取指令和/或写入指令进行排序,以使所述磁头的寻道距离最短。所述执行模块4用于根据排序结果,顺序执行相应的读取或存储操作。
本发明实施例根据多进程读写指令对应的读取位置和/或写入位置,将多进程读写指令根据磁盘物理位置进行排序,以使所述磁头的寻道距离最短,进而缩短了磁头寻道时间,提高了数据存储的效率。
进一步地,上述实施例二中所述的第一获取模块,具体用于遍历磁盘中的索引信息,分别获取所述时间周期内的所有读取指令欲读取数据在所述磁盘中的读取位置,所述读取位置为所述读取指令对应的操作位置;和/或根据所述时间周期内的所有写入指令,分别为各写入指令欲存储数据选取在所述磁盘中的写入位置,所述写入位置为所述写入指令对应的操作位置。
所述排序模块具体用于根据所述磁头当前位置以及所述时间周期内的所有操作位置,采用电梯调度算法对所述时间周期内的所有读取指令和/或写入指令进行排序,以使所述磁头的寻道距离最短。
所述执行模块,具体用于读取磁盘上所述读取指令对应的操作位置处存储的数据,并启动所述操作位置对应的引用计数器加1;读取完成后,所述引用计数器减1。相应地,本实施例二所述的磁盘存储装置,还包括:第三获取模块和判断执行模块。其中,所述第三获取模块用于接收到数据删除指令或数据更新指令时,获取接收到的数据删除指令或数据更新指令对应的操作位置。所述判断执行模块用于判断所述操作位置对应的引用计数器的计数值是否为0,若不为0,则等待所述引用计数器的计数值为0后,执行相应地数据删除或数据更新操作。
进一步地,所述执行模块,具体用于在所述磁盘上所述写入指令对应的操作位置处写入数据,并在所述磁盘的索引信息中增加新的索引信息项,以便后续能通过所述索引查找到所述存储操作后写入的数据在所述磁盘中的存储位置。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。