实现多阶段软件的方法和装置的制作方法

文档序号:6508434阅读:136来源:国知局
专利名称:实现多阶段软件的方法和装置的制作方法
技术领域
本发明的实施例一般地涉及软件领域,尤其涉及实现多阶段软件的方法和装置。
背景技术
多阶段软件(多阶段应用程序(MPA))具有生命周期跨越运行系统的多个阶段的特征。通常,这种应用程序在装载引导设备的主引导记录(MBR)之前必须是活性的。MBR(也被称为分块扇区)是包含硬盘(HD)逻辑起始程序的扇区,所述逻辑起始程序包含对引导操作系统(OS)必要的命令序列。通常,MPA在引导装载程序运行时和操作系统关闭之后必须继续是活性的。
此外,这种MPA有些相对于在其中实现的资源受限环境而言占用了过多的存储。
硬盘保护软件一例众所周知的流行的MPA是硬盘保护(HDP)软件。HDP软件是监控主系统和磁盘控制器之间的通信量以保护硬盘上的数据的应用程序。这可能为增量备份或恢复而包括记录经修改的磁盘块的逻辑块寻址(LBA)的操作,或包括将读/写请求改向到磁盘上的其他位置或甚至其他介质上的操作。例如,如果操作系统请求对特定块写入(例如,块A),HDP软件将所述写入改向到另一块(例如,块B)上。因此块A保持不变,HDP软件创建并维持将块A和块B关联的映射表。当操作系统请求块A时,HDP软件改为读出块B。而后,如果用户决定舍弃对块A进行改变,那么HDP软件只是舍弃所述映射表,而块保持不变。这使得原状态能不重设系统地被恢复。
典型的HDP软件包括一组独立的部件,各部件操作运行系统的特定阶段。例如,对于硬盘上安装Win98的PC来说,必须提供实模式INT13(提供了BIOS中断来访问HD)的挂钩(hook)来改向或记录来自OS装载程序的读/写请求。然后在操作系统内核和其磁盘驱动程序装载之后,必须提供过滤器驱动程序来继续INT13挂钩所正在执行的。如果Win98被关闭而PC被重新置于DOS环境下,那么过滤器驱动程序必须通知INT13挂钩重新进行初始化。其他操作系统(例如,Windows XP、Linux等)具有它们自己的关联驱动程序。
图1说明了根据现有技术来实现HDP软件的引导过程的系统。图1所示的系统100包括对系统硬件进行初始化的基本输入/输出系统(BIOS)102。BIOS 102通过INT13挂钩105来请求MBR,MBR用INT13 107来访问硬盘120,以引导磁盘操作系统(DOS)104。DOS104通过INT13挂钩105来请求操作系统内核和驱动程序文件来引导Windows98操作系统106,所述操作系统106通过其集成驱动器电子电路(IDE)驱动程序112来访问硬盘120。所述IDE过滤器驱动程序110过滤traffic Windows98操作系统和IDE驱动程序112之间的通信量。所述INT13挂钩105和IDE过滤器驱动程序110代表操作系统或应用程序截取所述读/写请求,找到改向的LBA,并用原INT13 107或IDE驱动程序112来访问硬盘120。
此时,Windows98 106能被关闭且系统返回到DOS模式(DOS108)。如果所述IDE过滤器驱动程序(或INT13挂钩)被关闭,那么后继程序必须例如借助于状态标志进行通知,使它能被正确地初始化。例如,为保持INT13挂钩的内部状态与所述磁盘一致,在关闭Windows98 106之前,所述IDE过滤器驱动程序110必须在硬盘120上设置标志来通知INT13挂钩(INT13挂钩115)来用INT13116重新载入映射表。该过程在图1用虚线表示。
正如典型的HDP软件所说明的,多阶段软件有一些缺点。一个缺点是单独的软件部件必须为各不同的环境开发并且这些部件独立运行。例如,提供HDP的相同算法必须在多种不同的软件平台中来实现。当一个部件将被关闭时,它必须通知其后继部件。但是因为部件之间不能直接通信,所以必须使用其他通信信道(例如,磁盘上的保留块或主机系统中的其他专用硬件)。此外,当采用新的或更好的算法时,必须重写INT13挂钩和IDE过滤器驱动程序。同时,对于某些环境(例如,DOS),系统资源是有限的,因为所用的实模式才用16位分段存储地址空间(意味着只有1MB的存储器能被寻址),其中为兼容性而转换到被保护模式是不现实的,因为INT13挂钩必须以实模式工作,在系统资源非常有限的情况下,用INT13挂钩实现所述算法比用IDE过滤器驱动程序实现所述算法更为复杂。


