数据存取方法

文档序号:6563639阅读:229来源:国知局
专利名称:数据存取方法
技术领域
本发明涉及一种数据存取技术,更具体而言,涉及一种应用于电 脑系统的系统驱动程序的数据存取方法。
背景技术
如何在个人电脑、笔记型电脑或伺服器等电脑系统中,提供有效 利用该电脑系统中的资源存取数据的技术,对于该电脑系统的设计者 及制造商而言是一项相当重要的考虑。
在许多电脑系统中,例如硬碟或光碟机的数据储存装置因其储存 有电脑系统运作所必须的程序或数据而成为一个重要的硬件装置。目 前,数据于电脑系统驱动程序与储存装置之间执行存取动作的方式一
般有程序化输入输出(Program Input/Output, PIO)机制与直接存储器存 取(Direct Memory Access, DMA)机制。在PIO机制中,数据存取是在中 央处理单元(CPU)的控制下进行,其通过该中央处理单元上执行的系统 驱动程序负责存取数据,因此相当耗费中央处理单元的资源,增加电 脑系统的负担。而在DMA机制中,整个数据存取作业则是由DMA控 制器的控制下进行,且于数据存取过程中并不需要中央处理单元的介 入,可以减轻中央处理单元的处理负担,大幅提升整个电脑系统的的 工作效率。基于上述的技术优点,该DMA机制己得到愈来愈广泛的应 用。
然而, 一般在DMA机制中,若系统驱动程序要与例如为硬盘等的 数据储存装置进行数据传送时,系统驱动程序必须预先向电脑系统要 求一或多个用以存放所需读取或写入的数据的逻辑存储器区块,并于 后续进行所述数据存取时,进一步向电脑系统要求与各该逻辑存储器 区块对应的一个或多个DMA存储器区块,方可通过前述的DMA机制
直接存取所需的数据。
上述DMA数据存取方式存在有一定缺失,首先,当在执行数据存
取前,系统驱动程序须花费一定的等待时间以供向电脑系统要求一定
容量的逻辑存储器区块及其对应的DMA存储器区块,如此会使该部分 数据存取所耗费的时间过长,影响数据存取的效率,且该所需存取的 数据容量越大,其所需的等待时间愈长,数据存取的效率愈低。其次, 当电脑系统因同一时间内回应多个数据存取请求或处理其他多个作业 而导致其当前可供利用的存储器资源不足时,系统驱动程序常会因一 时无法获取所需容量的存储器区块,而导致必须放弃此次使用电脑系 统资源运作的机会,并在以后向电脑系统重新提出资源请求,如此不 仅使该次数据存取作业有失败的虞,且还需耗费一定的等待时间,以 于后续重新向系统提出执行请求,同样影响数据存取的效率。再者, 因同一时间存在多个作业执行请求,易造成各请求相互间冲突及拥塞, 相应加重电脑系统的处理负担。
因此,如何克服上述现有技术的缺失,进而提供一种数据存取的 方法,从而实现数据于系统驱动程序与数据储存装置之间能快速进行 存取动作,避免如现有技术需耗费一定的时间以等待系统分配存储器 资源导致数据存取效率低下的问题,实为目前亟待解决的课题。

发明内容
为解决前述现有技术的种种缺失,本发明提供一种数据存取系统 以及方法,除能解决系统驱动程序等待电脑系统回应储存单元的数据 结构要求的时间外,还能解决系统驱动程序因未获得回应而须重新等 待要求进而使得数据存取速度降低的问题。
本发明提供一种数据存取方法,其应用于电脑系统的系统驱动程 序中,该电脑系统具有用以提供该系统驱动程序与该电脑系统中的装 置与随机存取存储器进行数据传输的DMA机制,该数据存取方法包括 以下步骤(1)令该系统驱动程序初始化时,向该电脑系统要求预定 数量的逻辑存储器区块与相对应的DMA存储器区块,该预定数量的逻 辑存储器区块与相对应的DMA存储器区块组成该预定数量的储存单 元;(2)将该逻辑存储器区块与相对应的DMA存储器区块所分别具有 的指标挂载于相对应的DMA存储器区块的储存单元的数据结构中;以 及(3)建立一全域指标,该全域指标指向一数据表,该数据表用以储
存所有该储存单元的使用状态。
在本发明的一实施例中,前述本发明的数据存取方法还包括以下 步骤(4)于该系统驱动程序与该电脑系统中的装置进行数据传输前, 判断该数据表中未使用的储存单元是否有足够执行本次数据传输,若 是,则执行步骤(5);若否,则反复执行步骤(4)以等待足够的储存 单元;以及(5)撷取该足够本次数据传输数量的储存单元予以使用, 并将该储存单元的使用状态设定为使用中,且当数据传输完成后将该 储存单元释出并将该储存单元的使用状态设定为未使用。
在本发明的一实施例中,前述本发明的数据存取方法还包括以下 步骤于该步骤(1)前,还包括令该驱动程序预先建立用以记录储存 单元数量的全域变数空间的步骤。
相比于现有技术,本发明的数据存取方法,通过前述的流程步骤, 能提供该系统驱动程序直接利用该储存单元传输数据,而无须耗费等 待电脑系统回应的时间外,故能解决系统驱动程序数据存取速度降低 的问题。


