运用软件事件控制提升驱动程序效率的方法

文档序号:6409531阅读:133来源:国知局
专利名称:运用软件事件控制提升驱动程序效率的方法
技术领域
本发明为一种有关于数据处理方法,特别指应用于计算机可执行平台的驱动程序中,可运用软件执行线(thread)来辅助提升驱动程序在操作系统与硬件装置间运作效率的方法。
背景技术
现有的有关驱动程序的运作,如图1中所示,当硬件装置30欲向操作系统10要求系统资源时,便会透过执行于操作系统10中的驱动程序20来向操作系统提出请求(request)。此时硬件装置30首先会发出硬件中断(hardwareinterrupt)(S1),并透过驱动程序20传送给操作系统10(S2);当操作系统10收到硬件中断后,便开始准备配置对应的系统资源,完成系统资源配置之后操作系统10便发出驱动程序事件(driver event)给驱动程序20(S3),驱动程序20在收到之后便开始向硬件装置30执行对应的硬件控制及数据传输(S4),当驱动程序20执行完所有的程序之后,再将先前所获得的系统资源释放并再转由操作系统10来负责。
在驱动程序20中,除了负责上述的硬件控制及数据传输的工作之外,有些时候驱动程序20还肩负有硬件监控的责任,也就是能够在硬件装置30执行运作的过程当中,能够随时回报硬件装置30的状况给操作系统10。由于以往对于硬件监控的部分,都直接透过驱动程序20来进行的,因此往往会造成下列两个问题(1)影响驱动程序20的执行运作效能。会造成此一问题的原因在于操作系统10先天对硬件所具有的驱动程序事件(driver event)限制,此一限制在于操作系统10中无法同时提供对多个驱动程序20中的硬件监控处理,因此当有多个驱动程序20需要执行硬件监控的程序时,往往都必须要仰赖驱动程序20个别的执行和处理。如此一来,驱动程序20不但必须负责原有的硬件控制及数据传输程序,还必须要同时处理硬件监控的部分,当然会使得驱动程序20的整体运作效能大幅被影响。
(2)造成操作系统10对硬件监控管理不易。会造成此一问题的原因则在于驱动程序20各自负责执行个别的硬件监控程序,所以导致操作系统10无法同时处理及监控所有的硬件装置30,使得操作系统10无法有效的掌握各个连接硬件装置30的状况,造成系统资源配置管理上的成效不彰。
因此,要如何利用目前发达的计算机软件设计方式,来突破既有操作系统10上对硬件的先天限制,并且能够改善既有驱动程序20的运作效能,使驱动程序20能够提升运作效能并且让操作系统10能够有效进行对硬件装置30的管理,提出一套能够提升驱动程序在操作系统10与硬件装置30间运作效率的方法,应是未来从事驱动程序相关开发的研发人员们所应积极努力研究的方向。

发明内容本发明目的在于提供一种运用软件事件控制提升驱动程序效率的方法,由此可使驱动程序能够提升运作效能并且让操作系统能够有效进行对硬件装置的管理。
为实现上述目的,本发明运用软件事件控制提升驱动程序效率的方法中包含有下列步骤首先由驱动程序中的软件执行线(thread)负责接收由硬件装置所发出的硬件中断(hardware interrupt);然后暂停接收其它硬件中断,并发出驱动程序事件(driver event)至硬件驱动程序及操作系统;当硬件驱动程序及操作系统接收到驱动程序事件时,同时分别开始执行硬件控制、数据传输及硬件监控程序;当硬件驱动程序完成硬件控制及数据传输时,则同时分别发出硬件监控同步事件及硬件同步事件,并使硬件驱动程序重新恢复等待接收驱动程序的状态、操作系统则在接收到硬件监控同步事件后恢复等待接收驱动程序的状态;最后,当软件执行线接收到硬件同步事件后,则重新恢复等待接收硬件中断的状态。结束整个运用软件事件控制来提升驱动程序效率的过程。
本发明方法于既有的驱动程序架构下运用软件执行线所产生的软件事件(software event)来启动操作系统进行硬件监控程序的处理,而使原本的硬件驱动程序能够致力于硬件控制和数据传输的部分。透过此一方法不但可以有效提升驱动程序的效率之外,也可达到使操作系统便于进行硬件监控管理的功效。

