窃取中断向量的方法和系统的制作方法

文档序号:6462482阅读:118来源:国知局

专利名称::窃取中断向量的方法和系统的制作方法
技术领域
:本发明一般涉及改进的数据处理系统。更特别地,本发明涉及用于从操作系统窃取(stealing)中断矢量以获得对所有系统资源的访问的计算机实现方法、系统、和计算机可用程序代码。
背景技术
:如今,计算机系统已经演化为可以在很多不同设置下看到的极其复杂的设备。通常,计算机系统包括硬件(例如半导体、电路板等)和软件(例如计算机程序)的组合。特定计算机系统上硬件和软件的组合限定计算环境。因此,不同硬件平台和不同操作系统(OS)提供不同计算环境。随着半导体工艺和计算机架构的发展将计算机硬件性能推向更高,更复杂的计算机软件程序已经被发展以诊断地测试这些硬件元件。然而,大多数OS不允许测试程序以特权或分区管理器模式运行。此外,大多数OS不允许测试程序访问实际存储器(realmemory)。因此,为了用户程序测试所有可能的计算机状态和资源,测试程序必须具有避开这些OS限制的能力。当前对这些OS限制问题的解决方案包括测试程序简单地不在OS上运行或测试程序只使用OS将给予该测试程序测试的那么多的系统资源。不在OS上运行的测试程序以汇编语言编写,并被直接加载到存储器或高速緩存器中。此外,这些类型的测试程序独立于任何OS地运行且无权访问标准OS服务,诸如虚拟存储器管理和调度,这可能是不利的。相反,在OS上方运行的测试程序只可向OS请求存储器和资源。通过仅能够向OS请求存储器和资源,大多数计算机功能不在这些类型的测试程序的范围内。结果,这些类型的测试程序必须依靠间接地影响OS来以特权或分区管理器模式执行某代码,以便测试那些范围之外的区域。另一相关解决方案是具有定制OS,其中定制OS具有内置的测试功能,以允许测试程序访问整个计算机。利用该类测试程序的不利方面是必须维护完全独立的os。结果,需要额外解决方案来允许测试程序在现有OS上运行且还允许对所有计算机资源的访问。因此,提供一种改进的计算机执行方法、系统、和计算机可用程序代码来从OS窃取中断矢量以允许测试程序访问所有系统资源是有益的。
发明内容所示实施例提供了一种计算机执行方法、系统、和计算机可用程序代码来从操作系统窃取中断矢量。定制中断处理程序扩展程序(custominterrupthandlerextensions),皮从内核模块拷贝到分配的存储器块中。而且,操作系统中断处理程序被从中断矢量存储器位置拷贝到分配的存储器块中的保留空间中。响应于将操作系统中断处理程序拷贝到分配的存储器块的保留空间中,来自内核模块的定制中断处理程序被拷贝到中断矢量存储器位置中操作系统中断处理程序之上。定制中断处理程序在被拷贝到中断矢量存储器位置后处理操作系统所接收的所有中断。本发明的新特征在所附权利要求中给出。然而,通过结合附图参考下面对说明性实施例的详细说明将更好地理解本发明自身以及优选的使用方式、其他目标和优点,其中图l是其中可实现说明性实施例的数据处理系统的图示;图2是其中可实现说明性实施例的数据处理系统的方框图;图3是按照一个说明性实施例的数据处理系统的部件的方框图;图4是按照一个说明性实施例将OS中断处理程序拷贝到保留存储器空间的示例性图示;图5是按照一个说明性实施例将定制中断处理程序拷贝到OS中断处理程序之上的示例性示图;图6是按照一个说明性实施例在从OS窃取中断矢量后的最终存储器映射的示例性图示;图7是按照本发明一个说明性实施例的用于从OS窃取中断矢量的示例性过程的流程图;以及图8是按照一个说明性实施例用于处理OS中断的示例性过程的流程图。具体实施方式现在参考附图,特别是图1-2,提供了其中可实现说明性实施例的数据处理环境的示意图。应该理解,图l-2仅是示例性的,而非要断言或暗示对于其中可以实现不同实施例的环境的限制。对所示的环境可做出许多修改。图1示出其中可实现说明性实施例的数据处理系统的图示。计算机100包括系统单元102、视频显示终端104、键盘106、可包括软驱和其他类型的永久和可移动存储介质的存储设备108、以及鼠标110。附加输入设备可被包括到个人计算机100中。附加输入设备的例子可包括例如操纵杆、触摸板、触摸屏、跟踪球、和麦克风。计算机100可以是任何合适的计算机,诸如作为位于纽约Armonk的国际商业机器公司的产品的IBMeServer计算机或IntelliStation⑧计算机。虽然示图显示的是个人计算机,但其他实施例可以以其他类型的数据处理系统实现。例如,其他实施例可在网络计算机中实现。计算机100优选地还包括图形用户界面(GUI),其中图形用户界面可借助于驻存在计算机100内工作的计算机可读介质中的系统软件实现。然后,图2示出其中可实现说明性实施例的数据处理系统的方框图。数据处理系统200是实现说明性实施例的处理的代码或指令可以位于其中的计算机的例子,诸如图1中的计算机IOO。在所示例子中,数据处理系统200釆用包括北桥和存储器控制中心(NB/MCH)202与南桥和输入/输出(I/O)控制中心(SB/ICH)204的集线架构(hubarchitecture)。处理单元206、主存储器208、和图形处理器210被耦接到NB/MCH202。处理单元206可包含一个或多个处理器,甚至可以利用一个或多个异构处理器系统实现。图形处理器210可以例如通过加速图形端口(AGP)耦接到NB/MCH202。在所示例子中,局域网(LAN)适配器212被耦接到SB/ICH204、音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)和其他端口232。PCI/PCIe设备234也通过总线238耦接到SB/ICH204。硬盘驱动器(HDD)226和CD-ROM230通过总线240耦接到SB/ICH204。PCI/PCIei更备例如可以包括以太网适配器、附加卡(add-incard)和用于笔记本电脑的PC卡。PCI使用插件总线控制器(cardbuscontroller),而PCIe不使用。ROM224例如可以是闪存(flash)二进制输入/输出系统(BIOS:binaryinput/outputsystem)。硬盘驱动器226和CD-ROM驱动器230例如可以使用集成驱动器件电子技术(IDE)或串行高级技术连接(SATA)接口。超级I/O(SIO)设备236可以被耦接到南桥和I/O控制中心204。操作系统运行在处理单元206上。该操作系统协调和控制图2中数据处理系统200内的各组件。操作系统可以是市场上可获得的操作系统,诸如MicrosoftWindowsXP。Microsoft⑧和WindowsXP⑧是Microsoft公司在美国、其他国家或二者的商标。可替换地,操作系统例如可以是作为IBM⑧公司所提供的产品的高级交互执行体(AIX)操作系统。面向对象的编程系统、诸如JavaTM编程系统可以与操作系统结合运行,并且提供从在数据处理系统200上执行的应用程序或JavaTM程序对操作系统的调用。JavaTM和所有基于Java^的商标是SunMicrosystems^>司在美国和其他国家或二者的商标。用于操作系统、面向对象的编程系统和应用程序或程序的指令位于存储装置、诸如硬盘驱动器(HDD)226上。这些指令可以被加载到主存储器208中以供处理单元206执行。说明性实施例的处理可以由处理单元206利用计算机实现指令来执行,其中计算机实现指令可以位于存储器中。存储器的例子可以是主存储器208、只读存储器(ROM)224,或在一个或多个外围装置中。图1和图2中所示的硬件可以根据示例性实施例的实施而变化。作为图1和图2中所示的硬件的附加或替代,可以使用其他内部硬件或外围装置,诸如闪存、等效非易失性存储器、或光盘驱动等等。此外,示例性实施例的处理可以应用于多处理器数据处理系统。图2中所示的系统和组件可以与所示的示例性例子不同。在一些示例性例子中,数据处理系统200可以是个人数字助理(PDA)。个人数字助理通常配备有闪存以提供非易失性存储器来存储操作系统文件和/或用户产生的数据。此外,数据处理系统200可以是平板电脑(tabletcomputer)、便携式计算机或电话装置。图2中所示的其他组件可以不同于所示的示例性例子。例如,总线系统可以包括一个或多个总线,诸如系统总线、1/0总线和PCI总线。当然,可以利用提供连接到通信组织(fabric)或架构的不同装系k。此外,通信单元可以:括一个或多个^于^i二接收:据"i置,诸如调制解调器222或LAN网络适配器212。此外,存储器例如可以是主存储器208或诸如在NB/MCH202中发现的高速緩存器。此外,处理单元可以包括一个或多个处理器或CPU。而且,示例性实施例可以在逻辑分区的数据处理系统中被实现。图l和图2中所示的例子并不意味着暗示架构限制。此外,示例性实施例提供了计算机实施方法、设备和计算机可用程序代码,用于编译源代码和用于执行代码。参考所示实施例描述的方法可以在数据处理系统中执行,诸如图1中所示的数据处理系统100或图2中所示的数据处理系统200。说明性实施例提供了一种计算机执行方法、系统和计算机可用程序代码,用于从操作系统、例如高级互动执行体程序操作系统窃取中断矢量。响应于超级用户、诸如具有对数据处理系统的根访问权限(rootaccess)的系统管理员在数据处理系统中的操作系统上安装内核模块,内核模块分配数据处理系统中实际存储器的连续(contiguous)块,并将定制中断处理程序扩展程序从内核模块拷贝到分配的存储器块中。此外,内核模块从架构化的(architected)中断矢量存储器位置将操作系统中断处理程序拷贝到保留的空间中。保留的空间直接位于分配的存储器块中每个定制中断处理程序扩展程序矢量位置之后。响应于将操作系统中断处理程序拷贝到分配的存储器块中的保留空间中,内核模块将定制中断处理程序从内核模块拷贝到架构化的中断矢量存储器位置中操作系统中断处理程序之上。定制中断处理程序在被拷贝到中断矢量存储器位置中之后处理操作系统所接收的所有中断。然后,响应于操作系统接收到中断,与该中断相关联的定制中断处理程序中的一个开始处理该中断。与该中断相关联的定制中断处理程序保存基本寄存器状态,并跳转到定制中断处理程序扩展程序之一。该定制中断处理程序扩展程序与该定制中断处理程序相对应.然后,特殊处理。响应于确定定制中断处理程序扩展程序要求特殊处理,^制中断处理程序扩展程序继续定制中断代码以例如执行用于测试所有数据处理系统资源的测试程序。随后,定制中断处理程序扩展程序从中断返回。中断是指示需要改变处理单元的执行的信号。对于中断信号的正常响应是在中断矢量处开始执行中断处理程序。中断处理程序保存处理单元的执行状态并启动上下文切换。中断矢量是中断处理程序的存储器地址或到中断矢量表中的索引。中断矢量表包含中断处理程序的存储器地址。中断矢量表将中断处理程序与中断请求相关联。当一个中断将处理单元中断时,处理单元查询中断矢量表中的中断处理程序,并将控制转移到中断处理程序。说明性实施例允许测试程序在OS上方运行,同时允许测试程序访问任何和/或所有系统硬件资源,诸如实际存储器、高速緩存器、和寄存器以便测试。然而,应该注意,可替换的说明性实施例可仅允许测试程序访问系统硬件资源的指定部分。说明性实施例通过从os窃取中断矢量的控制并以允许测试程序完全访问系统的定制中断处理程序取代被窃取的OS中断处理程序而为测试程序提供对系统资源的全部访问权限。当测试程序不要求定制中断处理时,定制中断处理程序扩展程序仅将控制传递到OS中断处理程序,就好像定制中断处理程序和定制中断处理程序扩展程序没有出现一样。换句话说,OS不知道定制中断处理程序和定制中断处理程序扩展程序的存在。通过在定制中断处理程序扩展程序中引入某些钩子函数(hook),测试程序可进入任何机器状态,并有权访问所有机器资源而无需OS知道。结果,用户例如可使用说明性实施例来周期地跟踪特定中断或周期地监视特权或分区管理器模式的处理器专用寄存器值。说明性实施例包括由超级用户安装在OS上的内核模块或内核扩展程序形式的软件程序、取代OS中断处理程序的定制中断处理程序、和从定制中断矢量调用的实际扩展程序代码。应该指出,程序开发人员必须以以下方式编写内核模块,即内核模块具有关于该内核模块将在其上运行的系统硬件架构和OS的知识。在os接收到中断后,定制中断处理程序为该特定中断仅保存少量重要寄存器,然后跳转到定制中断处理程序扩展程序。定制中断处理程序扩展程序判断中断是发生在测试内部,还是被调用以开始测试,还是被os处理。如果中断发生在测试内部或被调用以开始测试,则中断处理程序跳转到用于处理这些类型的测试情形的代码。如果中断被os处理,则先前被使用的处理器寄存器被恢复,并且执行路径通过落入原始OS中断处理程序中而如正常那样继续。因此,说明性实施例允许os中断处理程序在测试程序不执行对系统资源的测试时如正常那样继续处理中断。此外,说明性实施例使测试程序运行在os上方,而没有os的知识和限制,同时保持对所有系统资源的访问权限。说明性实施例相对于无OS(no-OS)测试程序方法具有优势,因为测试程序除了编写测试代码和执行测试之外不需要担心任何事情,这是因为OS负责测试程序的存储器需求和调度。而且,说明性实施例可允许多个测试程序同时在OS下运行,这可在系统测试中提供更多功能性。而且,说明性实施例相比于专用测试OS方法具有优势,因为说明性实施例不要求维护另一完整OS。而且,说明性实施例可利用现有OS的所有功能。现在参考图3,根据一个说明性实施例示出了表示数据处理系统各部件的方框图。数据处理系统300例如可在图2的数据处理系统200中实现。然而,应该注意,图3中描绘的例子仅用于说明目的,而非暗示对说明性实施例的任何架构限制。换句话说,说明性实施例可包括更多或更少的部件,并可包括对于完成从OS窃取中断矢量以允许件。在图3的例子中,数据处理系统300包括OS302、应用编程接口(API)304、应用程序306、和GUI308。此外,数据处理系统300还包括处理单元310、312、和314,例如图2中的处理单元206。OS302运行在处理器上,诸如处理单元310、312、和/或314,并提供数据处理系统300内部件的高级控制。应该指出,说明性实施例可驻存在OS302上。例如,超级用户,诸如具有对数据处理系统300的根访问权限的系统管理员可在OS302上安装内核模块316。内核模块316是扩展内核线程的功能性以执行一个说明性实施例的过程的软件模块。而且,内核模块316包括OS中断矢量窃取代码318。OS中断矢量窃取代码318是按照说明性实施例的过程窃取OS中断矢量的代码。内核模块316利用OS中断矢量窃取代码318来从OS302窃取中断矢量处的OS中断处理程序,以允许测试程序访问任何和/或所有数据处理系统300资源。在超级用户在OS302上安装内核模块316后,OS中断矢量窃取代码318使用其对于OS302和数据处理系统300的架构的了解来执行以下步骤。首先,OS中断矢量窃取代码318分配足够大以至于可以包含所有现有OS中断处理程序和定制中断处理程序扩展程序代码的实际存储器的连续块。在分配实际存储器块后,OS中断矢量窃取代码318将定制中断处理程序扩展程序代码拷贝到这个分配的存储器块中,其中在每个定制中断处理程序扩展程序后具有空间来放置用于该特定中断的被窃取的OS中断处理程序。随后,OS中断矢量窃取代码318为数据处理系统中每个处理单元,诸如处理单元310、312、和314调用内核线程。然后,OS中断矢量窃取代码318使处理单元310、312、和314的每个内核线程执行同步处理单元例程。因此,所有内核线程同步,并禁用外部中断。此后,OS中断矢量窃取代码318指示内核线程之一、诸如主处理单元内核线程将每个OS中断处理程序从相应中断矢量拷贝到OS储器块。随后,OS中断矢量窃取代码318使用该主处理单元内核线程将定制中断处理程序拷贝到中断处理程序存储器位置中OS中断处理程序之上。然后,拷贝内核线程发出信号通知其他内核线程拷贝任务完成。在拷贝任务完成后,OS中断矢量窃取代码318再次同步所有内核线程,并重新4吏能外部中断。然后,除了启动(starting)内核线程之外的所有内核现成终止。此时,定制中断处理程序位于中断矢量存储器位置中,且用于每个中断的定制中断处理程序扩展程序代码在实际存储器的连续块中直接位于OS中断处理程序代码前面。定制中断程序扩展程序代码以该方式位于OS中断处理程序代码前面,使得如果中断被传递到OS302,则定制中断处理程序扩展程序代码恢复所有先前使用的寄存器,且无中断^l理程i,就好象定制中断处理程序代码和定制^断处理程序扩展程序代码从未存在那样。API304允许数据处理系统300的用户利用标准相容接口(standardconsistentinterface)调用系统能力,而无需考虑特定功能如何实现,其中数据处理系统300的用户可以是个体或软件例程。应件的测试程序。然而,应该指出,应用程序306可表示任何类型的软件应用程序或程序,并也可表示多个应用程序和/或程序。数据处理系统300的用户利用GUI308与驻存在数据处理系统300内的程序和应用程序、例如OS302和应用程序306交互。GUI308是结合可移动窗口和图标的基于图形的用户接口,其可被显示在显示屏上并由用户输入设备操纵。例如,GUI308可被显示在视频显示终端104上,并通过图1中的键盘106和鼠标110操纵。通常,GUI308是用户与计算机、诸如数据处理系统300交互的标准方式。现在参考图4,按照一个说明性实施例描述将OS中断处理程序拷贝到保留的存储器空间的一个示例性说明。OS中断处理程序拷贝过程400包括架构化中断矢量存储器位置402、定制中断矢量404、和连续的实际存储器块406。架构化中断矢量存储器位置402包括用于中断矢量1到6的OS中断处理程序408。中断矢量1到6分别包含OS中断处理程序4081到6。而且,定制中断矢量404包括用于中断矢量1到6的定制中断处理程序409。定制中断矢量4041到6分别包含定制中断处理程序4091到6。连续的实际存储器块406是大到足以存储所有定制中断处理程序扩展程序和OS中断处理程序的连续的实际存储器块。此外,连续的实际存储器块406被包含在易失性存储器设备中,例如图2中的主存储器208或另一随机存取存储器(RAM)设备中。连续的实际存储器块406包括用于中断矢量1到6的定制中断处理程序扩展程序410和保留的空间412s中断矢量1到6分别包含定制中断处理程序扩展程—序4101到6。保留的空间412是为OS中断处理程序4081到6保留的空间。OS中断处理程序4081到6分别与定制中断处理程序扩展程序4101到6相关联。说明性实施例在保留的空间412中将每个OS中断处理程序4081到6拷贝在其相关联的定制中断处理程序扩展程序4101到6之下。参考图5,按照一个说明性实施例绘出了将定制中断处理程序拷贝在OS中断处理程序之上的一个示例性说明。定制中断处理程序拷贝过程500包括架构化中断矢量存储器位置502、定制中断矢量504、和连续的实际存储器块506。架构化中断矢量存储器位置502包括用于矢量1到6的OS中断处理程序508。中断矢量1到6分别包含OS中断处理程序5081到6。定制中断矢量504包括用于定制中断矢量1到6的定制中断处理程序509。定制中断矢量5041到6分别包含定制中断处理程序5091到6。定制中断处理程序5091到6分别与OS中断处理程序5081到6相关联。说明性实施例将定制中断处理程序5091到6在架构化中断矢量存储器位置502中拷贝在OS中断处理程序5081到6之上。在说明性实施例将用于矢量1到6的OS中断处理程序408在图4中保留的空间412中拷贝在其相关联的用于矢量1到6的定制中断处理程序扩展程序410后之后,连续的实际存储器块506包含用于矢量1到6的定制中断处理程序扩展程序510和用于矢量1到6的OS中断处理程序512。用于矢量1到6的OS中断处理程序512分别是用于矢量1到6的OS中断处理程序508的复制副本。参考图6,按照一个说明性实施例示出了在从OS窃取中断矢量之后的最后存储器映射的一个示例性示图。最后存储器映射600包括架构化中断矢量存储器位置602、定制中断矢量604、和连续的实际存储器块606。在图5中说明性实施例将用于矢量1到6的定制中断处理程序509拷贝在用于矢量1到6的OS中断处理程序508之上后,架构化中断矢量存储器位置602包含用于矢量1到6的定制中断处理程序608,而非用于矢量1到6的OS中断处理程序,例如图5中架构化中断矢量存储器位置502中用于矢量1到6的OS中断处理程序508。用于矢量1到6的定制中断处理程序608分别是用于矢量1到6的定制中断处理程序609的复制副本。连续的实际存储器块606包含用于矢量1到6的定制中断处理程序扩展程序610和用于矢量1到6的OS中断处理程序612,诸如图5中的连续的实际存储器块506。应该指出,定制中断处理程序608处理所有中断。然后,定制中断处理程序608跳转到相关联的定制中断处理程序扩展程序610,在那里如果需要,则定制处理继续。可替换地,中断状态被恢复,且OS中断处理程序612将中断处理为正常。参考图7,按照一个说明性实施例示出了说明从OS窃取中断矢量的一个示例性过程的流程图表示。图7中所示的过程可在内核模块中执行,例如图3中的内核模块316。当超级用户、诸如对系统具有根访问权限的系统管理员将内核模块安装在OS、诸如图3中的OS302上时,过程开始(步骤702)。在超级用户在步骤702中安装内核模块之后,内核模块分配一块实际存储器,诸如图4中的连续的实际存储器块406(步骤704)。随后,内核模块将中断矢量的定制中断处理程序扩展程序、诸如图4中用于矢量1到6的定制中断处理程序扩展程序410拷贝到实际存储器的被分配块中(步骤706)。然后,内核模块将中断矢量的OS中断处理程序、诸如图4中的用于矢量1到6的OS中断处理程序408拷贝到实际存储器的被分配块中,且每个都直接在保留的空间、诸如图4中的保留的空间412中其相应定制中断处理程序扩展程序后面(步骤708)。然而,应该指出,在一个可替换实施例中,如果内核模块被加载到实际存储器中,则步骤708可能不需要被执行。内核模块可被加载到实际存储器中,例如通过执行到操作系统内核的"窃用(hack)"。然后,内核模块为系统中每个中央处理单元、诸如图3中的处理单元310、312、和314生成内核线程,并将所生成的内核线程绑定(bind)到其相关联的中央处理单元(步骤710)。随后,内核模块使内核线程同步,禁用每个内核线程中的外部中断,然后再次使内核线程同步(步骤712)。然后,系统中的每个中央处理单元判断该中央处理单元是否是主中央处理单元(步骤714)。如果中央处理单元是主中央处理单元,即步骤714的"是"输出,则内核模块使用主中央处理单元中的创建的内核线程来将中断矢量的定制中断处理程序、诸如图5中的用于矢量1到6的定制中断处理程序509在架构化中断矢量存储器位置、诸如图5中的架构化中断矢量存储器位置502中拷贝在OS中断处理程序之上(步骤716)。随后,主中央处理单元中的创建的内核线程向其他的相应的中央处理单元中的创建的内核线程发送信号通知将定制中断处理程序拷贝在中断矢量的OS中断处理程序之上已经完成(步骤718)。然而,过程进入步骤720。再回到步骤714,如果中央处理单元不是主中央处理单元,即步骤714的"否,,输出,则中央处理单元判断主中央处理单元是否完成了对中断矢量的中断处理程序的拷贝(步骤720)。如果主中央处理单元没有完成对中断矢量的中断处理程序的拷贝,即步骤720的"否"输出,则过程返回到步骤720,其中中央处理单元等待主中央处理单元完成拷贝过程。如果主中央处理单元完成了对中断矢量的中断处理程序的拷贝,即步骤720的"是"输出,则内核模块恢复每个内核线程中的外部中断,并退出内核线程(步骤722)。然后,过程终止。现在参考图8,按照一个说明性实施例示出了处理OS中断的一个示例性过程的流程图。图8中所示的过程可在某矢量处的定制中断处理程序中执行,诸如图6中用于矢量1的定制中断处理程序608。当OS、诸如图3中的OS302接收到中断时,过程开始(步骤802)。在OS接收到中断后,该矢量处的定制中断处理程序开始处理该中断(步骤804)。然后,该矢量处的定制中断处理程序保存基本寄存器的状态(步骤806)。然后,该矢量处的定制中断处理程序跳转到与该中断相关联的某矢量处的定制中断处理程序扩展程序,诸如图6中的矢量1处的定制中断处理程序扩展程序610(步骤808)。在跳转到定制中断处理程序扩展程序后,定制中断处理程序扩展程序判断该中断处理程序扩展程序是否要求特别处理,诸如系统资源测试(步骤810)。如果不要求特殊处理,即步骤810的"否"输出,则定制中断处理程序扩展程序将基本寄存器恢复到其在中断时的状态(步骤812)。然后,定制中断处理程序扩展程序短相对跳转到某矢量处的OS中断处理程序,诸如图6中矢量1处的OS中断处理程序612,或如果OS中断处理程序直接在定制中断处理程序扩展程序之后则仅仅继续执行(步骤814)。随后,定制中断处理程序扩展程序从中断返回(步骤816)。该过程然后终止。再回到步骤810,如果要求特殊处理,即步骤810的"是"输出,则定制中断处理程序扩展程序继续到定制中断代码(步骤818)。在步骤818中的定制中断代码完成后返回到定制中断处理程序扩展程序之后,定制中断处理程序扩展程序判断定制中断处理程序扩展程序是否继续到OS中断处理程序(步骤820)。如果定制中断处理程序扩展程序继续到OS中断处理程序,即步骤820的"是"输出,则过程返回到步骤812,其中定制中断处理程序扩展程序将基本寄存器恢复为其在中断时的状态。如果定制中断处理程序扩展程序不继续到OS中断处理程序,即步骤820的"否,,输出,则过程返回到步骤816,其中定制中断处理程序扩展程序从中断返回。因此,说明性实施例提供了一种计算机实现的方法、系统、和计算机可用程序代码,用于从OS窃取中断矢量以允许测试程序访问所有系统资源。本发明可采用完全硬件实施例、完全软件实施例、或包含硬件和软件元素二者的实施例的形式。在一个优选实施例中,本发明以软件实现,其包括但不限于固件、驻存软件、微代码等。而且,本发明可釆用可从提供由计算机或任何指令执行系统使用或与其结合的程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式。为了本说明书的目的,计算机可用或计算机可读介质可以是可包含、存储、通信、传播、或转移由指令执行系统、装置、或设备使用或与其结合的程序的任何有形装置以便。介质可以是电子、磁、光学、电磁、红外、或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、ROM、硬磁盘、和光盘。光盘的当前例子包括紧凑盘-只读存储器(CD-ROM)、紧凑盘-读/写(CD-R/W)、和DVD。过系统总线间接地耦接到存储器元件的至少一个^处理器。存储器^件可包括在程序代码实际执行期间所使用的本地存储器、大容量存储器、和为至少某些程序代码提供临时存储以便减少在执行过程中必须从大容量存储器检索代码的次数的高速緩存存储器。输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可直接地或通过中间的1/0控制器耦接到系统。网络适配器也可被耦接到系统,以使数据处理系统能够通过中间的专用或公共网络耦接到其他数据处理系统、远程打印机、或存储设备。调制解调器、电缆调制解调器、和以太网卡仅是当前可用的几种网络适配器。本发明的说明书是为了说明和介绍的目的而提供的,而不是为了穷举或限制到所公开形式的发明。许多修改和变化对本领域技术人员来说是显而易见的。选择并介绍了实施例,以便最好地解释本发明的原理、实践应用,并使本领域的其他技术人员能够理解本发明的具有适于所考虑的特定应用的多种修改的多种实施例。权利要求1.一种用于从操作系统窃取中断矢量的计算机实现方法,所述计算机实现方法包括将定制中断处理程序扩展程序从内核模块拷贝到分配的存储器块中;将操作系统中断处理程序从中断矢量存储器位置拷贝到所述分配的存储器块中的保留空间中;响应于将所述操作系统中断处理程序拷贝到所述分配的存储器块中的所述保留空间中,将定制中断处理程序从所述内核模块拷贝在所述中断矢量存储器位置中所述操作系统中断处理程序之上,其中所述定制中断处理程序在被拷贝到所述中断矢量存储器位置中之后处理操作系统所接收的所有中断。2.如权利要求1所述的计算机实现方法,还包括响应于操作系统接收到中断,从与所述中断相关联的定制中断处理程序中的一个定制中断处理程序跳转到所述定制中断处理程序扩展程序中的一个定制中断处理程序扩展程序,其中所述一个定制中断处理程序扩展程序与所述一个定制中断处理程序相对应;判断所述一个定制中断处理程序扩展程序是否要求特殊处理;响应于确定所述一个定制中断处理程序扩展程序要求特殊处理,继续到定制中断代码;以及从所述中断返回。3.如权利要求2所述的计算机实现方法,还包括响应于确定所述一个定制中断处理程序扩展程序不要求特殊处理,将寄存器恢复为所述中断时的状态,其中所述寄存器在一个或多个处理单元中。4.如权利要求3所述的计算机实现方法,还包括为所述一个或多个处理单元中的每一个生成内核线程,以为所述一个或多个处理单元中的每一个形成生成的内核线程,其中主处理单量存储器位置中所述操作系统中断处理程序之上。5.如权利要求4所述的计算机实现方法,还包括禁用每个生成的内核线程中的外部中断;判断主处理单元是否完成了将所述定制中断处理程序拷贝在所述操作系统中断处理程序之上;以及响应于确定主处理单元完成了将所述定制中断处理程序拷贝在所述操作系统中断处理程序之上,恢复所述外部中断。6.如权利要求1所述的计算机实现方法,其中所述分配的存储器块大到足以存储所述定制中断处理程序扩展程序和所述操作系统中断处理程序。7,如权利要求1所述的计算机实现方法,其中所述保留空间在所述分配的存储器块中直接位于每个所述定制中断处理程序后面。8.如权利要求1所述的计算机实现方法,其中所述分配的存储器块被包含在实际存储器设备内,且实际存储器设备是易失性存储器设备。9.如权利要求1所述的计算机实现方法,其中所述分配的存储器块是连续的存储器块。10.如权利要求l所述的计算机实现方法,其中每个所述操作系统中断处理程序与一个定制中断处理程序扩展程序相关联。11.如权利要求l所述的计算机实现方法,其中定制中断代码执行测试程序以测试系统资源,且定制中断代码包括访问最低层系统资源的钩子函数。12.如权利要求5所述的计算机实现方法,其中由内核模块执行所述拷贝、生成、禁用、判断主处理单元是否完成拷贝、以及恢复步13.如权利要求12所述的计算机实现方法,其中所述内核模块包括操作系统中断矢量窃取代码。14.如权利要求2所述的计算机实现方法,其中由定制中断处理程序执行所述跳转、判断是否要求特殊处理、继续、和返回步骤。15.如权利要求11所述的计算机实现方法,其中超级用户将所述内核模块安装在操作系统上。16.如权利要求l所述的计算机实现方法,其中操作系统是高级互动执行体操作系统。17.—种用于从操作系统窃取中断矢量的数据处理系统,包括总线系统;连接到所述总线系统的存储设备,其中所述存储设备包括一组指令;以及连接到所述总线系统的处理单元,其中所述处理单元执行所述一组指令以将定制中断处理程序扩展程序从内核模块拷贝到分配的存储器块中;将操作系统中断处理程序从中断矢量存储器位置拷贝到分配的存储器块的保留空间中;响应于将操作系统中断处理程序拷贝到分配的存储器块中的保留空间中,将定制中断处理程序从内核模块拷贝在中断矢量存储器位置中操作系统中断处理程序之上,其中定制中断处理程序在被拷贝到中断矢量存储器位置中之后处理操作系统所接收的所有中断。全文摘要一种用于从操作系统窃取中断矢量的系统。定制中断处理程序扩展程序被从内核模块拷贝到被分配的存储器块中。而且,操作系统中断处理程序被从中断矢量存储器位置拷贝到被分配的存储器块中的保留空间中。响应于将操作系统中断处理程序拷贝到被分配的存储器块中的保留空间中,来自内核模块的定制中断处理程序被拷贝在中断矢量存储器位置中操作系统中断处理程序之上。定制中断处理程序在被拷贝到中断矢量存储器位置中之后处理操作系统所接收的所有中断。文档编号G06F9/46GK101320338SQ20081009539公开日2008年12月10日申请日期2008年5月5日优先权日2007年6月4日发明者A·A·帕特拉斯库,B·L·希罗德,S·卡普尔,S·阿拉帕蒂申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1