参照下面用于说明本发明实施例的描述和附图,可对本发明有很好的理解。在所述图中图1说明了根据现有技术的HDP软件的引导过程;图2说明了根据本发明的一个实施例的MPA实现的过程;图3说明了根据本发明的一个实施例的系统,在所述系统中,MPA被分割成前端部分和后端部分;以及图4是说明可与本发明各种实施例一起使用的数字处理系统的一个实施例的框图。
具体实施例方式
在下面描述中,说明了大量的特定细节。然而,要理解到本发明的实施例可在没有这些特定细节的条件下实施。为清晰起见,在另一些例子中,没有对公知电路、结构和技术进行详细说明。
在整个说明书中,对“一个实施例(one embodiment)”或“一实施例(an embodiment)”的引用意味着关于该实施例描述的特定功能、结构或特征包括在本发明的至少一个实施例中。因此,在整个说明书的各位置出现的短语“在一个实施例中(in oneembodiment)”或“在一实施例中(in an embodiment)”不必都指同一实施例。此外,所述特定功能、结构或特征可按任何合适的方式结合到一个或多个实施例中。
此外,单个所公开的实施例的发明点少于本发明的全部特征。因此,“具体实施方式
”后附的权利要求书在此被明确结合到“具体实施方式
”部分中,各权利要求自身均充当本发明的个别实施例。
图2说明了根据本发明的一个实施例的MPA实现的过程。图2所示的过程200开始于操作205,在该操作中,MPA被分成前端部分和后端部分。前端部分作为接收来自BIOS或OS装载程序的请求的接口来发挥作用,并将所述请求转发给处理所述请求的后端部分。
在操作210中,前端部分在例如实模式存储器中实现(对于INT13挂钩),或例如在操作系统内核地址空间中实现(对于IDE过滤器驱动程序)。
在操作215中,后端部分在系统管理模式(SMM)下实现。在SMM下实现MPA的后端部分将在下面更充分地讨论。SMM是由IA32 CPU支持的缩减功率消耗状态。当CPU进入SMM时,它将其当前状态保存到称为系统管理RAM(SMRAM)的静态随机访问存储器(RAM)的专用区域中,所述状态一经初始化就由平台固件保存并对操作系统隐藏直到系统复位。因为SMM具有自己的存储器,它提供相对于操作系统透明运行的独立执行环境。
系统管理中断(SMI)是对操作系统透明的中断,它不存储在中断向量表(IVT)中。SMI不能被任何指令触发,但可由芯片集产生来使CPU进入SMM模式并使SMI处理程序被执行。SMI是最高优先级中断,因此不能再被中断。
SMI处理程序能通过执行RSM指令来指示CPU离开SMM,该程序从状态保存映射中读出CPU状态数据并恢复CPU状态。因为在SMI产生时,CPU上下文(context)被自动保存,并在离开SMM之后恢复,所以SMM对操作系统是透明的。
因此,本发明的一个实施例允许MPA成为两个不同的部分--前端接口和后端算法来实现。例如,HDP软件可作为HDP算法(如将读/写请求改向)来实现,该算法能在SMM下作为HDP成套程序(suite)的后端来实现,而其他部件(例如,操作系统中的INT13挂钩或IDE过滤器驱动程序)作为前端接口被实现,所述部件截取读/写请求并将它们传递到后端作进一步处理。
对于本发明的一实施例,MPA的后端部分在多个前端部分之间共享。对于这样的实施例,MPA的大部分,例如HDP软件(例如,HDP算法)的核心部分可在SMM下只实现一次,从而保存了前端存储器并简化了多个前端部分。即,例如,相同算法不需要在INT13中和操作系统驱动程序中重复实现。在现有技术的系统中,当操作系统例如Windows98引导时,它不再使用INT13,而将使用自己的磁盘驱动程序,因此现有技术的HD软件方案必须为Windows98提供具有与在INT13中实现的相同的算法的驱动程序。而根据本发明的一实施例,消除了该冗余。
根据本发明的一实施例,如前所述,SMI只有一个内部状态并且不能被中断,且所有内部状态都在SMM下(INT13和操作系统驱动程序都不必保持内部状态)。这消除了现有技术方案中固有的同步问题。即在现有技术方案中,有些应用程序可用INT13来访问硬盘,而另一些用操作系统驱动程序来访问硬盘。因为操作系统是多任务处理的,INT13挂钩的内部状态和驱动程序的内部状态成为不同步。这种同步的缺乏为本发明的实施例所克服。
对于本发明的一个实施例,其中MPA的后端部分包含MPA大部分的复杂处理,多个前端部分中的各个不需要互相通信,因为它们不必保持任何上下文信息。MPA的前端部分中的各个将用户输入传递到后端部分。包含在前端部分中的逻辑电路是有限的,所以不耗用过多的系统资源。
图3说明了根据本发明的一个实施例的系统,其中MPA被分成前端部分和后端部分。图3所示的系统300类似于前面参照图1描述的系统100。相同的附图标记表示相同的部件。
如前所述,根据本发明的一个实施例,MPA被分成前端部分和后端部分。INT13挂钩305和IDE过滤器驱动程序310是MPA的前端部分。例如,INT13挂钩305仍然在实模式下实现,但充当确证来自BIOS 302或DOS 304的I/O请求的接口。对于本发明的一个实施例,操作系统可为任何通过INT13来访问硬盘并在实模式下运行的操作系统,包括DOS或OS装载程序(例如,NT装载程序或Linuxneedle。INT13挂钩305(MPA前端)自己不处理I/O请求,但用SMI传送I/O请求给在SMM 321下实现的MPA后端部分322来处理。即前端部分截取I/O请求并指示后端部分如何处理该I/O请求。后端部分然后分析该I/O请求并告诉前端部分如何完成该请求。前端部分在实模式下作用于INT13(例如,INT13 307,INT13 316)来实现I/O请求。
同样,IDE过滤器驱动程序310仍然在操作系统内核地址空间中实现,并充当操作系统306和在SMM 321下实现的MPA后端部分322之间的接口。DOS 104请求操作系统内核和INT13挂钩305的驱动程序文件来引导操作系统306。对于操作系统,前端部分作用于IDE驱动程序(例如,IDE驱动程序312)来实现I/O请求。
INT13挂钩305或IDE过滤器驱动程序310可能必须分别传送多个来自BIOS或OS的I/O请求给MPA后端部分322。例如,MPA后端部分322可包含存储在硬盘320上的需要访问数据结构的应用程序算法(例如,HDP算法映射表)。INT13挂钩305或IDE过滤器驱动程序310可接收关于特定数据块的写请求。INT13挂钩305或IDE过滤器驱动程序310然后将该请求传送到SMM 321。MPA后端部分322检查所请求的数据块是否被保护,若被保护,则MPA后端部分322将从硬盘320装载映射条目,如果这时该条目不在存储器中。因此,MPA后端部分322可发出另外的请求(不包括在原I/O请求中)来访问所需的数据。即,因为SMM 321不能直接访问硬盘320,MPA后端部分322请求MPA前端部分来代表MPA后端部分32读或写一些数据。如图所示,MPA后端部分322可直接访问硬盘320,但由于从SMM321访问硬盘320中的兼容性问题,实际上MPA后端部分320可命令MPA前端部分来代表它访问硬盘320。
一旦MPA后端部分322有了所有需要的数据,就会处理所接收的请求。MPA后端部分322然后将处理结果传送给INT13挂钩305(或IDE过滤器驱动程序310)。
对于本发明的一个实施例,图3所示的系统300用于实现HDP应用程序。对于该实施例,MPA前端部分不再保持任何与映射表有关的信息。而是,实现在SMM下的后端部分包含映射表算法,它由所有前端共享。因此,前端部分之间不必互相通信。
此外,对于该实施例,INT13挂钩或IDE过滤器驱动程序相对于现有技术的方案更容易实现并消耗更少的资源,因为HDP算法不是在INT13挂钩或IDE过滤器驱动程序中实现,而是在SMM下实现。SMM中增加的存储量(即,相对于实模式存储器增加的)允许实现更复杂的HDP算法。相对于由于有限的存储量(即1MB)而具有有限的功能的、其中HDP软件以实模式实现的现有技术方案,本发明的实施例能够访问SMM的更大存储容量。例如现有技术方案可提供从INT13挂钩中读请求的改向,使得Windows NT或Linux能正确引导。然而,这些方案不能提供写请求的改向,因为OS装载程序(例如,Linux needle,NT装载程序等)很少写到HD中。在SMM下实现的HDP算法允许INT13挂钩来提供操作系统中的IDE过滤器驱动程序的所有功能(例如,写改向)。
附加存储量还允许HDP算法用高级语言而不是汇编语言编写(例如,C程序设计语言),由于存储量的限制,现有技术方案中一般使用汇编语言。此外,因为HDP算法在SMM下只实现一次并且由多个前端部分共享,调试更加容易且省时。
一般问题上文已描述了本发明的实施例,这些实施例提供了作为前端部分实现的HDP软件,前端部分提供了BIOS和HDP软件的后端部分之间的接口。HDP软件的后端部分在SMM下实现并包含HDP映射算法。但是,本发明的实施例可应用到多种MPA中,这对本领域技术人员是显而易见的。
根据本发明的一个实施例,HDP软件在DOS下实现,没有附加硬件支持但仍保持兼容性。本发明的实施例便于在不影响现有技术方案中以增加的成本(例如,附加插件卡)产生的性能的条件下实现低成本的HDP软件。
本发明的实施例包括具有各种操作的方法,许多方法以它们最基本的形式来描述,但是在不背离本发明基本范围的前提下,可在所述方法中加入操作或从所述方法中删除操作。如前所述,本发明各种实施例的操作可通过硬件部件来执行或可包括在机器可执行指令中。作为可选的方案,操作也可用硬件和软件的组合来实现。本发明的实施例可作为计算机程序产品来提供,该产品可包括其上存储指令的可机读(机器可访问)介质,可用于对计算机(或其他电子设备)编程来实现根据如前所述的本发明实施例的过程。
机器可访问介质包括任何提供(即,存储和/或传输)可由机器(例如,计算机,网络设备,个人数字处理,制造工具,任何具有一组一个或多个处理器的设备等)访问的形式的信息的机构。例如,机器可访问介质包括可录/不可录介质(例如,只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质,光存储介质,闪存设备等),以及电、光、声或其他形式的传播信号(例如,载波、红外线信号、数字信号等)。
图4是说明可结合本发明各实施例使用的数字处理系统的一个实施例的框图。对于本发明的可选实施例,DPS 401可为包括连接到总线407的处理器403的计算机。在一实施例中,内存405、存储器411、显示控制器409、通信接口413、输入/输出控制器415和音频控制器427也连接到总线407。
DPS 401通过通信接口413与外部系统接口。通信接口413可包括与无线电话信号兼容的无线电收发机或用于将一设备连接到其他设备的其他接口。在本发明的一实施例中, 载波信号425在通信接口41和网络450之间来接收/传输。在本发明的一实施例中,通信信号425可用于将DPS 401与另一计算机系统网络集线器路由器等接口。在本发明的一实施例中,载波信号425被认为是可机读介质,它可通过电线、电缆、光纤或通过空气等来传输。
在本发明的一个实施例中,处理器403可为传统的微处理器,例如(但不限于)Intel x86或Pentium系列微处理器,Motorola系列微处理器等。内存405可为可机读介质,例如动态随机存取存储器(DRAM)并可包括静态随机访问存储器(SRAM)。显示控制器409以传统的方式控制显示器419,所述显示器在本发明的一个实施例中可为阴极射线管(CRT)显示器、液晶显示器(LCD)、有源阵列显示器、电视监视器等。连接到输入/输出控制器415的输入/输出设备417可为键盘、磁盘驱动器、打印机、扫描仪其他输入输出设备(例如,鼠标)。在本发明的一个实施例中,音频控制器427以传统的方式控制音频输出431和音频输入429。
存储器411可包括可机读介质,例如(但不限于)硬磁盘、软盘、光盘、智能卡或其他形式的数据存储器。在本发明的一个实施例中,存储器411可包括可移动介质、只读介质、可读/可写介质等。一些数据可在计算机系统401中的软件执行期间通过直接存储器存取过程来写到内存405。要理解到,软件可驻留在存储器411中、内存405中或可通过调制解调器或通信接口413来传输或接收。本说明书中,词“机器可读介质”应认为包括任何能够存储数据、信息或能够编码指令序列来供处理器403执行以使处理器403完成本发明的方法的介质。
虽然已根据一些实施例对本发明进行了描述,但是本领域技术人员会认识到,本发明不限于所描述的实施例,在不背离附加的权利要求的精神和范围的前提下可进行变更和修改。因此,所作说明应被认为是解释性的而不是限制性的。
权利要求
1.一种系统,包括提供I/O请求的处理系统控制应用程序;多阶段应用程序的接口部分;多阶段应用程序的处理部分,所述多阶段应用程序的处理部分在系统管理模式下存储,而处理I/O请求通过多阶段应用程序的接口部分来接收。
2.如权利要求1所述的系统,其中所述多阶段应用程序的处理部分将处理I/O请求的结果传送到多阶段应用程序的接口部分。
3.如权利要求2所述的系统,其中所述处理系统控制应用程序从包含BIOS、NT装载程序、Linux needle的组中选择。
4.如权利要求3所述的系统,其中所述多阶段应用程序的接口部分在实模式存储器中实现。
5.如权利要求2所述的系统,其中所述处理系统控制应用程序是使用集成驱动器电子电路(IDE)接口的操作系统,而所述多阶段应用程序的接口部分在操作系统内核地址空间中实现。
6.如权利要求2所述的系统,其中所述多阶段应用程序的处理部分用高级程序设计语言编写。
7.如权利要求6所述的系统,还包括所述多阶段应用程序的一个或多个附加接口部分,其中,所述多阶段应用程序的处理部分对通过所述多阶段应用程序的多个接口部分接收的I/O请求进行处理。
8.如权利要求7所述的系统,其中所述多阶段应用程序是硬盘保护(HDP)应用程序。
9.如权利要求8所述的系统,其中所述HDP应用程序包括在HDP应用程序的处理部分中包含的HDP算法映射表。
10.如权利要求9所述的系统,其中所述HDP应用程序包括写改向功能。
11.一种方法,包括在所述多阶段应用程序的接口部分接收来自处理系统控制应用程序的I/O请求;将所述I/O请求传送到所述多阶段应用程序的处理部分,所述多阶段应用程序的处理部分在系统管理模式下存储;以及在所述多阶段应用程序的处理部分对通过所述多阶段应用程序的接口部分接收的I/O请求进行处理。
12.如权利要求11所述的方法,还包括将处理I/O请求的结果从多阶段应用程序的处理部分传送到所述多阶段应用程序的接口部分。
13.如权利要求12所述的方法,其中所述处理系统控制应用程序从包含BIOS、NT装载程序、Linux needle的组中选择。
14.如权利要求13所述的方法,其中所述多阶段应用程序的接口部分在实模式存储器中实现。
15.如权利要求12所述的方法,其中所述处理系统控制应用程序是使用集成驱动器电子电路(IDE)接口的操作系统,所述多阶段应用程序的接口部分在操作系统内核地址空间中实现。
16.如权利要求12所述的方法,其中所述多阶段应用程序的处理部分用高级程序设计语言编写。
17.如权利要求16所述的方法,其中从所述多阶段应用程序的一个或多个附加接口部分接收I/O请求;以及在所述多阶段应用程序的处理部分对从所述多阶段应用程序的一个或多个附加接口部分接收的I/O请求进行处理。
18.如权利要求17所述的方法,其中所述多阶段应用程序是硬盘保护(HDP)应用程序。
19.如权利要求18所述的方法,其中所述HDP应用程序包括在所述HDP应用程序的处理部分中包含的HDP算法映射表。
20.如权利要求19所述的方法,其中所述HDP应用程序包括写改向功能。
21.一种制品,包括具有关联数据的机器可存取介质,其中所述数据在存取时引发机器执行操作,其中包括在多阶段应用程序的接口部分接收来自处理系统控制应用程序的I/O请求;将所述I/O请求传送到所述多阶段应用程序的处理部分,所述多阶段应用程序的处理部分在系统管理模式下存储;以及在所述多阶段应用程序的处理部分对通过所述多阶段应用程序的接口部分接收的I/O请求进行处理。
22.如权利要求21所述的制品,还包括将处理I/O请求的结果从所述多阶段应用程序的处理部分传送到所述多阶段应用程序的接口部分。
23.如权利要求22所述的制品,其中所述处理系统控制应用程序从包含BIOS、NT装载程序、Linux needle的组中选择。
24.如权利要求23所述的制品,其中所述多阶段应用程序的接口部分在实模式存储器中实现。
25.如权利要求22所述的制品,其中所述处理系统控制应用程序是使用集成驱动器电子电路(IDE)接口的操作系统,所述多阶段应用程序的接口部分在操作系统内核地址空间中实现。
26.如权利要求22所述的制品,其中所述多阶段应用程序的处理部分用高级程序设计语言编写。
27.如权利要求26所述的制品,还包括从所述多阶段应用程序的一个或多个附加接口部分接收I/O请求;以及在所述多阶段应用程序的处理部分对从所述多阶段应用程序的一个或多个附加接口部分接收的I/O请求进行处理。
28.如权利要求27所述的制品,其中所述多阶段应用程序是硬盘保护(HDP)应用程序。
29.如权利要求28所述的制品,其中所述HDP应用程序包括在所述HDP应用程序的处理部分中包含的HDP算法映射表。
30.如权利要求29所述的制品,其中所述HDP应用程序包括写改向功能。
全文摘要
一种实现为前端部分和后端部分的多阶段应用程序。所述应用程序的前端部分充当BIOS或操作系统之间的接口,而所述应用程序的后端部分在系统管理模式(SMM)下实现。本发明的实施例提供了HDP软件,所述软件实现为提供BIOS或操作系统之间的接口的前端部分和所述HDP软件的后端部分。所述HDP软件的后端部分在SMM下实现并包含HDP映射算法。
文档编号G06F9/00GK101091168SQ200480044711
公开日2007年12月19日 申请日期2004年12月31日 优先权日2004年12月31日
发明者B·邢 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1