图l是本发明的数据存取方法执行时的流程图;以及
图2是系统驱动程序通过本发明的数据存取方法执行数据存取时
的流程图。
主要元件符号说明
S10 S13 步骤 S20 S22 步骤
具体实施例方式
以下通过特定的具体实施例说明本发明的实施方式,本领域技术 人员可由本说明书所揭示的内容轻易地了解本发明的其他优点与功 效。本发明亦可通过其他不同的具体实施例加以施行或应用,本说明 书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下 进行各种修饰与变更。
请参阅图1,其系本发明的数据存取方法执行时的流程图。在本实
施例中,本发明的数据存取方法应用于电脑系统的系统驱动程序中, 该电脑系统具有用以提供该系统驱动程序与该电脑系统中的装置与随
机存取存储器进行数据传输的DMA机制。在本实施例中,该电脑系统 可例如为掌上型电脑、手持式电脑、笔记型电脑、个人电脑、伺服器、 工作站等具有数据处理功能的装置。该装置则可例如为硬式磁碟等数 据储存装置。该系统驱动程序则为该装置的驱动程序。
如图l所示,在步骤S10中,令该驱动程序预先建立用以记录储 存单元数量的全域变数空间。该全域变数空间设置于该随机存取存储 器中,该全域变数空间于该系统驱动程序结束后自该随机存取存储器 中删除。该储存单元是由该逻辑存储器区块与相对应的DMA存储器区 块所组成者,且该储存单元的数量相应于该逻辑存储器区块与相对应 的DMA存储器区块的数量。接着进至步骤Sll。
在步骤S11中,令该系统驱动程序初始化时,向该电脑系统要求 预定数量的逻辑存储器区块与相对应的DMA存储器区块。具体而言, 当该电脑系统执行开机自我测试并载入作业系统后,该作业系统会针 对该电脑系统进行内建或外接装置的侦测,并自该电脑系统的储存装 置中检索出对应该装置的系统驱动程序并载入至该作业系统,以令该 装置接受该系统驱动程序的驱动。在本实施例中,当该系统驱动程序 载入时,必须先经过初始化的程序,本步骤于该系统驱动程序初始化 时,向该电脑系统要求预定数量的逻辑存储器区块与相对应的DMA存 储器区块。该逻辑存储器区块是指该随机存取存储器中特定的数据储 存位置,该DMA存储器区块则系该DMA机制中对应该随机存取存储 器中特定的数据储存位置的位置。
需补充说明的是,在本实施例中,该系统驱动程序所要求的逻辑 存储器区块与相对应的DMA存储器区块的数量,是以该对应该装置的 系统驱动程序于执行时所可能要求的最大逻辑存储器区块与相对应的 DMA存储器区块的数量为依据,如此的数量设定可确保该系统驱动程 序在数据传输的过程中,不须向该电脑系统要求额外的存储器资源。 在本发明的其它实施例中,其数量可依据实际需求而定。接着进至步 骤S12。
在步骤S12中,将该逻辑存储器区块与相对应的DMA存储器区
块所分别具有的指标,挂载于相对应的储存单元的数据结构中。如前
所述,不同的该逻辑存储器区块与相对应的DMA存储器区块均具有指 向其本身的指标,故在本步骤中,是将该逻辑存储器区块与相对应的 DMA存储器区块所分别具有的指标挂载相对应的储存单元的数据结 构中。此外,在本实施例中,不同的储存单元的数据结构间通过双向 链结结构(Double Link List)相互链结。接着进至步骤S13。
在步骤S13中,建立一全域指标,该全域指标系指向一数据表, 该数据表用以储存所有该储存单元的使用状态。在本实施例中,该全 域指标与该数据表储存在该随机存取存储器中,而该使用状态至少包 括未使用以及使用中二种。
请参阅图2,其是系统驱动程序通过本发明的数据存取方法执行数 据存取时的流程图。如图2所示,在步骤S20中,于该系统驱动程序 与该电脑系统中的装置进行数据传输前,判断该数据表中未使用的储 存单元是否有足够执行本次数据传输,若是,则进至步骤S21;若否, 则反复执行步骤S20以等待足够的储存单元。
在步骤S21中,撷取该足够本次数据传输数量的储存单元予以使 用,并将该储存单元的使用状态设定为使用中。当数据传输完成后, 进至步骤S22。
在步骤S22中,将该储存单元释出,并将该储存单元的使用状态 设定为未使用。
综上所述,本发明的数据存取方法,通过前述的流程步骤,能提 供该系统驱动程序直接利用该储存单元传输数据,而无须耗费等待电 脑系统回应的时间外,故能解决系统驱动程序数据存取速度降低的问 题。
上述实施例仅为例示性说明本发明的原理及其功效,而非用于限 制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下, 对上述实施例进行修饰与变化。因此,本发明的权利保护范围,应如 后述的申请专利范围所列。
权利要求
1.一种数据存取方法,其应用于电脑系统的系统驱动程序中,该电脑系统具有用以提供该系统驱动程序与该电脑系统中的装置与随机存取存储器进行数据传输的直接存储器存取机制,该数据存取方法包括以下步骤(1)令该系统驱动程序初始化时,向该电脑系统要求预定数量的多个逻辑存储器区块与相对应的多个DMA存储器区块,以由每一该逻辑存储器区块与相对应的一个该DMA存储器区块组成一储存单元;(2)将每一该逻辑存储器区块与相对应的每一该DMA存储器区块所分别具有的指标挂载于相对应的该储存单元的数据结构中;以及(3)建立一全域指标,令该全域指标指向一用以储存所有该储存单元的使用状态的数据表。
2. 根据权利要求1所述的数据存取方法,还包括以下步骤(4) 于该系统驱动程序与该电脑系统中的装置进行数据传输 前,判断该数据表中未使用的所述储存单元是否有足够执行本次数 据传输,若是,则执行步骤(5);若否,则反复执行步骤(4)以 等待所述储存单元达到足够的数量;以及(5) 撷取足够本次数据传输数量的所述储存单元予以使用,并 将所述储存单元的使用状态设定为使用中,且当数据传输完成后将 所述储存单元释出并将所述储存单元的使用状态设定为未使用。
3. 根据权利要求1或2所述的数据存取方法,于该步骤(1)前,还包 括以下步骤-令该驱动程序预先建立用以记录所述储存单元数量的全域变数空 间,该全域变数空间系设置于该随机存取存储器中,并于该系统驱动 程序结束后自该随机存取存储器中删除。
4. 根据权利要求1所述的数据存取方法,其中,所述逻辑存储器区块 与相对应的所述DMA存储器区块的预定数量是该对应该装置的系统 驱动程序于执行时所可能要求的最大逻辑存储器区块与相对应的 DMA存储器区块的数量。
5. 根据权利要求1所述的数据存取方法,其中,所述储存单元的数据 结构间是通过双向链结结构相互链结。
全文摘要
一种数据存取方法,其应用于电脑系统的系统驱动程序中,该电脑系统具有用以提供该系统驱动程序与该电脑系统中的装置与随机存取存储器进行数据传输的直接存储器存取机制(Direct Memory Access,DMA),该数据存取方法包括令该系统驱动程序初始化时,向该电脑系统要求预定数量的逻辑存储器区块与相对应的DMA存储器区块,以组成预定数量的储存单元,再将该逻辑存储器区块与相对应的DMA存储器区块所分别具有的指标挂载于相对应的储存单元的数据结构中,最后建立指向用以储存所有该储存单元的使用状态的数据表的全域指标。据此,该系统驱动程序能直接利用该储存单元传输数据,而无须耗费等待电脑系统回应的时间,故能解决系统驱动程序数据存取速度降低的问题。
文档编号G06F13/10GK101192204SQ20061016053
公开日2008年6月4日 申请日期2006年11月28日 优先权日2006年11月28日
发明者卓昆辉 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1