用于高效地布置可移植可执行(pe)映像的方法与设备的制作方法

文档序号:6554025阅读:246来源:国知局

专利名称::用于高效地布置可移植可执行(pe)映像的方法与设备的制作方法
技术领域
:本发明总体涉及数据处理领域,更具体的,涉及包含可移植可执行(PE)映像的方法及相关设备。
背景技术
:在典型的传统数据处理系统中,固件提供用于在系统通电或复位时但在引导操作系统(os)之前控制系统的机器指令。就是说,固件控制os之前或引导前的操作。固件还可以在载入os后控制多种特定操作,例如用于处理特定硬件事件和/或系统中断的操作。固件可以通过统称为基本输入/输出系统(BIOS)的一组程序,来处理引导前与引导后的操作。由此,BIOS提供了在系统的硬件组件与诸如OS之类的软件组件之间的接口。因此,用于传统系统的固件通常是专门为固件在其中操作的硬件平台编写的。对于本公开来说,术语"固件"用于指的是在处理系统引导到OS之前可以在处理系统中执行软件、提供用于允许OS或其它组件与处理系统硬件进行交互的运行时服务(runtimeservice)的软件、以及相似类型的软件组件。传统上,固件通常存储在非易失性存储器中。然而近年来,处理系统已经发展为,将固件存储在其它类型的存储设备或远程存储库中,或者可以从其它类型的存储设备或远程存储库中获得固件。另外,前不久,发表了可扩展固件接口(EFI)模块。EFI模块提供了一种用于在平台固件与高级软件(如操作系统)之间的接口的模块。可以从www.intel.com/technology/efi/main_specification.htm获得2002年12月1日的EFI规范的1.10版。EFI规范定义了由低级平台固件提供的一组标准接口和结构。这些接口和结构可以用于诸如装入其他固件、运行引导前的应用程序、引导0S、以及在引导了OS后提供运行时服务之类的任务。EFI模块需要将诸如固件驱动程序、OS之前的应用程序之类的软件模块和用于提供运行时服务的模块根据可移植可执行(PE)格式进行格式化。PE格式是一种文件格式,其被Microsoft公司采用为在操作系统下运行的可执行文件的标准格式,操作系统例如为MicrosoftWindowsNT、Microsoft^WindowsXP、MicrosoftAVindows2000、MicrosoftWindowsCE。术语"可移植可执行"反应了一个目的,艮卩,提供用于多种操作系统的可执行文件的一种通用格式。PE文件可以运行在多种不同硬件平台上,包括32位架构和64位架构。Microsoft⑧链接器可以用于从公用目标文件格式(COFF)中的目标文件,产生PE格式的可执行文件。COFF是用于由Microsoft⑧编译器产生的目标文件的文件格式。PE格式和COFF格式都在1999年2月的"MicrosoftPortableExecutableandCommonObjectFileFormatSpecification"的6.0版("PE/COFFSpecification")中说明,其可以在www.microsoft.com/whdc/system/platform/firmware/PECOFRmspx获得。使用PE映像的一个优点在于灵活性,因为PE映像易于从一个存储器基址(memorybase)重定位到另一个,只要该映像包含重定位数据。希望基于EFI模块的平台框架,例如用于FEI的IntelPlatformInnovationFramework,在接下来的几年内会代替基于常规BIOS模块的框架来作为用于设计、构建和操作数据处理系统的框架选择。基于EFI的平台框架可以包括低级固件或软件,其提供其它软件组件(例如操作系统及其装入器)可利用的引导时服务调用和运行时服务调用。特别是,希望基于EFI的平台框架使用模块化结构,在该模块化结构中,用于提供如以上提到的服务调用的固件或软件模块使用PE映像格式。常规PE映像文件被组织为区段(section)或段(segment)。对于本公开来说,用于在基于EFI的框架中提供运行时服务的模块可以通称为运行时驱动程序(runtimedriver)。通常,用于运行时驱动程序的PE映像会具有4个段,即.data、.rdata、.text和.reloc。默认地,所有的代码都会输入到.text段,所有的可写数据会输入亂data段。要求运行时驱动程序驻留在特定的存储器区域内,来为OS提供EFI运行时服务。通常,这个存储器区域被称为EFI运行时存储器。OS保留运行时驱动程序专用的EFI运行时存储器。依据所附的权利要求,以下一个或多个实施例的详细说明及相应的附图,本发明的特点和优点会变得显而易见,其中图1是示出适合的数据处理环境的框图,在该数据处理环境中可以实现本发明实施例的各个特定方面;图2是示出根据本发明的实施例,用于管理PE映像的处理的各个方面的流程图3是示出示例性PE映像和相关存储器映射的框图;以及图4是更详细地说明实例PE映像的框图。具体实施例方式由于OS保留了运行时驱动程序专用的EFI运行时存储器,因此运行时驱动程序所需的存储器空间越大,留给OS使用的存储器空间就越少。因此,如同本发明所认知的,对于固件而言,减少或最小化运行时存储器的使用量会是有益的。最小化或减少在基于EFI的固件中的运行时存储器占用区,会为OS提供更多可用存储器来在运行时环境中使用,这就可以为终端用户所用的应用程序提供更好的性能。在常规基于EFI的平台框架中,将用于每个运行时驱动程序的完整映像存储在EFI运行时存储器中。因此,运行时驱动程序所占用的运行时存储器的量是与其PE映像大小相同或几乎相同的。本发明的一个或多个实施例可以在EFI运行时存储器中存储较小的运行时驱动程序,从而留下更多的OS可利用的存储器。如以下详述的,在示例性实施例中,并非是将来自运行时驱动程序映像的全部代码和数据都装入到EFI运行时存储器中,用于基于EFI的平台框架的映像装入器(loader)可以仅将一些来自这些PE映像的代码和数据装入到运行时存储器。没有装入运行时存储器的代码和数据可以包括仅是诸如驱动程序初始化之类的弓I导时(boot-time)操作所需的代码和数据。例如,当填充运行时存储器时,映像装入器可以省略一旦运行时驱动程序已经成功装入并初始化后就不再需要的初始化代码和相关数据。常规PE映像的内容是按照区段组织的。运行时驱动程序通常具有4个区段.data、.rdata、.text和.reloc。所有的代码都驻留在.text段中,所有的可写数据都驻留在.data段中。当这些代码全部都驻留在同一区段中,数据全部都驻留在同一区段中时,映像装入器会不能区分这些代码和数据中的任何部分,将会简单地将全部代码和数据装入到运行时存储器中。根据该示例性实施例,为了有利于更有选择性地且有效地使用运行时存储器,当生成或构建运行时驱动程序时,链接器可以将用于引导时操作的代码存储在与用于运行时操作的代码不同的区段中。类似的,用于引导时操作的数据可以存储到与用于运行时操作的数据不同的区段中。另外,链接器可以为引导时区段设置一个属性,以便将这些区段标记为"可废弃"。而且,映像装入器可以考虑这些区段的属性,并可以将可废弃区段设置到引导时存储器中,而不是运行时存储器中。运行时驱动程序的主要目的通常是向OS提供运行时服务。然而,驱动程序会需要在引导时期间执行初始化操作。代码开发者会使用编译器的选项,来将仅在引导时所需的代码和数据设置在单独的区段中。例如,开发者会使用Microsoft的visualC(VC)编译器中的以下编译器选项,来将用于引导时操作的代码编译到一个区段中(命名为".initc"),将用于运行时操作的代码编译到另一个不同区段中(命名为".initd"):#pragmacomment(linker,,,/SECTION:.initc,RED")#pragmacode一seg(".initc,,)EFI一STATUSDriverEntryPoint(INEFIHANDLEImageHandle,INEFI—SYSTEMJTABLE*SystemTable){pragmacode—seg()区段的名称(例如.initc和.initd)可以由开发者选择。在可替换实施例中,开发者可以使用不同的区段名称,优选的,要避免编译器保留的名称,例如.data、.rdata、.text、.reloc等。以上提出的C语言代码示例创建了用于引导时代码的区段".inito",并将"DriverEntryPoint"函数代码设置到该区段中。该"DriverEntryPoint"函数仅在引导时为运行时驱动程序初始化而调用。以上示例还使用编译器指令,将"可废弃"属性分配给该区段。具体而言,示例中的第一行设置以下属性可读(R),可执行(E)和可废弃(D)。相比而言,驱动程序的在运行时环境中操作的区段可定义为不具有"可废弃"属性。默认地,链接器可以将所有代码设置在.text区段中。链接器可以基本上使用常规处理来将不具有"可废弃"属性的区段装入到.text区段中,并将所有可废弃区段设置在文件映像的底部。可替换地,当对驱动程序进行链接时,可以使用任何其它适合的工具来将可废弃区段设置在文件映像的底部。然后,PE/COFF映像装入器可以将所有可废弃区段设置在引导时存储器中,并且将其它所有区段设置在运行时存储器中。由于驱动程序的整个映像不会装入到一个连续的存储器地址空间中,因此当安置所装入的区段时,映像装入器会使用不同的映像基地址。装入到运行时存储器中的区段会以新的运行时映像基地址安置,而装入到引导时存储器中的可废弃区段可以根据其当前位置来安置。例如,PE映像可以用默认基地址(例如地址A)来链接。如果映像随后被装入从地址A开始的运行时存储器,就无需再次安置该映像。然而,如果映像被装入从一个不同地址(例如地址B)开始的运行时存储器中,则随后就会借助于使用地址B作为运行时映像的新的基地址来安置该映像。而且,可废弃区段会装入到引导时存储器中,而不是运行时存储器中(例如在地址C开始)。这些引导时区段会与可废弃区段不连续。如果先前装入的运行时区段的尺寸是X,则从引导时区段的观点来看,映像可以看起来是从C-X开始装入的。因此,映像装入器可以使用C-X作为基地址来安置引导时区段。为了进一步减小运行时驱动程序所需的运行时存储器的量,映像装入器还可以将映像文件的首部设置在引导时存储器中。映像装入器还可以预先分配一大块连续的运行时存储器,并可以将全部运行时驱动程序一个接一个地装入到该空间内。映像装入器还可以将运行时代码的安置数据(fix-updata)复制到运行时存储器,而不是引导时代码的安置数据。特别是,除了在.data、.rdata、.text和.reloc区段中的信息之外,PE/COFF映像通常包括一些额外的数据。该额外的数据可以被称为映像首部信息,其可以包括这样的构成例如,PE文件首部,可选首部,和区段首部。映像首部信息通常由映像装入器使用,来在引导时期间装入并重定位映像。在通常的PE映像中的映像首部信息会占用约600个字节。在该示例性实施例中,映像装入器将映像首部信息装入到引导时存储器中。关于运行时驱动程序的设置,常规的基于EFI的固件将各个映像的基址装入到页面边界处。因此,由于PE映像的大小通常不是页面大小的倍数,各个映像的最后一个页面会包含大量的未使用空间。在该示例性实施例中,映像装入器在运行时存储器中更紧密地设置运行时驱动程序。例如,引导过程的运行时存储器需求会被记录。在随后的引导过程中,映像装入器可以使用所记录的存储器需求来确定预期的运行时存储器需求,并可以预先分配单块的运行时存储器,其足够大,以满足预期的运行时存储器需求。在一个实施例中,在每次系统引导时,映像装入器确定由运行时映像所使用的运行时存储器大小,映像装入器将该大小存储到非易失性存储器的一个变量中。另外,如以上所指的,映像装入器可以基于先前所使用的存储器量,确定当前引导的预期存储器需求。在两次或多次引导后,存储器分配会稳定。此外,并非使用页面边界作为用于对齐映像的度量,映像装入器可以使用更精细颗粒的对齐度量(即,能够为每个页面提供多于一个分割或边界的度量)。例如,并非将映像对齐在4千字节(KB)或8KB页面边距上,映像装入器会将各个运行时映像装入到预先分配的、在8字节、16字节、32字节或任何其它适合的少于页面边界的对齐边界上对齐的运行时存储器中。这种使用小于页面大小的对齐粒度的技术,对于每个运行时驱动程序平均节省约半个页面。对于所述安置数据,由于开发者和编译器会将用于弓I导时操作和运行时操作的代码和数据分离到不同区段中。因此在运行时无需用于引导时区段的安置数据。因此,映像装入器会仅将用于运行时代码和数据重定位的安置数据复制到运行时存储器中。该技术还会减少平台框架的运行时存储器占用区。对原型桌面处理系统进行了实验,根据以上介绍的一种或多种技术来利用运行时存储器。用于该系统的平台框架具有9个运行时驱动程序。依据常规技术,这些驱动程序使得运行时存储器占用区占用17个页面。当将以上介绍的技术用于该系统时,运行时存储器占用区仅占用9个页面。这样,存储器占用区几乎实现了50%的减少。另外,服务器平台会使用更多运行时驱动程序,例如服务器管理及相关驱动程序。因此服务器平台还可以从以上技术获得大量的益处。图1是示出一种适合的数据处理环境12的框图,在该数据处理环境12中可以实现本发明的实施例的各个特定方面。数据处理环境12包括处理系统20,其包括各种硬件组件80和软件组件82。硬件组件可以包括例如处理器或中央处理单元(CPU)22,或多个处理器,其经由一个或多个系统总线24或其它通信通道或介质,可通信地耦合到各种其它组件。如在此所用的,术语"处理系统"和"数据处理系统"意图是广泛地包含单个机器,或可通信地耦合的机器或一起工作的装置构成的系统。处理系统的实例包括但不局限于分布式计算系统、超级计算机、高性能计算系统、计算集群、主计算机、微型计算机、客户机一服务器系统、个人计算机(PC)、工作站、服务器、便携式计算机、膝上型计算机、平板计算机(tabletcomputer)、个人数字助理(PDA)、电话、手持设备、娱乐设备,例如音频和/或视频设备、以及用于处理或传输信息的其它设备。处理系统20可以至少部分地由来自常规输入设备的输入进行控制,所述常规输入设备例如键盘、诸如鼠标之类的定点设备、等等。处理系统20还可以响应从其它处理系统或其它输入源或信号接收的指示或其它类型信息。处理系统20可以利用到一个或多个远程数据处理系统70的一个或多个连接,例如通过网络接口控制器(NIC)34、调制解调器、或其它通信端口或联接器。处理系统可以经由物理和/或逻辑网络72来相互连接,例如局域网(LAN)、广域网(WAN)、内联网、互联网等。涉及网络72的通信可以使用各种有线和/或无线的近程或远程载体和协议,包含射频(RF)、卫星、微波、电气和电子工程师协会(正EE)802.11,802.16,802.20、蓝牙、光、红夕卜、电缆、激光等等。在处理系统20中,处理器22可通信地耦合到一个或多个易失性或非易失性数据存储设备,例如RAM26、只读存储器(ROM)28、大容量存储设备30,如集成设备电路(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、和/或其它设备或介质,如软盘、光存储器、磁带、闪存、记忆棒、小型闪存卡(CF)、数字视频光盘(DVD)等等。对于本公开来说,术语"ROM"可以用来总体指代非易失性存储设备,如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪ROM、闪存等。处理器22还可以可通信地耦合到其他组件,例如视频控制器、SCSI控制器、网络控制器、通用串行总线(USB)控制器、1/0端口32、输入设备,如键盘、鼠标、相机等。处理系统20还可以包括一个或多个桥接器或集线器36,如内存控制中心(memorycontrollerhub)、1/0控制中心、外设部件互连(PCI)总桥等,用于可通信地耦合系统组件。如在此所用的,术语"总线"包括可以由两个以上的设备共享的通道,以及点对点通道。例如,一些组件,诸如NIC34,可以实现为具有用于与总线通信的接口(例如PCI连接器)的适配器卡。可替换的,NIC34和其它设备可以实现为板上式控制器或嵌入式控制器,其使用了诸如可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等之类的组件。在此参考或结合了诸如以下的数据来说明本发明指令、函数、过程、数据结构、应用程序、配置设定等。当机器对该数据进行存取时,该机器可以借助于执行任务、定义抽象数据类型或低级硬件设备环境、和/或执行其它操作来做出响应,如以下更为详细描述的。该数据可以存储在易失性或非易失性数据存储器中。对于本公幵来说,术语"程序"用来总体覆盖广泛范围的软件构成,包括应用程序、例程、方法、模块、驱动程序、子程序、过程和其它类型的软件组件。例如,数据存储设备30和/或ROM28可以包括各种指令集,所述指令集当被执行时,可以实现各种操作。这种指令集可以统称为软件。如图l中所示出的,在实施例中,当处理系统20运行时,其可以包括程序或软件组件82,如平台框架60、操作系统(OS)50、以及一个或多个应用程序84。平台框架60可以包括各种运行时驱动程序68,用于向OS50和/或其它模块提供运行时服务。在该示例性实施例中,实现平台框架60的程序可以存储在ROM28中,在处理系统20引导时,可以将这些程序中的一部分或全部装入RAM26。ROM30中的程序可以提供各种服务。例如,这些程序可以包括一个或多个PE映像64,以及用于在引导过程期间将PE映像装入RAM26中的映像装入器62。映像装入器62可以被认为是平台框架60的一部分,或者其可以是独立的模块。一旦作为平台框架60的一部分而被装入RAM26中,PE映像64(或相应的驱动程序)就可以在处理系统20中提供各种引导时服务和/或运行时服务。在该示例性实施例中,平台框架60在引导过程期间使用了引导时存储器72和运行时存储器70。然而,在处理系统20已经引导了OS50之后,OS50就可以使用RAM26中由平台框架60用作引导时存储器的空间。然而,OS50不会使用运行时存储器70,因为该区域包含运行时驱动程序68。在图1中,用于引导时存储器72的块使用虚轮廓线来表明当处理20已经完成引导时,引导时存储器可以不再存在。在处理系统中的PE映像可以适当包括仅在引导时期间提供服务的驱动程序的映像(即,引导时驱动程序的映像),以及在运行时提供服务的驱动程序的映像(即,运行时驱动程序的映像)。一些运行时驱动程序可以在运行时期间和引导时期间提供服务。由于本公开主要关注运行时驱动程序,因此图1仅示出了多个PE映像64之中用于运行时驱动程序的映像。在或者接近在引导过程幵始时,处理系统20可以从ROM将映像装入器62装入到引导时存储器72中。映像装入器62随后可以将PE映像64装入RAM26中。具体而言,如上所述,映像装入器62可以将每个PE映像64的一部分装入运行时存储器70中,并将每个PE映像64的另一部分装入引导时存储器72中。例如,RAM26中的块64A和64B分别表示PE映像64的、装入运行时存储器70和引导时存储器72中的各个部分。另外,在每个PE映像64都已经被装入RAM26中后,可以将驻留在运行时存储器70中的部分称为运行时驱动程序68。这样,在软件组件82中示出的每个运行时驱动程序68都对应于相应的PE映像64。图2是示出根据本发明的示例性实施例、用于管理PE映像的处理的各方面的流程图。所示出的处理从在映像装入器62已经被装入RAM26中之后,用于引导处理系统20的处理中开始。可以对在平台框架60中的每个PE映像执行所示出的处理。在块210,映像装入器62读取当前PE映像64的映像首部,并确定(即,计算或估计)平台框架60所需的运行时存储器的量。例如,映像装入器62可以基于在处理系统中存储的数据,来计算运行时存储器70所需的空间量,其中,所述数据指示在先前引导时运行时存储器所需的空间有多少。如在块212所示,映像装入器62随后可以基于对于需要多大运行时存储器的确定,预先分配RAM26中的一块空间作为运行时存储器70,用于保存运行时驱动程序68。如在块214所示的,随后,映像装入器62可以通过确定在平台框架60中是否剩余有任何其他PE映像64要进行处理,来开始处理平台框架60的每一个PE映像64。一旦全部映像都已经被处理后,该处理可以结束。然而,为了处理每个映像,映像装入器62可以从ROM28选择或获得未处理的PE映像64之一,如在块216所示的。随后,映像装入器62可以判断所选择的映像是否是用于运行时驱动程序的,如在块220所示的。在一个实施例中,映像装入器62基于在该映像的可选首部中名为'Subsystem'(子系统)的字段来做出该判断。如果该映像不是用于运行时驱动程序的(例如,如果它是用于仅在引导时期间所使用的驱动程序的),则映像装入器62可以将整个映像装入到引导时存储器72中,如在块222所示的,如果有的话,映像装入器随后可以移动到下一个映像。然而,如果该映像是用于运行时驱动程序的,则映像装入器62就可以开始处理在该映像内的各个区段。例如,如在块230和240所示的,对于每个待处理的区段,映像装入器62可以判断该区段是否是可废弃的。可废弃区段可以装入到引导时存储器72中,不可废弃区段可以装入到运行时存储器70中,如分别在块242和244所示的。在该示例性实施例中,将在.reloc区段中的所有重定位数据复制到引导时存储器72中,用于在该映像装入时的安置用途。一旦已经装入了所有的区段,该处理就可以从块230进到块250,块250说明映像装入器62计算用于引导时部分(即,已被装入引导时存储器72的各个区段)的基地址,以及用于运行时部分的基地址。然后,映像装入器62可以用来自每个映像的重定位(rdoc)数据,来安置引导时部分和运行时部分,如在块252所示的。另外,在运行时中需要重定位数据来安置运行时部分的情况下,映像装入器62可以将用于运行时部分的重定位数据复制到运行时存储器,如在块254所示的。然而,映像装入器62可以不将用于引导时部分的重定位数据复制到运行时存储器,因为一旦OS50己经引导,就不再需要该数据了。处理随后可以通过连接符号A返回到块214,如有必要,映像装入器62对任何剩余的待处理映像重复上述的操作。图3是示出示例性PE映像和相关存储器映射的框图。具体而言,图3示出了用于运行时驱动程序的两个PE映像64、66,每个PE映像都包含各种文件首部或映像首部、具有在运行时所需指令的一个或多个区段(示为以斜线填充)、以及具有可能仅在引导时所需指令的一个或多个其它区段。此外,该存储器映射显示了引导时存储器72与运行时存储器70在RAM26中的相对位置。如虛线箭头74所示一并根据图2的块242和244—每个映像的引导时区段都被装入引导时存储器72,运行时区段被装入运行时存储器70。基于引导时区段和运行时区段的装入的驱动程序用参考数字64A、64B、66A和66B来标记。在该示例性实施例中,图1中的运行时驱动程序68是运行时驱动程序64A的别名。此外,在参考数字40处的黑实心块意图示出映像装入器62在连续的运行时驱动程序之间仅留下很小的间隙(例如,8、16或32个字节),这是因为映像装入器62用比由OS50所提供的页面大小小的边界来对齐装入的映像,如以上所示。图4是更详细示出示例性PE映像的框图。图4中,该示例性PE文件是PE映像64。如以上相对于图1所述的,该映像包括待装入运行时存储器70以实现运行时驱动程序68的指令。如图4所示的,PE映像64包括各种首部120以及一个或多个映像页面130。此外,在该示例性实施例中,PE映像64包括四个不同的子划分140:运行时数据区段64Al、运行时代码区段64A2、引导时数据区段64B1和引导时代码区段64B2。这些子划分可以通过用如上述的编译指令编译COFF文件来创建。例如,在该示例性实施例中,区段64Al可以与标准.data区段相对应,区段64A2可以与标准.text区段相对应,而区段64B1可以包含从具有"可废弃"属性和名称.initd(如上所述)的区段而来的数据,区段64B2可以包含从具有"可废弃"属性和名称.initc(如上所述)的区段而来的数据。区段64A1可以包含区段64A2所使用的数据,例如全局变量等。区段64A2可以包含可以向运行时系统提供服务的代码。区段64B1可以包含区段64B2所使用的数据,例如全局变量等。区段64B2可以包含诸如驱动程序入口点和仅在引导时期间使用的函数之类的代码。当映像装入器62将PE映像64装入RAM中时,根据图3所示的总体操作,其可以将运行时数据区段64A1和运行时代码区段64A2装入到运行时存储器70中,来构成运行时驱动程序64A。类似的,映像装入器62可以将引导时数据区段64B1和引导时代码区段64B2装入到引导时存储器72中,来构成引导时驱动程序64B。运行时驱动程序64A和引导时驱动程序64B可以被认为是单个驱动程序的组成部分。如所述的,在该示例性实施例中,与用于在处理系统上实现或用例子说明平台框架的常规方案相比,平台框架所用的运行时存储器的空间效率得到显著提高。按照在此所述和所示的原理和实施例,可以认知,所述实施例可以在设置和细节上进行修改,而不会脱离这个原理。例如,在以上段落中,本公开涉及在引导过程中装入RAM中的程序。然而,在一些实施例中,处理系统可以被配置为使用处理器高速缓存来代替RAM。因此,除非上下文中明确要求了不同方式,否则在此对RAM的引用应理解为包括起到RAM作用的高速缓存。例如,对将数据装入RAM中的操作的提及,也可以指的是将数据装入起到RAM作用的处理器高速缓存中的操作。此外,尽管前述将注意力集中在具体实施例,其它结构也是可以预料到的。尽管在此可以使用例如"在一个实施例中"、"在另一实施例中"等表达形式,但是这些短语通常意思是指参考实施例的可能性,并不意图将本发明限于具体实施例结构。如在此所用的,这些术语可以涉及相同或不同实施例,并且这些实施例可以合并到其它实施例中。类似的,尽管已经按照一个特定顺序执行的具体操作说明了示例性处理过程,但可以对这些处理过程做出许多修改,来得到本发明的许多可替换实施例。例如,可替换实施例可以包括使用的操作比在此公开的操作少的处理、使用其他操作的处理、使用不同顺序的多个相同操作的处理、以及其中将在此公开的各个操作进行合并、再分或其他改变的处理。本发明的可替换实施例还包括用于执行本发明的操作的、机器可访问介质的编码指令。这种实施例还可以称为程序产品。这种机器可访问介质可以包括但不限于存储介质,例如软盘、硬盘、CD-ROM、ROM和RAM;以及通信介质,如天线、电线、光纤、微波、无线电波及其它电磁载体或光载体。因此,指令及其它数据可以通过传输环境或网络以分组、串行数据、并行数据、传播信号等形式进行传递,并可以用于分布式环境,并且可以被本地和/或远程存储,以便由单处理器或多处理器的机器进行访问。还应理解,在此所述的硬件和软件组件表示功能元件,其是适度独立式的,以便每一个元件都可以基本上独立于其它元件进行设计、构建或更新。在可替换实施例中,其中许多组件可以实现为硬件、软件或硬件和软件的组合,用于提供在此所述和所示的功能。用于执行本发明操作的硬件、软件或硬件和软件的组合还可以称为逻辑或控制逻辑。鉴于易于从在此所述实施例得到的各种有用的置换,该详细说明意图仅是说明性的,不应作为本发明范围的限制。因此,本发明所要求权利的是在附带的权利要求的范围和精神内的全部实现及这种实现的全部等价物。权利要求1、一种用于装入可移植可执行(PE)映像的方法,所述方法包括判断用于平台固件运行时服务的PE映像是否包含可废弃区段;将所述PE映像的一部分装入运行时存储器,以便由所述平台固件使用;以及响应于确定所述PE映像包含可废弃区段,在将所述PE映像装入所述运行时存储器时,省略至少一部分所述可废弃区段。2、根据权利要求1的方法,还包括将所述可废弃区段装入引导时存储器,以便由所述平台固件使用。3、根据权利要求1的方法,还包括-在将所述PE映像装入所述运行时存储器时,使用小于一千字节的对齐粒度。4、根据权利要求1的方法,还包括-在将所述PE映像装入所述运行时存储器时,使用小于一百字节的对齐粒度。5、根据权利要求1的方法,还包括-为PE映像预先分配运行时存储器区域;以及将来自多个PE映像的区段装入所述预先分配的运行时存储器区域。6、根据权利要求1的方法,还包括为PE映像预先分配运行时存储器区域;以及将来自多个PE映像的区段装入所述预先分配的运行时存储器区域;及在将所述多个PE映像装入所述预先分配的运行时存储器区域时,使用小于一千字节的对齐粒度。7、根据权利要求1的方法,还包括记录与第一引导过程相关联的运行时存储器大小;以及至少部分地基于所述记录的运行时存储器大小,为PE映像预先分配与随后的引导过程相关联的运行时存储器区域。8、根据权利要求1的方法,还包括记录与第一引导过程相关联的运行时存储器大小;至少部分地基于所述记录的运行时存储器大小,为PE映像预先分配与随后的引导过程相关联的运行时存储器区域;及将来自多个PE映像的区段装入所述预先分配的运行时存储器区域中。9、根据权利要求1的方法,还包括记录与第一引导过程相关联的运行时存储器大小;至少部分地基于所述记录的运行时存储器大小,为PE映像预先分配与随后的引导过程相关联的运行时存储器区域;将来自多个PE映像的区段装入所述预先分配的运行时存储器区域中;确定所述预先分配的运行时存储器区域有多少被使用了;以及至少部分地基于对于所述预先分配的运行时存储器区域有多少被使用的所述确定,记录与第二弓I导过程相关联的第二运行时存储器大小。10、根据权利要求l的方法,其中,所述PE映像包括首部信息,所述方法还包括在将所述PE映像装入所述运行时存储器时,省略至少一部分所述首部"f曰息。11、一种用于创建可移植可执行(PE)映像的方法,所述方法包括-在链接器上接收目标文件,所述目标文件包含多个具有用于执行引导时操作的指令的可废弃区段,以及具有用于执行运行时操作的指令的区段;并且至少部分地根据所述目标文件,产生可执行PE映像;其中,产生所述可执行PE映像的操作包括在所述PE映像中将所述多个可废弃区段聚集在一起。12、根据权利要求ll的方法,其中,在所述PE映像中将多个具有用于执行引导时操作的指令的区段聚集在一起的所述操作包括将所述多个可废弃区段聚集在一起,并置于具有用于执行运行时操作的指令的区段的下面。13、一种用于引导处理系统的方法,所述方法包括-获得可移植可执行(PE)映像,用于要由所述处理系统的平台固件提供的运行时服务;判断所述PE映像是否包含可废弃区段;响应于确定所述PE映像包含可废弃区段,将所述可废弃区段装入引导时存储器,以便由所述平台固件使用;以及将所述PE映像的一部分装入运行时存储器,以便由所述平台固件使用;但在将所述PE映像装入所述运行时存储器时,省略至少一部分所述可废弃区段。14、根据权利要求13的方法,还包括为PE映像预先分配运行时存储器区域;将来自多个PE映像的区段装入所述预先分配的运行时存储器区域;以及在将所述多个PE映像装入所述预先分配的运行时存储器区域时,使用小于四千字节的对齐粒度。15、根据权利要求13的方法,其中,所述PE映像包括首部信息,所述方法还包括在将所述PE映像的一部分装入所述运行时存储器时,省略至少一部分所述首部信息。16、一种设备,包含用于为处理系统提供运行时服务的控制逻辑,所述设备包括机器可访问介质;以及在所述机器可访问介质中的可移植可执行(PE)映像,所述PE映像用于为所述处理系统提供运行时服务,其中,所述PE映像包括具有用于执行运行时操作的指令的区段;以及具有用于执行引导时操作的指令的多个可废弃区段,其中,在所述PE映像中将所述多个可废弃区段聚集在一起。17、根据权利要求16的设备,其中,将所述多个可废弃区段聚集在一起,并置于具有用于执行运行时操作的指令的区段的下面。18、一种处理系统,具有用于管理PE映像的控制逻辑,所述处理系统包括处理器;机器可访问介质,其响应于所述处理器;在所述机器可访问介质中的指令,所述指令在由所述处理器执行时,实现映像装入器;以及在所述机器可访问介质中的可移植可执行(PE)映像,所述PE映像用于为所述处理系统提供平台固件中的运行时服务;其中,所述PE映像包括具有用于执行运行时操作的指令的区段;以及具有用于执行引导时操作的指令的多个可废弃区段;以及其中,在所述PE映像中将所述多个可废弃区段聚集在一起。19、根据权利要求18的处理系统,其中,所述映像装入器包括以下控制逻辑判断所述PE映像是否包含可废弃区段;将所述PE映像的一部分装入运行时存储器,以便由所述平台固件使用;以及响应于确定所述PE映像包含可废弃区段,在将所述PE映像装入所述运行时存储器时,省赂至少一部分所述可废弃区段。20、根据权利要求19的处理系统,其中,所述映像装入器包括控制逻辑,用于将所述可废弃区段装入引导时存储器,以便由所述平台固件使用。21、根据权利要求19的处理系统,其中,所述映像装入器包括以下控制逻辑为PE映像预先分配运行时存储器区域;将来自多个PE映像的区段装入所述预先分配的运行时存储器区域;以及在将所述多个PE映像装入所述预先分配的运行时存储器区域时,使用小于四千字节的对齐粒度。全文摘要当处理系统引导时,映像装入器可以判断用于平台固件运行时服务的可移植可执行(PE)映像是否包含可废弃区段。映像装入器可以将PE映像的一区段装入运行时存储器,以便由所述平台固件使用。响应于确定PE映像包含可废弃区段,在将PE映像装入所述运行时存储器时,映像装入器省略至少一区段所述可废弃区段。作为替换,映像装入器可以将可废弃区段装入引导时存储器。在另一个实施例中,映像装入器可以为PE映像预先分配运行时存储器区域,并可以将来自多个PE映像的区段装入预先分配的区域。此外,当将PE映像装入预先分配的区域时,映像装入器可以使用小于页面大小的对齐粒度。对其它实施例进行了说明并要求了权利。文档编号G06F9/445GK101317154SQ200580052154公开日2008年12月3日申请日期2005年12月24日优先权日2005年12月24日发明者X·马,Y·李申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1