图1为现有驱动程序运作示意图;图2为本发明所提的运用软件事件控制提升驱动程序效率的方法的内部运作示意图;图3为本发明所提的运用软件事件控制提升驱动程序效率的方法的整体运作示意图;图4A为本发明所提的运用软件事件控制提升驱动程序效率的方法的软件执行线运作流程图;图4B为本发明所提的运用软件事件控制提升驱动程序效率的方法的硬件驱动程序运作流程图;及图4C为本发明所提的运用软件事件控制提升驱动程序效率的方法的硬件监控程序运作流程图。
具体实施方式本发明提出一种可以运用软件事件控制提升驱动程序效率的方法。本发明方法透过一种所谓间接硬件事件(Indirect Hardware Event,IHE)的架构来达成提升驱动程序效率的目的,如前所述图2中所示的内部运作示意图,本发明利用执行于驱动程序20中的软件执行线21及硬件驱动程序22来同步处理相关硬件控制、数据传输及硬件监控的事宜,包括透过软件执行线(thread)21来发送软件事件(software event)要求操作系统10进行硬件监控程序的处理,以及同时透过驱动程序20中的硬件驱动程序22来进行硬件控制及数据传输的作业,将可以有效辅助提升驱动程序20在操作系统10与硬件装置30之间的运作效率。
图2的部分,仅为本发明方法于单一驱动程序20中的内部运作示意说明。实际上本发明方法多个驱动程序20同时整体运作的过程则可以由图3表示。此时,在同一计算机可执行平台上的诸多驱动程序20均可以透过本发明方法之间接硬件事件架构来提升本身的效率,所有的硬件控制及数据传输作业则由驱动程序20中的硬件驱动程序22个别来负责(如驱动程序a...驱动程序n);至于所有硬件监控程序的部分则由操作系统10在接收到来自个别驱动程序20中的软件执行线21所发出的驱动程序事件后,透过发出硬件监控程序40(如硬件监控程序a...n)的方式执行,以Windows CE操作系统来说,此硬件监控程序40可由预设可执行多任务程序的等待多重对象函数(Wait For Multiple Objects())来实现,亦可透过其它操作系统10中具有相类似功能的函数进行。
图4A、图4B及图4C则为本发明方法的相关运作流程图,说明如下。
首先图4A的部分为本发明方法中有关驱动程序20中软件执行线21的运作流程。当驱动程序20启动之后,则软件执行线21随之被执行并开始等待接收来自硬件装置30的硬件中断(步骤100);软件执行线21会持续等待并判断是否接收到硬件中断(步骤110),若未接收到则持续停留在步骤100处,若接收到时,表示硬件装置30需要向操作系统10要求系统资源,则进入下一步骤,此时驱动程序20将暂停接收其它硬件中断(步骤120);在接收到来自硬件装置30所发出的硬件中断后,软件执行线21将向操作系统10发出驱动程序事件(步骤130),其中操作系统在同一时间将更进一步将驱动程序事件发出给驱动程序20中的硬件驱动程序22,此为步骤A的部分,而硬件驱动程序22及操作系统10在接收到来自软件执行线21所发出的驱动程序事件后,将分别执行硬件控制数据传输(即图4B的部分)及硬件监控程序(即图4C的部分)的作业;进入步骤A之后软件执行线21便进入到等待硬件同步事件的状态(步骤140)。
图4B为硬件驱动程序22的细部运作流程。硬件驱动程序22于驱动程序20启动时,便开始处于等待接收驱动程序事件的状态(步骤200);持续判断是否接收到驱动程序事件的过程中(步骤210),若未接收到则停留在步骤200处,若接收到操作系统10所发出的驱动程序事件(即软件执行线21所产生的驱动程序事件)时,则进入下一步骤,开始执行硬件控制及数据传输的作业(步骤220),此部份的技术内容属于现有驱动程序运作,不多作赘述;直到硬件控制及数据传输作业整个执行完毕后,则硬件驱动程序22会发出硬件监控同步事件给操作系统10(步骤230),要求操作系统10同步结束硬件监控程序的作业,即为进入到步骤B的部分;同一时间,硬件驱动程序22也将发出硬件同步事件给软件执行线21,要求同步结束暂停接收其它硬件中断的程序,此为步骤C的部分。
图4C为操作系统执行硬件监控程序的细部运作流程。开始时,操作系统10同样处于等待接收驱动程序事件的状态(步骤300);持续判断是否有来自软件执行线21所发出的驱动程序事件?(步骤310)如果没有则继续停留在步骤300处,如果接收到的话则进入到下一步骤,开始执行对应的硬件监控程序40(步骤320),以Windows CE操作系统来说,此硬件监控程序40可由预设可执行多任务程序的等待多重对象函数(Wait For Multiple Objects())来达成,亦可透过其它操作系统10中具有相类似功能的函数进行;同时操作系统10进入到等待硬件监控同步事件的状态,准备当硬件驱动程序22完成硬件控制及数据传输时,能够同步结束硬件监控的程序(步骤330);操作系统10持续判断是否有接收到来自硬件驱动程序22所发出的硬件监控同步事件?(步骤340)如果没有,则停留在步骤330处,若接收到来自硬件驱动程序22的硬件监控同步事件时(即步骤B),则操作系统10将重新恢复等待下次接收驱动程序事件(步骤300)。
另外,在硬件驱动程序22发出硬件同步事件给软件执行线21要求同步结束暂停接收其它硬件中断的程序时(即步骤C),请重新参考图4A的部分,原先软件执行线21在进入步骤A之后系处于等待硬件同步事件的状态(步骤140),并持续判断是否有接收到硬件同步事件?(步骤150),如果没有则停留在步骤150处,如果有(即由步骤C处传来来自硬件驱动程序22的硬件同步事件)则进入下一步骤,软件执行线21将重新恢复到可以接收其它硬件中断的状态(步骤160),此时整个运用软件事件来控制并提升驱动程序效率的流程步骤告一段落。
事实上,本发明方法可以应用于任何具有计算机可执行平台之上,特别是具有操作系统10的手持式装置(handheld device),如智慧型手机(SmartPhone)。
权利要求
1.一种运用软件事件控制提升驱动程序效率的方法,应用于一计算机可执行平台的操作系统与硬件装置间,透过驱动程序产生软件事件(software event)来启动操作系统处理硬件监控程序,进而辅助驱动程序提升效率的方法,其特征在于该方法包含下列步骤透过一软件执行线(thread)接收硬件装置发出的硬件中断(hardwareinterrupt);暂停接收其它硬件中断,并发出驱动程序事件(driver event)至一硬件驱动程序及操作系统;当该硬件驱动程序及操作系统接收到驱动程序事件时,更包含同时执行下列步骤该硬件驱动程序开始执行硬件控制及数据传输;及操作系统开始执行硬件监控程序;当该硬件驱动程序完成硬件控制及数据传输时,更包含同时发出硬件监控同步事件及硬件同步事件,执行下列步骤将该硬件驱动程序重新恢复等待接收驱动程序事件的状态;于操作系统接收到硬件监控同步事件后,将操作系统重新恢复等待接收驱动程序事件的状态;及于该软件执行线接收到硬件同步事件后,将软件执行线重新恢复等待接收硬件中断的状态。
2.如权利要求1所述的运用软件事件控制提升驱动程序效率的方法,其特征在于该计算机可执行平台为手持式装置(handheld device)。
3.如权利要求2所述的运用软件事件控制提升驱动程序效率的方法,其特征在于该计算机可执行平台为智慧型手机(Smart Phone)。
4.如权利要求1所述的运用软件事件控制提升驱动程序效率的方法,其特征在于该软件执行线及该硬件驱动程序的执行步骤,均执行于驱动程序。
5.如权利要求1所述的运用软件事件控制提升驱动程序效率的方法,其特征在于该操作系统开始执行硬件监控程序的步骤,是透过操作系统中预设可执行多任务程序的等待多重对象函数(Wait For Multiple Objects( ))来进行的。
全文摘要
本发明揭示一种运用软件事件控制提升驱动程序效率的方法,在既有的驱动程序架构下,运用软件执行线(thread)产生软件事件(software event)来启动操作系统进行硬件监控程序的处理。透过硬件驱动程序的硬件控制及数据传输,以及操作系统的硬件监控程序的同步执行,将可以有效辅助提升驱动程序在操作系统与硬件装置之间的运作效率。
文档编号G06F9/46GK1760843SQ200410051789
公开日2006年4月19日 申请日期2004年10月11日 优先权日2004年10月11日
发明者叶承溱 申请人:佛山市顺德区顺达电脑厂有限公司, 神达电脑股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1