CN100492298C - 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 - Google Patents
调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 Download PDFInfo
- Publication number
- CN100492298C CN100492298C CNB01814716XA CN01814716A CN100492298C CN 100492298 C CN100492298 C CN 100492298C CN B01814716X A CNB01814716X A CN B01814716XA CN 01814716 A CN01814716 A CN 01814716A CN 100492298 C CN100492298 C CN 100492298C
- Authority
- CN
- China
- Prior art keywords
- equipment
- application program
- request
- time
- estimation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Abstract
本发明为调度驱动程序提供一种方法和装置,为使用时间估计实现一种协议,其可用于不产生中断的设备。应用程序调用调度驱动程序开始对一个设备的输入/输出(I/O)请求。调度驱动程序决定设备是否忙。如果设备不忙,则调度驱动程序给应用程序提供一个为要被完成的I/O请求的估计处理时间(EPT)。在一个实施例中,如果设备忙,则调度驱动程序计算到该设备可为应用程序使用时的一个估计的剩下的时间量(EATL),并给应用程序提供这一EATL。当设备不忙时,应用程序休息估计的处理时间(EPT)和调用调度驱动程序以获得I/O操作结果。如果I/O请求已经完成,则调度驱动程序提供I/O操作结果给应用程序。然而,I/O请求尚未完成,则调度驱动程序为要被完成的I/O请求计算一个估计的剩余处理时间(EPTR)并将该EPTR提供给应用程序。应用程序休息估计的剩余处理时间(EPTR)并再次调用调度驱动程序以获得I/O操作结果。可以重复这些操作直到I/O请求已经完成。
Description
技术领域
本发明涉及计算机。特别说,本发明涉及一个调度驱动程序,它使用时间估计实现一个协议,用于不产生中断的设备。
背景技术
一般,驱动程序是一个控制设备的程序。每一个设备,诸如打印机、磁盘驱动器、或键盘,都需要有一个驱动程序与计算机协作。许多驱动程序,诸如键盘驱动程序,与操作系统一起提供。对于其它设备,需要在把该设备耦合到计算机上时加载驱动程序。驱动程序的作用像在设备和使用该设备的应用程序之间的翻译器。每一设备有它自己的特殊命令集,这只有它的驱动程序知道。反之,大多数应用程序使用普通命令访问驱动设备。因此,驱动程序从应用程序接受普通命令,把它们翻译成为这些设备的专门的命令。
大多数设备驱动程序使用下面的步骤序列处理硬件请求:
1.启动一个硬件请求或者在它忙时把它放在一个队列中,
2.当设备产生中断时,当前请求已经完成。在此点,返回请求结果给应用程序,并启动队列中的下一请求。
通常,每一应用程序使用一个同步调用来执行它的请求。操作系统(O/S)在驱动程序完成请求时返回控制给应用程序,这在设备产生中断时发生。
然而,当处理不产生中断的慢设备时会发生问题。不幸的是,用于不产生中断的设备的大多数驱动程序不具有在竞争应用程序之间对设备公平访问的机构,而趋向于使用中央处理单元(CPU)的处理时间无效地调和竞争应用程序。例如,一些用于这类设备的驱动程序轮询设备寄存器以决定I/O完成。不幸的是,使用这类驱动程序,应用程序在设备处理期间经常暂停或停止执行以等待输入/输出(I/O)请求的完成,或执行超量的I/O请求,这两者都不必要地浪费了CPU的处理时间。
发明内容
为解决以上技术问题,本发明提供一种在调度驱动程序中利用时间估计来实现协议的方法,包括:将调度驱动程序下载到操作系统中,使得应用程序能够向设备产生输入/输出请求;调用一个调度驱动程序,为一个应用程序开始对一个设备的输入/输出请求,所述设备是可由该应用程序使用的多个不同类型的设备之一;决定所述设备是否忙;如果该设备不忙,为应用程序提供要完成的输入/输出请求的一个估计处理时间,其中该应用程序在所述估计处理时间休息;以及如果该设备忙,计算一个到该设备可用之前的剩余时间量,并将估计剩余时间量提供给应用程序。
本发明还提供一种在应用时间估计的调度驱动器中实现一个协议的装置,包括:一个处理器,具有耦合到它的存储器;至少一个和处理器可通信地耦合的设备;可操作地耦合到所述处理器的调度驱动器;所述存储器存储至少一个应用程序,该至少一个应用程序调用调度驱动器,来开始对至少一个设备之一的输入/输出请求,所述设备是该至少一个应用程序可用的多个不同类型的设备之一,其中所述调度驱动器被配置确定一个设备是否忙;如果该设备不忙,则调度驱动器开始对一个设备的输入/输出请求,并为该至少一个应用程序提供要完成的输入/输出请求的一个估计处理时间,其中该至少一个应用程序将在估计处理时间休息,其中调度驱动器被配置为将被装载到一个操作系统,使得至少一个应用程序能够产生对该设备的输入/输出请求,并且如果设备忙,调度驱动器就计算一个直到设备可用时的估计剩余时间量,并把估计的时间提供给该至少一个应用程序。
相应地,本发明还提供一种为了在利用时间估计的调用驱动程序中实现一个协议的计算机执行的方法,包括:调用一个调度驱动程序,以便为应用程序开始对设备的输入/输出请求,该设备是应用程序可用的多个不同类型的设备之一,其中该调度驱动程序使用时间估计来实现一个协议,该时间估计使得调度驱动程序可以被一个不产生中断的设备使用;决定设备是否忙;以及如果设备不忙,为该应用程序提供要完成的输入/输出请求的估计处理时间,其中该应用程序休息估计处理时间;如果设备忙,计算设备变得可用之前的估计剩余时间量,并把估计剩余时间提供给应用程序。
本发明还提供一种为了在利用时间估计的调用驱动程序中实现一个协议的计算机执行的方法,包括:将系统时钟和与调度驱动程序关联的时钟相同步,其中时钟滴答表示系统时钟和调用驱动程序时钟同时产生一个中断的时刻;调用一个调度驱动程序,以便为应用程序开始对设备的输入/输出请求,所述设备是该应用程序可用的多个不同类型设备之一;决定设备是否忙;以及如果设备不忙,为应用程序提供要完成的该输入/输出请求的估计处理时间,其中该应用程序在估计处理时间休息;如果输入/输出请求已经完成,休息一定时器滴答区间;在休息估计处理时间之后,调用该调度驱动程序以获得输入/输出操作结果并根据获得的输入/输出结果确定输入/输出请求是否已经完成;以及如果设备忙,则计算到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序。
本发明还涉及一种使用时间估计来实现调度驱动程序中的协议的方法,包括:调用一个调度驱动程序,以便为多个应用程序之一开始对设备的输入/输出请求,该设备是应用程序可用的多个不同类型的设备之一;决定该设备是否忙;以及如果该设备不忙,为该一个应用程序提供要完成的输入/输出请求的估计处理时间,其中该应用程序休息估计处理时间,其中多个应用程序同时产生设备输入/输出请求,以及如果设备忙,则计算到设备可用时的估计剩余时间量,并将估计的剩余时间量提供给应用程序。
本发明还涉及一种使用时间估计来实现调度驱动程序中的协议的方法,包括:调用调度驱动程序,以便为第一应用程序开始对设备的输入/输出请求,该设备是第一应用程序可用的多个不同类型的设备之一;决定该设备是否忙;如果设备不忙,为第一应用程序提供一个要完成的输入/输出请求的估计处理时间,其中该第一应用程序休息估计处理时间;在休息了所述估计处理时间之后,调用该调度驱动程序以获得输入/输出操作结果,并且决定输入/输出请求是否已经完成;如果输入/输出请求已经完成,第一应用程序休息一个定时器滴答区间,如果输入/输出请求没有完成,由调度驱动程序指定一个零时间间隔;第一应用程序休息一个定时器滴答区间,从而由第一应用程序产生一个时间片;和由操作系统调度程序将CPU切换到下一个应用程序,同时使第一应用程序保持可运行;以及如果设备忙,则计算到设备可用时的估计剩余时间量,并将估计的剩余时间量提供给应用程序。
本发明又提供一种使用时间估计来实现调度驱动程序中的协议的方法,包括:调用调度驱动程序,以便为应用程序开始一个对设备的输入/输出请求,该设备是应用程序可用的多个不同类型的设备之一;决定设备是否忙;以及如果设备不忙,为应用程序提供要完成的输入/输出请求的估计处理时间,其中该应用程序在所述的估计处理时间休息,其中调度驱动程序不轮询设备,因此允许快速退出调度驱动程序的关键执行部分,而无需等待一个探询;并且如果设备忙,计算直到设备可用时的估计剩余时间量,并将估计的剩余时间量提供给应用程序。
本发明另外还提供一种使用时间估计来实现调度驱动器中的协议的设备,包括:一个处理器,具有与之相连的存储器;至少一个设备可通信地耦合到所述处理器;一个调度驱动器可操作地耦合到所述处理器;至少一个应用程序存储在所述存储器中,至少一个应用程序调用调度驱动器,以便开始对至少一个设备之一的输入/输出请求,所述设备是至少一个应用程序可用的多个不同类型的设备之一;以及其中该调度驱动器被配置为判定设备是否忙;以及如果设备不忙,调度驱动器向一个驱动器发出输入/输出请求,为至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中该至少一个应用程序在估计处理时间休息,如果设备忙,调动驱动器计算直到设备可用时的估计剩余时间量,并将估计的剩余时间量提供给应用程序,其中调度驱动器使用时间估计来实现一个协议,所述时间估计使得该调度驱动器能够使用一个不产生中断的设备。
本发明还提供一种使用时间估计来实现调度驱动器中的协议的设备,包括:一个处理器,具有与之相连的存储器;可通信地耦合到所述处理器的设备;可操作地耦合到所述处理器的调度驱动器;该存储器存储有应用程序,所述应用程序调用调度驱动器,以便开始对设备的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;以及其中调度驱动器被配置来确定设备是否忙;如果设备不忙,调度驱动器就为一个驱动器启动一个输入/输出请求,为应用程序提供将要完成的输入/输出请求的估计处理时间,其中该应用程序休息估计处理时间,其中如果该输入/输出请求已经完成,所述应用程序休息一定时器滴答区间,以及其中系统时钟被同步到与该调度驱动器相关的时钟上,其中定时器滴答指示了系统时钟与调度驱动器时钟同时产生一个中断的时刻;如果设备忙,计算直到设备可用时的估计剩余时间量,并将估计的时间提供给应用程序。
本发明也提供一种使用时间估计来实现调度驱动器中的协议的设备,包括:一个处理器,具有与之相连的存储器;可通信地耦合到所述处理器的至少一个设备;可操作地耦合到所述处理器的调度驱动器;所述存储器存储在所述处理器上运行的至少一个应用程序,所述至少一个应用程序调用调度驱动器以便开始对至少一个设备的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;其中调度驱动器被配置来确定设备是否忙;如果设备不忙,调度驱动器为至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中至少一个应用程序休息估计处理时间,以及如果设备忙,调度驱动器计算直到一个设备可用时的估计剩余时间量,并将估计的时间提供给至少一个应用程序,其中多个应用程序同时产生设备输入/输出请求。
本发明还涉及一种使用时间估计来实现调度驱动器中的协议的设备,包括:一个处理器,具有与之相连的存储器;可通信地耦合到所述处理器的至少一个设备;可操作地耦合到所述处理器的调度驱动器;所述存储器存储在所述处理器上运行的至少一个应用程序,所述至少一个应用程序调用调度驱动器,以便开始对至少一个设备之一的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;以及该调度驱动器被配置来确定设备是否忙;以及如果设备忙,调度驱动器计算直到一个设备可用时的估计剩余时间量,并将估计的时间提供给至少一个应用程序,如果设备不忙,调度驱动器为该至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中该至少一个应用程序休息估计处理时间,其中如果该输入/输出请求已经完成,所述至少一个应用程序休息一定时器滴答区间,以及其中如果该调度驱动器指定一个零时间间隔,该至少一个应用程序休息一定时器滴答区间,由此该至少一个应用程序获得一时间片,并且一个操作系统调度程序切换到下一应用程序,同时允许上述至少一个应用程序仍然可运行。
此外,本发明还涉及一种使用时间估计来实现调度驱动器中的协议的设备,包括:一个处理器,具有与之相连的存储器;可通信地耦合到所述处理器的至少一个设备;可操作地耦合到所述处理器的调度驱动器;所述存储器存储在所述处理器上运行的至少一个应用程序,所述至少一个应用程序调用调度驱动器,以便开始对至少一个设备之一的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;其中调度驱动器被配置为确定设备是否忙;如果设备忙,调度驱动器计算直到一个设备可用时的估计剩余时间量,并将估计的时间提供给至少一个应用程序,如果设备不忙,调度驱动器为该至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中该至少一个应用程序休息估计的处理时间,其中该调度驱动器不对至少一个设备进行轮询,由此允许退出调度驱动器的关键执行部分,而无需等待一个轮询。
附图说明
从本发明下面的说明,本发明的特征和优点将变得十分明显,其中,
图1是示意图,表示一个计算机系统环境实例,在其中实现本发明的一个实施例。
图2表示根据本发明的一个实施例用于一个应用程序的处理的流程图,该应用程序与调度程序交互作用,并使用时间估计执行对一个设备的输入/输出(I/O)事务处理。
图3表示根据本发明的一个实施例用于调度驱动程序的处理的流程图,为开始一个I/O请求和给应用程序提供为一个I/O事务处理估计的处理时间。
图4表示根据本发明的一个实施例用于调度驱动程序的处理的流程图,为给应用程序提供I/O操作结果或给所述应用程序提供为要完成的I/O事务处理剩余的估计处理时间。
具体实施方式
本发明提供一种用于调度驱动程序的方法和装置,它使用时间估计实现一个协议,用于不产生中断的设备。应用程序调用该调度驱动程序以开始对一个设备的输入/输出(I/O)请求。该调度驱动程序决定设备是否忙。如果设备不忙,则调度驱动程序启动对该设备的I/O请求,和给应用程序提供为要完成的I/O请求的估计的处理时间(EPT)。
在一个实施例中,如果设备忙,则调度驱动程序计算到该设备可为应用程序使用时估计的剩下的时间量(EATL),并提供这一EATL给应用程序。当设备不忙时,应用程序休息估计的处理时间(EPT)并调用调度驱动程序以获得I/O操作结果。如果I/O请求已经完成,则调度驱动程序给应用程序提供I/O操作结果。
然而,如果I/O请求尚未完成,则调度驱动程序为要完成的I/O请求计算估计的剩余处理时间(EPTR)并提供该EPTR给应用程序。然后应用程序休息估计的剩余处理时间(EPTR),并再次调用调度驱动程序以获得I/O操作结果。这些操作可以重复,直到I/O请求完成。
在下面的说明中,将详细说明本发明的各种实施例。然而,包含这些细节是为了方便理解本发明和为说明为实现本发明的例示实施例。不应该使用这些细节来限制本发明到所说明的特定的实施例,因为在本发明的范围内仍然可以有其它变种和实施例。此外,虽然叙述了大量细节以便提供彻底理解本发明,但是对熟悉本技术领域的人显然,为实现本发明这些细节不是必需的。在其它场合,诸如公知的电气结构和电路这些细节以方框图形式表示,以便不模糊本发明。
图1是一个示意图,表示一个示例计算机系统环境,在其中实现本发明的一个实施例。本发明可以以一个主计算机100实现。主计算机100可以包括至少一个中央处理单元(CPU)110,主总线120,存储器控制器集线器(MCH)130,系统存储器140,输入/输出控制器集线器(ICH)150,非易失存储器、或系统闪存160,和至少一个输入/输出(I/O)设备170。I/O设备170可以包括监视器172,键盘174,调制解调器178,打印机180,和存储设备182(例如光盘驱动器,硬盘驱动器,软盘驱动器等),以及其它任何类型的I/O设备。
MCH 130可以集成到集成多种功能的芯片组中,诸如存储器控制器和主从总线接口。相似地,ICH 150可以与MCH 130一起或分开集成到一个芯片组中以执行I/O功能。为清楚起见,未表示出所有的外设总线。可以想见,主计算机100还可以包括诸如外设部件互连(PCI)、加速图形端口(AGP)、工业标准结构(ISA)总线、和通用串行总线(USB)等外设总线。
CPU 110表示任何结构类型的中央处理单元,诸如复杂指令集计算机(CISC)、精减指令集计算机(RISC)甚长指令字(VLIW)、或混合结构。在一个实施例中,CPU与Intel结构(IA)处理器兼容,诸如PentiumTM系列,IA-32TM和IA-64TM。在一个实施例中,计算机100可以是单处理器系统,诸如台式计算机,它只有一个主中央处理单元,例如处理器110。在另外的实施例中,主计算机100可以包括多个处理器,例如,处理器110、110a、110b等。这样,主计算机100可以是具有任何数目处理器的多处理器计算机系统。例如,多处理器主计算机100可以作为服务器或工作站环境的一部分操作。下面详细讨论处理器110的基本说明和操作。熟悉本技术领域的人理解,根据本发明的一个实施例,处理器110的基本说明和操作适用于处理器110a和110b,以及可以用于多处理器主计算机系统100的任何数目的处理器。
主总线120提供接口信号以允许处理器110或处理器110、110a、和110b与其它处理器或设备例如MCH 130通信,MCH 130提供为存储器和输入/输出设备诸如系统存储器140和ICH 150的控制和配置。系统存储器140存储系统代码和数据,诸如操作系统185、调度驱动程序189、和应用程序190。系统存储器140可以以动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)实现。ICH 150执行传统I/O功能以控制I/O设备170。
I/O设备170可以包括I/O设备以执行I/O功能。I/O设备170可以包括监视器172、键盘174、调制解调器178、打印机180、和存储设备182(例如光盘驱动器,硬盘驱动器,软盘驱动器等),以及其它任何类型的I/O设备,例如用于输入设备(鼠标,轨迹球,指点设备)的控制器,介质卡(例如音频,视频,图形),网络卡,和任何其它外设控制器。通常,I/O设备170可以定义为物理硬件的一个离散的物件,它可以以电方式耦合到主计算机100,使得在主CPU 110上运行的软件可以使用定义的指令序列改变该设备的物理或电气状态。当I/O设备170以电方式耦合到主计算机100上时,称为被耦合到主计算机。
设备输入/输出(I/O)是一个过程,通过该过程一个定义的机器指令序列使用电(通常是数字)信号引起主CPU 110改变耦合的I/O设备170的物理或电气状态。I/O请求是由主CPU产生的一个电信号,该信号在I/O设备中产生原子的物理或电气状态的改变。通常,I/O请求在主CPU产生引起原子设备状态改变的信号时的时间点被启动,而在当一个设备响应来自主CPU的信号完成改变状态时的时间点完成。在I/O请求被启动和它被完成之间的时间期间,I/O设备处理该请求。
一个I/O请求的处理时间是在当一个I/O请求被启动和当它被完成之间持续的时间期间。一个特定请求的处理时间取决于为I/O设备170完全实现所请求的状态改变所需要的时间。对于某些请求,处理时间是确定的。对于这些请求的处理时间可以以高准确度决定,只要给出请求类型和参数。对于一些请求,处理时间是不确定的。不能单独从请求类型和参数决定为这些请求的精确的处理时间。这通常意味着,处理时间从一个这种请求到另一个随机变化,或者正比于一个或者多个环境因素。取决于请求的性质,处理时间的估计可以以不同的精确程度进行。
当I/O设备170忙时,不能启动I/O请求,因为该设备正在处理它的最大数目的同时请求。对于大多数I/O设备的最大数目的同时请求是1。每当这种设备正在处理任何请求时,它们便忙。某些设备可以同时处理两个或更多请求。这些设备在处理一个请求时可以处理对一个新请求的启动。这种设备通常对在处理其它请求时可以处理的请求类型施加某些限制。这种设备通常对可以被同时处理的请求类型施加某些限制。这样,一个设备是否忙可以根据希望的请求的性质决定。
系统存储器140存储诸如操作系统185的系统代码和数据,至少一个诸如调度驱动程序189的驱动程序,和应用程序190。操作系统185是软件部件的集合,它们提供基本系统操作。操作系统185管理建立、撤消和调度处理环境(contexts),以及响应用户请求加载软件部件。操作系统185管理处理环境,以及响应用户请求加载软件部件。操作系统185管理处理环境,以建立在具有有限数目的CPU 110(例如1个)的单一主计算机100上同时运行的任何数目的活动的软件部件的假象。它的部件常常被限制到使用系统特征的一个小的子集。
根据本发明的一个实施例,调度驱动程序189是一个主要设计为代表其它软件部件包括操作系统185和应用程序190执行设备I/O的软件部件。调度驱动程序189用作操作系统的一部分。特别是,本发明提供一种用于调度驱动程序189的方法和装置,它使用时间估计实现一个协议,使得调度设备驱动程序可用于不产生中断的设备。在图1中只表示出一个调度设备驱动程序,然而,应该理解,可以有任何数目的调度设备驱动程序189,取决于存在有多少I/O设备170。
通常,设备驱动程序以高的CPU优先级运行,使得它们可以访问启动I/O请求需要的特征。设备驱动程序需要仔细与操作系统协作,以便维护系统稳定性和性能。因为驱动程序作用为操作系统的一部分,因此许多系统特征不能用于驱动程序代码。在一些操作系统中,设备驱动程序可以是活动的部件,但是在大多数操作系统中,设备驱动程序是被动部件,诸如根据本发明的一个实施例的调度驱动程序189。产生I/O请求的多条驱动程序代码常常运行在不管什么应用程序请求的设备I/O的处理环境中。设备驱动程序存在,以便允许书写应用程序而不需要特别知道如何使用各种设备。相反,应用程序使用对操作系统定义的一组调用来实现设备I/O。这种结构允许使用不同的驱动程序来接口不同的设备而不需要应用程序明显地支持每一类型可用的设备。
应用程序190是软件程序(例如,字处理器,数据库,游戏等),其由主计算机100使用,下面会讨论,需要为I/O处理使用设备驱动程序。一般,应用程序190是任何不属于操作系统185一部分的软件部件。应用程序通常不直接与设备170相互作用。反之,它们通过调用操作系统部件和/或设备驱动程序请求I/O。
操作系统185、调度设备驱动程序189、和应用程序190都由多条代码组成。一条代码是具有任意大小的CPU机器指令的一个有序集合。当单一主CPU 110中断它的有顺序的指令时执行或运行一条代码,一次一条。每一条指令产生处理器的内部寄存器的状态的一个定义的改变,和/或主机主存储器的内容的定义的改变。一定的指令可以通过改变下一次执行哪一条指令而改变执行顺序(控制转移)。其它的指令可以引起CPU 110启动I/O请求。可以中断一条代码以便允许CPU执行其它任务(通过运行其它条代码),然后在曾经中断的点恢复。CPU在正常运行时总是运行某些条代码。
处理环境是代码运行的软件环境。处理环境包括在代码中的存储器地址和物理存储器位置(地址空间)之间的映射,CPU寄存器的内容,和执行堆栈(用于临时存储的存储器)。当中断一条代码以允许CPU 110执行其它任务时,保存它的环境以便它可以在以后在恢复执行该代码前能够恢复。这一机构允许该代码恢复运行和处理,就像它未曾被中断似的,这可以帮助建立多于一条代码同时在单CPU 110上运行的假象。在具有几个CPU 110-110b的主计算机100上,一条代码可以在一个CPU上运行一会儿,中断,然后在不同的CPU上恢复,不破坏连续性的假象。单一主计算机可以具有几个处理环境,但是在一个给定的时间点每一CPU只可以有一个处理环境是活动的。这一活动的处理环境是为当前在该CPU上运行的代码的软件环境。一个处理环境从不在多于一个CPU上同时活动。
软件部件是任何离散的代码,对它们存在有定义的机构,以引起这些代码被加载到系统存储器140中,和由CPU 110执行。通常,加载机构为该部件定义的任何全局变量(例如状态信息)自动分配存储器。一个软件部件事例是一个加载的软件部件的事例,包括该部件的代码和为在主存储器中存储全局变量的存储器,可在某些地址空间访问。通常软件部件的一个特别的事例总是运行在一个特定的处理环境中,但是这并不总是这样。
活动的软件部件被设计成在一个或多个专用的处理环境中运行。当加载一个活动的软件部件时,加载代理程序建立一个新的处理环境(它可以包括一个新的地址空间)。它初始化这一环境,使得该部件的代码将在这一环境为主CPU第一次编程活动时的一个预先定义的主入口点开始运行。然后使新建立的处理环境可为调度由操作系统使用。活动的软件部件的每一事例是自治的和独立的。它必须同步它的活动与其它与它相互作用的软件部件。一个活动的软件部件可以具有设计同时运行在几个处理环境上的代码(多线程执行)。通常,这一类型的部件的初始化代码建立附加的处理环境,并使它们可用于运行。当活动的部件的代码结束执行时自动加载活动部件,这一点是普通的,虽然不是必需的(例如当CPU达到部件代码的末尾时,它必须转移控制到某些系统代码,因为再没有部件代码可以运行。这一系统代码可以设计为自动卸载处理环境)。
被动软件部件被设计成周期地运行在为某些另外的活动的部件建立的处理环境中。被动软件部件事例通常加载到为活动的对方建立的地址空间中。在初始化后,它们仅当另一个部件使用调用指令转移控制给它们时才运行。通常,被动部件事例在它们每次被调用时执行定义的任务,然后它们返回控制给调用部件。一个被动部件可以调用其它的被动部件。一次调用的目的是一个函数(亦即使用一条调用指令转移控制给一条代码称为调用函数)。每一函数是一条执行一个定义的任务然后返回控制给执行调用指令的代码的代码。当控制被返回时,调用代码从调用指令后的第一条指令开始继续执行。
操作系统(OS)185包括调度程序192,后者是在处理环境之间周期切换CPU 110或多个CPU(110-110b)的一条代码。这一切换(称为处理调度或线程调度)保证所有获得的软件部件似乎平稳和连续运行,每一个接收到公平的共享CPU时间。系统定时器194是这样一个设备,其目的是以规律的间隔产生中断。通常,操作系统提供中断服务子例程(ISR)来处理这一中断。一般,调度程序192使用这一硬件中断以跟踪时间和调度处理环境运行。此外,由调度驱动程序189使用一个驱动程序时钟196来跟踪时间,并用于决定估计的处理时间,下面会说明。驱动程序时钟196与系统定时器194在锁定步骤同步。一个定时器的滴答(tick)指示系统定时器194和驱动程序时钟196同时产生一个中断的时刻。在每一定时器滴答时更新系统时间,而其它活动诸如处理调度和估计处理时间可以发生。定时器滴答区间(TTI)是在任何两个相邻的定时器滴答之间的时间期间(在一个定时器滴答发生和后随的一个定时器滴答发生之间的时间期间)。
当一条代码“被封锁”时,它暂停或停止它的执行而等待某些外部事件(诸如I/O完成或某些从在不同处理环境中运行的软件部件来的信号)发生。通常,调度程序192切换正在运行代码的CPU 110到不同处理环境,而被封锁的代码在它等待的事件发生前不安排再次运行。封锁调用是对可以封锁的功能进行的调用。普通类型的封锁调用是封锁系统调用,这是一个系统调用,它可以封锁-通常等待设备I/O完成。
当在当前环境中运行的部件明显地执行一定的动作(诸如产生控制或进行封锁系统调用)时协作调度程序只切换CPU到不同的处理环境。这称为协作调度程序是因为主计算机上的软件部件必须协作以便保证每一个得到公平的CPU时间的份额。一个先发调度程序切换CPU到一个不同的处理,或者当在当前环境中运行的部件明显执行一定的动作,或者当一定量的时间逝去而没有进行环境切换。先发调度程序通常在定时器滴答处理期间周期地运行以决定一个不同的处理环境是否应该在一个特定的CPU上运行,和在需要时执行环境切换。用先发调度程序调度应用程序处理环境的操作系统可以给出令人相信的同时执行多个应用程序的假象。
当应用程序190休息时,它明显封锁一个指定的时间区间。通常,休息是一个封锁系统调用,它在给定的时间区间逝去后的一定时间前不返回控制。在这一时间区间期间,其它处理环境可以在进行休息调用的CPU 110上运行。当处理环境可用于被执行时它是可运行的。当调度CPU时间时调度程序192只能从可运行处理环境组中选择。已被封锁的处理环境在它等待的事件发生前是不可运行的。例如,一个正在休息的处理环境将在给定的时间期间逝去后才能再次可运行。
本发明的一个实施例使用时间估计提供一种用于调度驱动程序189的方法和装置以实现一种协议,使得调度驱动程序189可用于不产生中断的设备170。在图1的示例环境内实现本发明时,假定耦合的I/O设备170一时只可以处理单一请求。如前所述,I/O设备170耦合到具有一个或者多个CPU(110-110b)的主计算机100上。另外,主计算机100具有加载到系统存储器140中的操作系统185。在一个实施例中,操作系统185使用一个先发调度程序来调度应用程序190在其中运行的处理环境。还提供一种机构来加载应用程序并使其可对调度程序192用于运行。调度驱动程序189加载到操作系统185中,使得应用程序190可以使用调度驱动程序189对耦合的设备170产生I/O请求。在一个实施例中,调度驱动程序189是一个被动软件部件,调度驱动程序189的单一事例在访问设备170的所有应用程序190之间共享。
即使主计算机100只有一个CPU 110,也可以在一个单驱动程序功能上同时放置几个处理环境。在这些环境下,因为每一处理环境都被驱动在CPU 100上运行,因此调度驱动程序189的功能的某些部分的代码被执行。这将建立驱动程序功能同时由多于一个应用程序190调用的假象。这样,在理论上,在一个给定时间点,任意数目的应用程序190可以同时调用调度驱动程序189以产生设备I/O请求。在多于一个CPU(110-110b)的主计算机100上,这一点确实是真的,因为驱动程序代码可以同时在几个CPU上运行。从调度驱动程序189请求设备I/O的应用程序190既可以是被动的软件部件,也可以是主动的软件部件。调度驱动程序189保持一个“被锁定的标志”,其通常由在系统存储器140中存在的一个特定地址处的一个特定数值表示,以指示它有一个I/O请求在进行。调度驱动程序189可以检查设备170的状态以决定是否由该设备已经完成一个特定的I/O请求。调度驱动程序189使用驱动程序时钟196跟踪逝去的时间。
在一个实施例中,本发明为调度驱动程序189提供一种方法和装置来使用时间估计实现一种协议,使得调度驱动程序189可用于不产生中断的设备170。应用程序190可以调用调度驱动程序189开始对设备170的一个输入/输出(I/O)请求。调度驱动程序189决定设备170是否忙。如果该设备不忙,则调度驱动程序189给应用程序提供为要完成的I/O请求的一个估计的处理时间(EPT)。
如果设备170忙,则调度驱动程序189计算到设备170可用于应用程序190时的一个估计的剩下的时间量(EATL)并提供这一EATL给应用程序190。当设备170不忙时,应用程序190休息估计的处理时间(EPT)并调用调度驱动程序189来获得I/O操作结果。如果I/O请求已经完成,则调度驱动程序提供I/O操作结果给应用程序。
然而,如果I/O请求尚未完成,则调度驱动程序189为要完成的I/O请求计算一个估计的剩余处理时间(EPTR)并提供该EPTR给应用程序190。然后应用程序190休息该估计的剩余处理时间(EPTR)并再次调用调度驱动程序189以获得I/O操作结果。这些操作可以重复,直到I/O请求完成。转向图2-4,详细讨论在应用程序190和调度驱动程序189之间的相互反应。
图2表示根据本发明的一个实施例用于一个应用程序的处理200的流程图,该应用程序与调度驱动程序交互作用,并使用时间估计执行对一个设备的输入/输出(I/O)事务处理。在开始时(框205)处理200调用调度驱动程序开始I/O请求(方框210)。应用程序对调度驱动程序的一个处理进行调用以开始该I/O请求,和处理200前进到图3中表示的处理300的入口点310(方框210)。
根据本发明的一个实施例,任何数目的应用程序可以在任何时间点并发访问调度驱动程序要求调度驱动程序产生设备I/O请求。然而,该设备一时只能处理一个请求,使得调度驱动程序一时只能服务应用程序对一个设备的一个I/O请求,而使其它应用程序等待。这样,每一应用程序轮番被服务,使得高度公平。
转向图3,图3表示根据本发明的一个实施例用于调度驱动程序的处理300的流程图,为开始一个I/O请求,和给一个应用程序提供为完成一个I/O事务处理而估计的处理时间。在入口点(框310),处理300决定是否设定了锁定标志。如果设定了锁定标志,则处理300计算到设备再次空闲时估计的剩下的时间量(EATL)(方框320)。这样,该设备当前忙于服务另一请求。通过从该请求原来估计的处理时间(EPT)中减去从正被处理的当前请求被开始时逝去的时间计算估计的剩下的时间量(EATL)。如果EATL的计算是负的,则设定该EATL计算为零(方框320)。接着,处理300提供到该设备将可用于应用程序的估计的剩下的时间量(EATL)(方框325)。然后处理300返回一个“忙”信号给处理200,并前进到在图2表示的处理200的方框215(方框300)。
另一方面,如果未设定封锁的标志,则启动I/O请求(方框335)并设定封锁的标志(方框340)。另外,为要完成的I/O请求决定估计的处理时间(EPT)。在设备自身为要完成的I/O请求计算估计的处理时间(EPT)的场合,处理300在启动该请求后立即从该设备接收这一值(方框345)。另外可选,处理300自身可以计算估计的处理时间(EPT)(方框345)。例如,调度驱动程序根据请求类型和其它参数可以有一个平均EPT的表。另外,处理300记录该请求被启动的当前时间(方框345)。接着,处理300提供为要完成的I/O请求估计的处理时间(EPT)给应用程序(方框350)。然后处理300返回一个“不忙”信号给处理200并前进到图2所示处理200的方框215(方框355)。应该理解,为实现为调度驱动程序的处理300的代码是该代码的一个关键部分,并且是不能重新进入的一条代码。这意味着,一旦该代码开始在一个处理环境中运行,则它不能在任何其它处理环境(无论在同一CPU或不同CPU上)中运行,直到它结束在原来环境中的运行。希望进入该代码的其它处理环境在当前正处于该代码中的环境结束运行它前必须封锁。
返回图2,在框215,处理200根据来自处理300的输入决定设备是否忙。如果设备“忙”,则处理200引起应用程序休息由处理300决定的估计的剩下的时间量(EATL)(框220)。如果EATL值设定为零,则应用程序休息一个时间滴答间隔(TTI)(框220)。另外,在休息指定的时间量后,处理200再次从框210的开始处开始。
然而,如果设备“不忙”,则处理200引起应用程序休息来自处理300的估计的处理时间(EPT)(框225)。如果EPT值设定为零,则应用程序休息一个时间滴答间隔(TTI)(框225)。在休息指定的时间量后,处理200调用调度驱动程序以获得I/O操作结果,处理200前进到图4所示处理400的入口点410(框230)。
调度驱动程序是在应用程序之间协调定时的单一代理程序。每一应用程序精确休息由调度驱动程序指定的时间期间。在驱动程序指定一个零时间区间的任何时间,应用程序通过休息一个定时器滴答间隔(TTI)产生它自己的时间片。这使得操作系统调度程序切换CPU到队列中的下一应用程序,但是当前应用程序保持可运行。另外,调度驱动程序这样协调休息时间,使得当有应用程序休息时,它将在同一定时器滴答中变得可运行。
图4表示根据本发明的一个实施例用于调度驱动程序的处理400的流程图,以提供I/O操作结果给应用程序或给所述应用程序提供为要完成的I/O事务处理估计的剩余处理时间。在入口点(框410),处理400决定设备是否仍然忙于处理I/O请求(框415)。如果设备仍然忙于处理I/O请求,则处理400计算估计的剩余处理时间(EPTR)(框420)。从它的估计处理时间(EPT)中减去从该请求被启动逝去的时间计算EPTR。如果该TPTR值是负的,则设定该EPTR值为零(框420)。接着,处理400给应用程序提供该EPTR值(框425)。处理400返回一个“工作”信号给处理200并前进到图2所示处理200的框235(框430)。
另一方面,如果处理400已经完成I/O请求,则处理清除锁定标志(框435)。接着,处理给应用程序提供I/O操作结果(从该设备接收到的)(框440)。处理400返回一个“完成”信号给处理200并前进到图2所示处理200的框235(框445)。如同为处理300的代码一样,为实现用于调度驱动程序的处理400的代码是代码的关键部分,并且是一条不可重新进入的代码。在任何给定的时间,任何数目的应用程序可以等待锁定标志被清除,以便它们可以启动它们的请求。
返回图2,处理200根据来自处理400的输入决定设备是否仍在工作。如果该设备仍在工作,根据从处理400接收的“工作”信号,则处理200引起应用程序休息估计的剩余处理时间(EPTR)(框240)。如果EPTR值设定为零,则应用程序休息一个定时器滴答区间(TTI)(框240)。在休息指定量的时间后,处理200返回到框230以再次调用调度驱动程序以尝试和获取I/O操作结果(框230)。
然而,如果处理400已经完成I/O请求并给处理200提供I/O操作结果和返回一个“完成”信号给处理200,则该I/O请求由应用程序处理(框245)接着,处理200引起应用程序在继续前休息一个定时器滴答区间(TTI)(框250)。这将允许其它等待的应用程序在这一应用程序完成I/O请求后立即运行,这对保证公平是必需的。然后处理200结束(框255)。
为应用程序与调度驱动程序的交互作用的处理为许多竞争应用程序提供一种优雅的方式来公平共享对不产生中断的设备的访问。另外,本发明实现这一点而不引起系统性能的问题,这通过使用对设备完成每一请求需要多长时间的估计实现。因为所有等待的应用程序变成在同一定时器滴答中可运行,因此调度驱动程序以和假定它们所有都被锁定以等待设备变得可用的调度顺序调度它们。然而,这假定OS调度程序公平地从一组同时刚刚变得可运行的处理环境之中取下一个处理环境运行。这样,调度驱动程序的公平性还基于由操作系统的调度程序调度处理环境的公平性。例如,本发明可相当好地用于由微软窗口(MicrosoftWindows)操作系统(例如Windows 98,Windows NT 4.0,Windows 2000)使用的轮询调度程序,它们操作的相当公平。一般,本发明最适用于这样的操作系统,其中应用程序一般处于同样的优先级和特别的优先级以轮询顺序运行。然而,应该理解,本发明也可以很好地用于多种使用不同优先级模式的操作系统调度程序。
应该理解,前述功能部件可以以硬件、软件、或硬件和软件的组合实现。当以软件实现时,本发明的元件是执行必需的任务的代码段。程序或代码段可以存储在机器可读的介质中,诸如处理器可读介质或计算机程序产品,或在传输介质上由以载波实现的计算机数据信号、或由载波调制的信号传输。可机读介质可以包括可以存储或传输形式为可由机器(例如处理器或计算机等)读或执行的信息的任何介质。机读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦写可编程ROM(EPROM)、软盘、紧致盘CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路等。计算机数据信号可以包括任何可以在传输介质上传播的信号,诸如电子网络通道、光纤、空气、电磁、RF链路等。代码段可以通过计算机网络诸如因特网、企业内部网下载。
特别是,在本发明的一个实施例中,调度驱动程序189通常可以在主计算机100中作为一个或多个计算机程序实现,这些计算机程序在操作系统185的控制下执行以执行先前说明的希望的功能。
计算机程序由指令(例如代码段)组成,其当由计算机读取并执行时引起计算机执行为实现和/或使用本发明所必需的操作。一般说,计算机程序可感知地以设备、载体或介质体现和/或从其读取,所述介质例如有存储器、数据存储设备、和/或通过数据通信设备耦合到计算机的远程设备。在操作系统的控制下,计算机程序可以从存储器、数据存储设备、和/或远程设备加载到计算机的存储器中为在操作期间使用。
这样,根据本发明的一个实施例调度驱动程序189可以作为一种方法、装置、或可机读介质(例如处理器可读介质或计算机可读介质)实现,使用标准的编程和/或工程技术以产生软件、固件、硬件、或任何它们的组合。在这里使用的术语“可机读介质”(或另外可说“处理器可读介质”或“计算机可读介质”)意在包括为读取和执行可从任何机器/处理器/计算机访问的介质。当然,熟悉本技术领域的人将认识到,对这一结构可以进行许多修改而不离开本发明的范围。
应用程序与调度驱动程序的相互反应的处理,根据本发明的一个实施例,为许多竞争应用程序提供一种优雅的方式来公平共享对不产生中断的设备的访问。本发明实现这一点而不引起系统性能的问题,这通过使用对设备完成每一请求需要多长时间的估计实现。另外,本发明可以用于大多数操作系统。它绝不封锁调度驱动程序-所有封锁都以应用程序代码进行。另外,即使设备请求同步在不同的操作系统上以不同的方式进行,但是在本发明中使用的处理倾向于使其可移植。
另外,本发明优雅地解决当一个设备可以取非常长的时间(几秒或更长)来服务一个请求时产生的问题,因为应用程序的处理环境在请求期间在休息状态下只保持在封锁状态和调度驱动程序是被动的和空闲的。当该请求正被处理时,没有什么调度驱动程序资源需要由任何处理环境拥有。所以,如果一个处理环境在一个设备请求期间非正常结束,则系统不会失去稳定性。特别是,在调度驱动程序的关键段中的代码不封锁和轮询,允许这些部分迅速激励,它们对系统的稳定性、性能、和响应性很重要。另外,在调度驱动程序中不进行轮询任何东西。主CPU在I/O处理期间自由执行其它任务。
本发明的应用程序侧可以容易地容放在一个程序库中,这将使设备请求从其它应用程序侧的观点看上去像一个封锁调用。另外,本发明使用一般可用于大多数操作系统上的基元(亦即休息,获得当前系统时间)。使用调度驱动程序实现的本发明的处理对竞争应用程序公平。
虽然参考图示实施例说明了这一发明,但是这一说明不打算解释为限制的意义。图示实施例的各种修改、以及对熟悉本发明所属技术领域的人来说是显然的本发明的其它实施例,被视为在本发明的精神和范围内。
Claims (38)
1.一种在调度驱动程序中利用时间估计来实现协议的方法,包括:
将调度驱动程序下载到操作系统中,使得应用程序能够向设备产生输入/输出请求;
调用一个调度驱动程序,为一个应用程序开始对一个设备的输入/输出请求,所述设备是可由该应用程序使用的多个不同类型的设备之一;
决定所述设备是否忙;
如果该设备不忙,为应用程序提供要完成的输入/输出请求的一个估计处理时间,其中该应用程序在所述估计处理时间休息;以及
如果该设备忙,计算一个到该设备可用之前的估计剩余时间量,并将该估计剩余时间量提供给应用程序。
2.权利要求1的方法,其中,决定设备是否忙包括决定是否设定了一个锁定标志,如果设定了锁定标志,则设备忙,如果未设定锁定标志,则设备不忙。
3.权利要求1的方法,另外包括,如果在确定设备是否忙的步骤确定设备不忙的话,则设定一个锁定标志。
4.权利要求3的方法,另外包括,在休息估计处理时间后,调用调度驱动程序以获得输入/输出操作结果,并决定该输入/输出请求是否已经完成。
5.权利要求4的方法,另外包括,如果输入/输出请求已经完成的话,清除锁定标志。
6.权利要求4的方法,另外包括,如果输入/输出请求已经完成的话,提供一个输入/输出操作结果。
7.权利要求4的方法,另外包括,如果输入/输出请求已经完成的话,则休息一个定时器滴答区间。
8.权利要求4的方法,另外包括,如果输入/输出请求未完成的话,则为要被完成的输入/输出请求计算一个估计的剩余处理时间,并提供该估计的剩余处理时间给应用程序。
9.权利要求8的方法,当输入/输出请求未完成时,另外包括:
在估计的剩余处理时间休息;
在休息估计的剩余处理时间后,调用调度驱动程序以获得输入/输出操作结果;
决定该输入/输出请求是否已经完成。
10.权利要求4的方法,另外包括:
如果输入/输出请求尚未完成的话,则为要被完成的输入/输出请求计算一个估计的剩余处理时间,并提供该估计的剩余处理时间给应用程序;
在估计的剩余处理时间休息;
在休息估计的剩余处理时间后,调用调度驱动程序,以获得输入/输出操作结果;和
在装载调度驱动程序后,重复执行以下操作:计算估计的剩余处理时间、在估计的剩余处理时间休息、和调用调度驱动程序以获得输入/输出操作结果,直到输入/输出请求已经完成。
11.权利要求1的方法,当设备忙时,另外包括:
在估计剩余时间量休息;
在休息该估计剩余时间量后,调用调度驱动程序来开始对设备的输入/输出请求;
决定设备是否仍然忙。
12.权利要求11的方法,如果设备仍然忙,另外包括:
计算到该设备可用时的估计剩余时间量;
在该估计剩余时间量休息;
在休息该估计剩余时间量后,调用调度驱动程序为一个应用程序开始对设备的输入/输出请求;和
如果输入/输出请求尚未开始,则在装载调度驱动程序后重复执行以下操作:计算估计剩余时间量、在该估计剩余时间量休息、和调用调度驱动程序开始输入/输出请求,直到输入/输出请求已经开始。
13.如权利要求1所述的方法,其中该调度驱动程序是一个被动软件组件。
14.如权利要求1所述的方法,其中调度驱动程序运行的单次发生由访问该设备的多个应用程序共享。
15.一种在应用时间估计的调度驱动器中实现一个协议的装置,包括:
一个处理器,具有耦合到它的存储器;
至少一个和处理器可通信地耦合的设备;
可操作地耦合到所述处理器的调度驱动器;
所述存储器存储至少一个应用程序,该至少一个应用程序调用调度驱动器,来开始对至少一个设备之一的输入/输出请求,所述设备是该至少一个应用程序可用的多个不同类型的设备之一,其中所述调度驱动器被配置确定一个设备是否忙;
如果该设备不忙,则调度驱动器开始对一个设备的输入/输出请求,并为该至少一个应用程序提供要完成的输入/输出请求的一个估计处理时间,其中该至少一个应用程序将在估计处理时间休息,其中调度驱动器被配置为将被装载到一个操作系统,使得至少一个应用程序能够产生对该设备的输入/输出请求,并且
如果设备忙,调度驱动器就计算一个直到设备可用时的估计剩余时间量,并把该估计剩余时间量提供给该至少一个应用程序。
16.权利要求15的装置,其中,所述调度驱动器通过判断是否设定了锁定标志确定所述的一个设备是否忙,如果设定了锁定标志,则设备忙,如果未设定锁定标志,则设备不忙。
17.权利要求15的装置,其中,如果设备不忙的话,则调度驱动器设定一个锁定标志。
18.权利要求15的装置,其中,在休息估计的处理时间后,应用程序被设置为调用调度驱动器,以获得输入/输出操作结果,应用程序在获得输入/输出操作结果后,确定输入/输出请求是否已经完成。
19.权利要求18的装置,其中,如果输入/输出请求已经完成的话,该调度驱动器清除锁定标志。
20.权利要求18的装置,其中,如果输入/输出请求已经完成的话,调度驱动器给应用程序提供该输入/输出请求的输入/输出操作结果。
21.权利要求18的装置,其中,如果输入/输出请求已经完成的话,则应用程序休息一个定时器滴答区间。
22.权利要求18的装置,其中,如果输入/输出请求未完成的话,则调度驱动器为要被完成的输入/输出请求计算一个估计的剩余处理时间,并提供该估计的剩余处理时间给应用程序。
23.权利要求22的装置,其中,应用程序进一步:
在估计的剩余处理时间休息;
在休息估计的剩余处理时间后,调用调度驱动器,以获得输入/输出操作结果;
决定该输入/输出请求是否已经完成。
24.权利要求22的装置,其中,应用程序:
决定输入/输出请求是否已经完成;
休息由调度驱动器计算的估计的剩余处理时间;
在休息估计的剩余处理时间后,调用调度驱动器,以获得输入/输出操作结果;
如果输入/输出请求尚未完成,则重复执行以下操作:决定输入/输出请求是否已经完成、休息估计的剩余处理时间、和调用调度驱动器以获得输入/输出操作结果,直到输入/输出请求已经完成。
25.权利要求15的装置,其中,应用程序:
休息估计剩余时间量;
在休息估计剩余时间量后,调用调度驱动器为应用程序开始对设备的输入/输出请求;
决定设备是否仍然忙。
26.权利要求25的装置,其中,应用程序:
决定设备是否仍然忙;
休息由调度驱动器计算的估计剩余时间量;
在休息估计剩余时间量后,调用调度驱动器为应用程序开始对设备的输入/输出请求;以及
如果输入/输出请求尚未开始,则重复执行以下操作:决定设备是否仍然忙、休息估计剩余时间量、和调用调度驱动器开始输入/输出请求,直到输入/输出请求已经开始。
27.一种为了在利用时间估计的调用驱动程序中实现一个协议的计算机执行的方法,包括:
调用一个调度驱动程序,以便为应用程序开始对设备的输入/输出请求,该设备是应用程序可用的多个不同类型的设备之一,其中该调度驱动程序使用时间估计来实现一个协议,该时间估计使得调度驱动程序可以被一个不产生中断的设备使用;
决定设备是否忙;以及
如果设备不忙,为该应用程序提供要完成的输入/输出请求的估计处理时间,其中该应用程序休息估计处理时间;
如果设备忙,计算设备变得可用之前的估计剩余时间量,并把估计剩余时间量提供给应用程序。
28.权利要求27的方法,还包括:
在休息所述估计处理时间之后,调用调度驱动程序以获得输入/输出操作结果;
决定所述输入/输出请求是否已经完成;以及
如果输入/输出请求还未完成,计算将要完成的输入/输出请求的估计的剩余处理时间,并且提供所述估计的剩余处理时间给应用程序。
29.权利要求28所述的方法,如果设备忙,还包括:
休息估计剩余时间量;
在休息估计剩余时间量之后,调用该调度驱动程序,以便开始对该设备的输入/输出请求;以及
决定设备是否仍然忙。
30.一种为了在利用时间估计的调用驱动程序中实现一个协议的计算机执行的方法,包括:
将系统时钟和与调度驱动程序关联的时钟相同步,其中时钟滴答表示系统时钟和调用驱动程序时钟同时产生一个中断的时刻;
调用一个调度驱动程序,以便为应用程序开始对设备的输入/输出请求,所述设备是该应用程序可用的多个不同类型设备之一;
决定设备是否忙;以及
如果设备不忙,为应用程序提供要完成的该输入/输出请求的估计处理时间,其中该应用程序在估计处理时间休息;
如果输入/输出请求已经完成,休息一定时器滴答区间;
在休息估计处理时间之后,调用该调度驱动程序以获得输入/输出操作结果并根据获得的输入/输出结果确定输入/输出请求是否已经完成;
以及如果设备忙,则计算到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序。
31.一种使用时间估计来实现调度驱动程序中的协议的方法,包括:
调用一个调度驱动程序,以便为多个应用程序之一开始对设备的输入/输出请求,该设备是应用程序可用的多个不同类型的设备之一;
决定该设备是否忙;以及
如果该设备不忙,为该一个应用程序提供要完成的输入/输出请求的估计处理时间,其中该应用程序休息估计处理时间,
其中多个应用程序同时产生设备输入/输出请求,
以及如果设备忙,则计算到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序。
32.一种使用时间估计来实现调度驱动程序中的协议的方法,包括:
调用调度驱动程序,以便为第一应用程序开始对设备的输入/输出请求,该设备是第一应用程序可用的多个不同类型的设备之一;
决定该设备是否忙;
如果设备不忙,
为第一应用程序提供一个要完成的输入/输出请求的估计处理时间,其中该第一应用程序休息估计处理时间;
在休息了所述估计处理时间之后,调用该调度驱动程序以获得输入/输出操作结果,并且决定输入/输出请求是否已经完成;
如果输入/输出请求已经完成,第一应用程序休息一个定时器滴答区间,
如果输入/输出请求没有完成,由调度驱动程序指定一个零时间间隔;
第一应用程序休息一个定时器滴答区间,从而由第一应用程序产生一个时间片;和
由操作系统调度程序将CPU切换到下一个应用程序,同时使第一应用程序保持可运行;
以及如果设备忙,则计算到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序。
33.一种使用时间估计来实现调度驱动程序中的协议的方法,包括:
调用调度驱动程序,以便为应用程序开始一个对设备的输入/输出请求,该设备是应用程序可用的多个不同类型的设备之一;
决定设备是否忙;以及
如果设备不忙,为应用程序提供要完成的输入/输出请求的估计处理时间,其中该应用程序在所述的估计处理时间休息,
其中调度驱动程序不轮询设备,因此允许快速退出调度驱动程序的关键执行部分,而无需等待一个探询;并且
如果设备忙,计算直到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序。
34.一种使用时间估计来实现调度驱动器中的协议的设备,包括:
一个处理器,具有与之相连的存储器;
至少一个设备可通信地耦合到所述处理器;
一个调度驱动器可操作地耦合到所述处理器;
至少一个应用程序存储在所述存储器中,至少一个应用程序调用调度驱动器,以便开始对至少一个设备之一的输入/输出请求,所述设备是至少一个应用程序可用的多个不同类型的设备之一;以及
其中该调度驱动器被配置为判定设备是否忙;以及
如果设备不忙,调度驱动器向一个驱动器发出输入/输出请求,为至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中该至少一个应用程序在估计处理时间休息,
如果设备忙,调动驱动器计算直到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序,
其中调度驱动器使用时间估计来实现一个协议,所述时间估计使得该调度驱动器能够使用一个不产生中断的设备。
35.一种使用时间估计来实现调度驱动器中的协议的设备,包括:
一个处理器,具有与之相连的存储器;
可通信地耦合到所述处理器的设备;
可操作地耦合到所述处理器的调度驱动器;
该存储器存储有应用程序,所述应用程序调用调度驱动器,以便开始对设备的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;以及
其中调度驱动器被配置来确定设备是否忙;
如果设备不忙,调度驱动器就为一个驱动器启动一个输入/输出请求,为应用程序提供将要完成的输入/输出请求的估计处理时间,其中该应用程序休息估计处理时间,
其中如果该输入/输出请求已经完成,所述应用程序休息一定时器滴答区间,以及
其中系统时钟被同步到与该调度驱动器相关的时钟上,其中定时器滴答指示了系统时钟与调度驱动器时钟同时产生一个中断的时刻;
如果设备忙,计算直到设备可用时的估计剩余时间量,并将估计剩余时间量提供给应用程序。
36.一种使用时间估计来实现调度驱动器中的协议的设备,包括:
一个处理器,具有与之相连的存储器;
可通信地耦合到所述处理器的至少一个设备;
可操作地耦合到所述处理器的调度驱动器;
所述存储器存储在所述处理器上运行的至少一个应用程序,所述至少一个应用程序调用调度驱动器以便开始对至少一个设备的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;
其中调度驱动器被配置来确定设备是否忙;
如果设备不忙,调度驱动器为至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中至少一个应用程序休息估计处理时间,以及
如果设备忙,调度驱动器计算直到一个设备可用时的估计剩余时间量,并将估计剩余时间量提供给至少一个应用程序,
其中多个应用程序同时产生设备输入/输出请求。
37.一种使用时间估计来实现调度驱动器中的协议的设备,包括:
一个处理器,具有与之相连的存储器;
可通信地耦合到所述处理器的至少一个设备;
可操作地耦合到所述处理器的调度驱动器;
所述存储器存储在所述处理器上运行的至少一个应用程序,所述至少一个应用程序调用调度驱动器,以便开始对至少一个设备之一的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;以及该调度驱动器被配置来确定设备是否忙;以及
如果设备忙,调度驱动器计算直到一个设备可用时的估计剩余时间量,并将估计剩余时间量提供给至少一个应用程序,
如果设备不忙,调度驱动器为该至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,
其中该至少一个应用程序休息估计处理时间,
其中如果该输入/输出请求已经完成,所述至少一个应用程序休息一定时器滴答区间,以及
其中如果该调度驱动器为估计处理时间指定一个零时间间隔,该至少一个应用程序休息一定时器滴答区间,由此该至少一个应用程序获得一时间片,并且一个操作系统调度程序切换到下一应用程序,同时允许上述至少一个应用程序仍然可运行。
38.一种使用时间估计来实现调度驱动器中的协议的设备,包括:
一个处理器,具有与之相连的存储器;
可通信地耦合到所述处理器的至少一个设备;
可操作地耦合到所述处理器的调度驱动器;
所述存储器存储在所述处理器上运行的至少一个应用程序,所述至少一个应用程序调用调度驱动器,以便开始对至少一个设备之一的输入/输出请求,所述设备是应用程序可用的多个不同类型的设备之一;
其中调度驱动器被配置为确定设备是否忙;
如果设备忙,调度驱动器计算直到一个设备可用时的估计剩余时间量,并将估计剩余时间量提供给至少一个应用程序,
如果设备不忙,调度驱动器为该至少一个应用程序提供将要完成的输入/输出请求的估计处理时间,其中该至少一个应用程序休息估计的处理时间,
其中该调度驱动器不对至少一个设备进行轮询,由此允许退出调度驱动器的关键执行部分,而无需等待一个轮询。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/607,256 US6795873B1 (en) | 2000-06-30 | 2000-06-30 | Method and apparatus for a scheduling driver to implement a protocol utilizing time estimates for use with a device that does not generate interrupts |
US09/607,256 | 2000-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1449522A CN1449522A (zh) | 2003-10-15 |
CN100492298C true CN100492298C (zh) | 2009-05-27 |
Family
ID=24431488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB01814716XA Expired - Fee Related CN100492298C (zh) | 2000-06-30 | 2001-06-08 | 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6795873B1 (zh) |
EP (1) | EP1297432B1 (zh) |
CN (1) | CN100492298C (zh) |
AT (1) | ATE349734T1 (zh) |
AU (1) | AU2001268286A1 (zh) |
DE (1) | DE60125540T2 (zh) |
HK (1) | HK1052067A1 (zh) |
WO (1) | WO2002003212A2 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030069917A1 (en) * | 2001-10-04 | 2003-04-10 | Miller Larry J. | Balanced client/server mechanism in a time-partitioned real-time operting system |
US6986136B2 (en) * | 2001-10-30 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Web-based imaging service enabling jobs to be interrupted gracefully |
US7953899B1 (en) * | 2002-08-21 | 2011-05-31 | 3Par Inc. | Universal diagnostic hardware space access system for firmware |
US7536605B2 (en) * | 2005-05-25 | 2009-05-19 | Alcatel-Lucent Usa Inc. | Injection of software faults into an operational system |
EP1891787B1 (en) * | 2005-06-15 | 2010-03-24 | Solarflare Communications Incorporated | Data processing system |
WO2007074343A2 (en) * | 2005-12-28 | 2007-07-05 | Level 5 Networks Incorporated | Processing received data |
GB0600417D0 (en) | 2006-01-10 | 2006-02-15 | Level 5 Networks Inc | Virtualisation support |
US20120278819A1 (en) * | 2011-04-26 | 2012-11-01 | Byungcheol Cho | Polling-driven device driver interface |
US20120278527A1 (en) * | 2011-04-26 | 2012-11-01 | Byungcheol Cho | System architecture based on hybrid raid storage |
US9176670B2 (en) * | 2011-04-26 | 2015-11-03 | Taejin Info Tech Co., Ltd. | System architecture based on asymmetric raid storage |
US20120278550A1 (en) * | 2011-04-26 | 2012-11-01 | Byungcheol Cho | System architecture based on raid controller collaboration |
US9563253B2 (en) * | 2013-03-12 | 2017-02-07 | Intel Corporation | Techniques for power saving on graphics-related workloads |
CN106469088B (zh) * | 2015-08-21 | 2020-04-28 | 华为技术有限公司 | 一种i/o请求调度方法及调度器 |
WO2018148923A1 (en) * | 2017-02-17 | 2018-08-23 | Intel Corporation | Application and system fast launch by virtual address area container |
CN108123850B (zh) | 2017-12-25 | 2020-04-24 | 上海交通大学 | 针对中断持有者抢占问题的综合调度方法及装置 |
US11372649B2 (en) * | 2019-06-24 | 2022-06-28 | Microsoft Technology Licensing, Llc | Flow control for multi-threaded access to contentious resource(s) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5036361A (en) * | 1990-03-21 | 1991-07-30 | Xerox Corporation | Job requirements calculation and display |
US5579447A (en) * | 1994-11-25 | 1996-11-26 | Xerox Corporation | System for developing and displaying a representation of a total estimated time to print a job |
EP0964333A1 (en) * | 1998-06-10 | 1999-12-15 | Sun Microsystems, Inc. | Resource management |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6467630A (en) * | 1987-09-09 | 1989-03-14 | Hitachi Ltd | Job scheduling control system |
JPH04153837A (ja) * | 1990-10-18 | 1992-05-27 | Nec Corp | タイマ要求処理方式 |
JPH0535701A (ja) * | 1991-07-26 | 1993-02-12 | Toshiba Corp | 処理システム |
US6467054B1 (en) * | 1995-03-13 | 2002-10-15 | Compaq Computer Corporation | Self test for storage device |
US6213652B1 (en) * | 1995-04-18 | 2001-04-10 | Fuji Xerox Co., Ltd. | Job scheduling system for print processing |
US6128672A (en) * | 1998-03-10 | 2000-10-03 | Motorola, Inc. | Data transfer using software interrupt service routine between host processor and external device with queue of host processor and hardware queue pointers on external device |
US6292856B1 (en) * | 1999-01-29 | 2001-09-18 | International Business Machines Corporation | System and method for application influence of I/O service order post I/O request |
US6549934B1 (en) * | 1999-03-01 | 2003-04-15 | Microsoft Corporation | Method and system for remote access to computer devices via client managed server buffers exclusively allocated to the client |
US6438704B1 (en) * | 1999-03-25 | 2002-08-20 | International Business Machines Corporation | System and method for scheduling use of system resources among a plurality of limited users |
-
2000
- 2000-06-30 US US09/607,256 patent/US6795873B1/en not_active Expired - Fee Related
-
2001
- 2001-06-08 AU AU2001268286A patent/AU2001268286A1/en not_active Abandoned
- 2001-06-08 WO PCT/US2001/018653 patent/WO2002003212A2/en active IP Right Grant
- 2001-06-08 EP EP01946207A patent/EP1297432B1/en not_active Expired - Lifetime
- 2001-06-08 DE DE60125540T patent/DE60125540T2/de not_active Expired - Lifetime
- 2001-06-08 CN CNB01814716XA patent/CN100492298C/zh not_active Expired - Fee Related
- 2001-06-08 AT AT01946207T patent/ATE349734T1/de not_active IP Right Cessation
-
2003
- 2003-06-17 HK HK03104346A patent/HK1052067A1/xx not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5036361A (en) * | 1990-03-21 | 1991-07-30 | Xerox Corporation | Job requirements calculation and display |
US5579447A (en) * | 1994-11-25 | 1996-11-26 | Xerox Corporation | System for developing and displaying a representation of a total estimated time to print a job |
EP0964333A1 (en) * | 1998-06-10 | 1999-12-15 | Sun Microsystems, Inc. | Resource management |
Also Published As
Publication number | Publication date |
---|---|
DE60125540T2 (de) | 2007-10-04 |
DE60125540D1 (de) | 2007-02-08 |
US6795873B1 (en) | 2004-09-21 |
AU2001268286A1 (en) | 2002-01-14 |
EP1297432A2 (en) | 2003-04-02 |
ATE349734T1 (de) | 2007-01-15 |
WO2002003212A3 (en) | 2003-01-23 |
EP1297432B1 (en) | 2006-12-27 |
HK1052067A1 (en) | 2003-08-29 |
WO2002003212A2 (en) | 2002-01-10 |
CN1449522A (zh) | 2003-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100492298C (zh) | 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 | |
US5072376A (en) | Measuring utilization of processor shared by multiple system control programs | |
Fohler | Joint scheduling of distributed complex periodic and hard aperiodic tasks in statically scheduled systems | |
RU2003118641A (ru) | Реализация компьютерной многозадачности через виртуальную организацию поточной обработки | |
CN1316357C (zh) | 通过虚拟线程执行计算机多任务的方法及装置 | |
US5701439A (en) | Combined discrete-event and continuous model simulation and analysis tool | |
US6314446B1 (en) | Method and system for monitoring tasks in a computer system | |
EP0264568A2 (en) | Serialisation of system events in a multiprocessing system | |
Kulkarni et al. | Effects of checkpointing and queuebsfg on program performance | |
JP2002517035A (ja) | リアルタイムスケジューリングロジックおよび時間確定的アーキテクチャを使用する分散コンピューティング環境 | |
AU2001297946A1 (en) | Computer multi-tasking via virtual threading | |
WO2007072544A1 (ja) | 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム | |
JPH03130842A (ja) | データベースシステムの同時実行制御装置 | |
JP2002328977A (ja) | 多品目多工程ロットサイズスケジューリング方法 | |
CN105190556A (zh) | 允许确定性的实时错误恢复的任务时间分配方法 | |
EP3702858A1 (en) | Communication system, communication method, and program | |
CN115004170B (zh) | 根据数据新鲜度要求的优化查询调度 | |
CN110381150A (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
JPH0667899A (ja) | タスクスケジューリング装置の複数タスク周期起動方法 | |
US8621471B2 (en) | High accuracy timer in a multi-processor computing system without using dedicated hardware timer resources | |
AU2007200660B2 (en) | Computer Multi-Tasking via Virtual Threading | |
Bard | A Characterization of VM/370 Workloads. | |
TR2022010810A1 (tr) | Zaman sayacı işlemlerinin sona erme zamanlarının yönetimi için bir sistem ve yöntem. | |
Kruchinin | Multitasking system for real time pattern recognition | |
Halang | Contemporary computers considered inappropriate for real-time control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090527 Termination date: 20130608 |