CN101317154B - 用于高效地布置可移植可执行(pe)映像的方法与设备 - Google Patents

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

Info

Publication number
CN101317154B
CN101317154B CN2005800521544A CN200580052154A CN101317154B CN 101317154 B CN101317154 B CN 101317154B CN 2005800521544 A CN2005800521544 A CN 2005800521544A CN 200580052154 A CN200580052154 A CN 200580052154A CN 101317154 B CN101317154 B CN 101317154B
Authority
CN
China
Prior art keywords
reflection
portable
section
carried out
carry out
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
Application number
CN2005800521544A
Other languages
English (en)
Other versions
CN101317154A (zh
Inventor
Y·李
X·马
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101317154A publication Critical patent/CN101317154A/zh
Application granted granted Critical
Publication of CN101317154B publication Critical patent/CN101317154B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

当处理系统引导时,映像装入器可以判断用于平台固件运行时服务的可移植可执行(PE)映像是否包含可废弃区段。映像装入器可以将PE映像的一区段装入运行时存储器,以便由所述平台固件使用。响应于确定PE映像包含可废弃区段,在将PE映像装入所述运行时存储器时,映像装入器省略至少一区段所述可废弃区段。作为替换,映像装入器可以将可废弃区段装入引导时存储器。在另一个实施例中,映像装入器可以为PE映像预先分配运行时存储器区域,并可以将来自多个PE映像的区段装入预先分配的区域。此外,当将PE映像装入预先分配的区域时,映像装入器可以使用小于页面大小的对齐粒度。对其它实施例进行了说明并要求了权利。

Description

用于高效地布置可移植可执行(PE)映像的方法与设备
技术领域
本发明总体涉及数据处理领域,更具体的,涉及包含可移植可执行(PE)映像的方法及相关设备。
背景技术
在典型的传统数据处理系统中,固件提供用于在系统通电或复位时但在引导操作系统(OS)之前控制系统的机器指令。就是说,固件控制OS之前或引导前的操作。固件还可以在载入OS后控制多种特定操作,例如用于处理特定硬件事件和/或系统中断的操作。固件可以通过统称为基本输入/输出系统(BIOS)的一组程序,来处理引导前与引导后的操作。由此,BIOS提供了在系统的硬件组件与诸如OS之类的软件组件之间的接口。因此,用于传统系统的固件通常是专门为固件在其中操作的硬件平台编写的。
对于本公开来说,术语“固件”用于指的是在处理系统引导到OS之前可以在处理系统中执行软件、提供用于允许OS或其它组件与处理系统硬件进行交互的运行时服务(runtime service)的软件、以及相似类型的软件组件。传统上,固件通常存储在非易失性存储器中。然而近年来,处理系统已经发展为,将固件存储在其它类型的存储设备或远程存储库中,或者可以从其它类型的存储设备或远程存储库中获得固件。
另外,前不久,发表了可扩展固件接口(EFI)模块。EFI模块提供了一种用于在平台固件与高级软件(如操作系统)之间的接口的模块。可以从www.intel.com/technology/efi/main_specification.htm获得2002年12月1日的EFI规范的1.10版。EFI规范定义了由低级平台固件提供的一组标准接口和结构。这些接口和结构可以用于诸如装入其他固件、运行引导前的应用程序、引导OS、以及在引导了OS后提供运行时服务之类的任务。
EFI模块需要将诸如固件驱动程序、OS之前的应用程序之类的软件模块和用于提供运行时服务的模块根据可移植可执行(PE)格式进行格式化。PE格式是一种文件格式,其被Microsoft公司采用为在操作系统下运行的可执行文件的标准格式,操作系统例如为NT、
Figure GSB00000578044100022
XP、
Figure GSB00000578044100023
2000、Microsoft Windows术语“可移植可执行”反应了一个目的,即,提供用于多种操作系统的可执行文件的一种通用格式。PE文件可以运行在多种不同硬件平台上,包括32位架构和64位架构。
Figure GSB00000578044100025
链接器可以用于从公用目标文件格式(COFF)中的目标文件,产生PE格式的可执行文件。COFF是用于由
Figure GSB00000578044100026
编译器产生的目标文件的文件格式。PE格式和COFF格式都在1999年2月的“Microsoft Portable Executable and Common Object File FormatSpecification”的6.0版(“PE/COFF Specification”)中说明,其可以在www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx获得。使用PE映像的一个优点在于灵活性,因为PE映像易于从一个存储器基址(memory base)重定位到另一个,只要该映像包含重定位数据。
希望基于EFI模块的平台框架,例如用于FEI的
Figure GSB00000578044100027
PlatformInnovation Framework,在接下来的几年内会代替基于常规BIOS模块的框架来作为用于设计、构建和操作数据处理系统的框架选择。基于EFI的平台框架可以包括低级固件或软件,其提供其它软件组件(例如操作系统及其装入器)可利用的引导时服务调用和运行时服务调用。特别是,希望基于EFI的平台框架使用模块化结构,在该模块化结构中,用于提供如以上提到的服务调用的固件或软件模块使用PE映像格式。
常规PE映像文件被组织为区段(section)或段(segment)。对于本公开来说,用于在基于EFI的框架中提供运行时服务的模块可以通称为运行时驱动程序(runtime driver)。通常,用于运行时驱动程序的PE映像会具有4个段,即.data、.rdata、.text和.reloc。默认地,所有的代码都会输入到.text段,所有的可写数据会输入到.data段。
要求运行时驱动程序驻留在特定的存储器区域内,来为OS提供EFI运行时服务。通常,这个存储器区域被称为EFI运行时存储器。OS保留运行时驱动程序专用的EFI运行时存储器。
发明内容
为了解决现有技术中的存在的上述问题,本发明提供了一种用于装入可移植可执行PE映像的方法,所述方法包括:判断用于平台固件运行时服务的可移植可执行PE映像是否包含可废弃区段;将所述可移植可执行PE映像的一部分装入运行时存储器,以便由所述平台固件使用;以及响应于确定所述可移植可执行PE映像包含可废弃区段,在将所述可移植可执行PE映像装入所述运行时存储器时,省略至少一部分所述可废弃区段,其中,所述可移植可执行PE映像包括:具有用于执行运行时操作的指令的区段;以及具有用于执行引导时操作的指令的多个可废弃区段。
在另一方案中,本发明提供了一种用于创建可移植可执行PE映像的方法,所述方法包括:在链接器上接收目标文件,所述目标文件包含多个具有用于执行引导时操作的指令的可废弃区段,以及具有用于执行运行时操作的指令的区段;并且至少部分地根据所述目标文件,产生可移植可执行PE映像;其中,产生所述可移植可执行PE映像的操作包括:在所述可移植可执行PE映像中将所述多个可废弃区段聚集在一起,其中,所述可移植可执行PE映像包括:具有用于执行运行时操作的指令的区段;以及具有用于执行引导时操作的指令的多个可废弃区段。
在再另一方案中,本发明提供了一种用于引导处理系统的方法,所述方法包括:获得可移植可执行PE映像,用于要由所述处理系统的平台固件提供的运行时服务;判断所述可移植可执行PE映像是否包含可废弃区段;响应于确定所述可移植可执行PE映像包含可废弃区段,将所述可废弃区段装入引导时存储器,以便由所述平台固件使用;以及将所述可移植可执行PE映像的一部分装入运行时存储器,以便由所述平台固件使用;但在将所述可移植可执行PE映像装入所述运行时存储器时,省略至少一部分所述可废弃区段,其中,所述可移植可执行PE映像包括:具有用于执行运行时操作的指令的区段;以及具有用于执行引导时操作的指令的多个可废弃区段。
在又另一方案中,本发明提供了一种用于创建可移植可执行PE映像的设备,所述设备包括:用于在链接器上接收目标文件的模块,所述目标文件包含多个具有用于执行引导时操作的指令的可废弃区段,以及具有用于执行运行时操作的指令的区段;并且用于至少部分地根据所述目标文件,产生可移植可执行PE映像的模块;其中,用于产生所述可移植可执行PE映像的模块包括:用于在所述PE映像中将所述多个可废弃区段聚集在一起的模块,其中,所述可移植可执行PE映像包括:具有用于执行运行时操作的指令的区段;以及具有用于执行引导时操作的指令的多个可废弃区段。
在再又一方案中,本发明提供了一种具有用于管理可移植可执行PE映像的控制模块的处理系统,所述处理系统包括:处理器;运行时存储器,用于存储所述可移植可执行PE映像的运行时区段;引导时存储器,用于存储所述可移植可执行PE映像的可废弃区段;平台固件;以及映像装入器,用于将所述可移植可执行PE映像的运行时区段装入所述运行时存储器,并将所述可移植可执行PE映像的可废弃区段装入所述引导时存储器,以便由所述平台固件使用;其中,所述可移植可执行PE映像包括:具有用于执行运行时操作的指令的所述运行时区段;以及具有用于执行引导时操作的指令的多个可废弃区段;以及其中,在所述可移植可执行PE映像中将所述多个可废弃区段聚集在一起。
附图说明
依据所附的权利要求,以下一个或多个实施例的详细说明及相应的附图,本发明的特点和优点会变得显而易见,其中:
图1是示出适合的数据处理环境的框图,在该数据处理环境中可以实现本发明实施例的各个特定方面;
图2是示出根据本发明的实施例,用于管理PE映像的处理的各个方面的流程图;
图3是示出示例性PE映像和相关存储器映射的框图;以及
图4是更详细地说明实例PE映像的框图。
具体实施方式
由于OS保留了运行时驱动程序专用的EFI运行时存储器,因此运行时驱动程序所需的存储器空间越大,留给OS使用的存储器空间就越少。因此,如同本发明所认知的,对于固件而言,减少或最小化运行时存储器的使用量会是有益的。最小化或减少在基于EFI的固件中的运行时存储器占用区,会为OS提供更多可用存储器来在运行时环境中使用,这就可以为终端用户所用的应用程序提供更好的性能。
在常规基于EFI的平台框架中,将用于每个运行时驱动程序的完整映像存储在EFI运行时存储器中。因此,运行时驱动程序所占用的运行时存储器的量是与其PE映像大小相同或几乎相同的。本发明的一个或多个实施例可以在EFI运行时存储器中存储较小的运行时驱动程序,从而留下更多的OS可利用的存储器。
如以下详述的,在示例性实施例中,并非是将来自运行时驱动程序映像的全部代码和数据都装入到EFI运行时存储器中,用于基于EFI的平台框架的映像装入器(loader)可以仅将一些来自这些PE映像的代码和数据装入到运行时存储器。没有装入运行时存储器的代码和数据可以包括仅是诸如驱动程序初始化之类的引导时(boot-time)操作所需的代码和数据。例如,当填充运行时存储器时,映像装入器可以省略一旦运行时驱动程序已经成功装入并初始化后就不再需要的初始化代码和相关数据。
常规PE映像的内容是按照区段组织的。运行时驱动程序通常具有4个区段:.data、.rdata、.text和.reloc。所有的代码都驻留在.text段中,所有的可写数据都驻留在.data段中。当这些代码全部都驻留在同一区段中,数据全部都驻留在同一区段中时,映像装入器会不能区分这些代码和数据中的任何部分,将会简单地将全部代码和数据装入到运行时存储器中。
根据该示例性实施例,为了有利于更有选择性地且有效地使用运行时存储器,当生成或构建运行时驱动程序时,链接器可以将用于引导时操作的代码存储在与用于运行时操作的代码不同的区段中。类似的,用于引导时操作的数据可以存储到与用于运行时操作的数据不同的区段中。另外,链接器可以为引导时区段设置一个属性,以便将这些区段标记为“可废弃”。
而且,映像装入器可以考虑这些区段的属性,并可以将可废弃区段设置到引导时存储器中,而不是运行时存储器中。
运行时驱动程序的主要目的通常是向OS提供运行时服务。然而,驱动程序会需要在引导时期间执行初始化操作。代码开发者会使用编译器的选项,来将仅在引导时所需的代码和数据设置在单独的区段中。例如,开发者会使用Microsoft的visual C(VC)编译器中的以下编译器选项,来将用于引导时操作的代码编译到一个区段中(命名为“.initc”),将用于运行时操作的代码编译到另一个不同区段中(命名为“.initd”):
Figure GSB00000578044100061
区段的名称(例如.initc和.initd)可以由开发者选择。在可替换实施例中,开发者可以使用不同的区段名称,优选的,要避免编译器保留的名称,例如.data、.rdata、.text、.reloc等。
以上提出的C语言代码示例创建了用于引导时代码的区段“.initc”,并将“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字节或任何其它适合的少于页面边界的对齐边界上对齐的运行时存储器中。这种使用小于页面大小的对齐粒度的技术,对于每个运行时驱动程序平均节省约半个页面。
对于所述安置数据,由于开发者和编译器会将用于引导时操作和运行时操作的代码和数据分离到不同区段中。因此在运行时无需用于引导时区段的安置数据。因此,映像装入器会仅将用于运行时代码和数据重定位的安置数据复制到运行时存储器中。该技术还会减少平台框架的运行时存储器占用区。
对原型桌面处理系统进行了实验,根据以上介绍的一种或多种技术来利用运行时存储器。用于该系统的平台框架具有9个运行时驱动程序。依据常规技术,这些驱动程序使得运行时存储器占用区占用17个页面。当将以上介绍的技术用于该系统时,运行时存储器占用区仅占用9个页面。这样,存储器占用区几乎实现了50%的减少。另外,服务器平台会使用更多运行时驱动程序,例如服务器管理及相关驱动程序。因此服务器平台还可以从以上技术获得大量的益处。
图1是示出一种适合的数据处理环境12的框图,在该数据处理环境12中可以实现本发明的实施例的各个特定方面。数据处理环境12包括处理系统20,其包括各种硬件组件80和软件组件82。硬件组件可以包括例如处理器或中央处理单元(CPU)22,或多个处理器,其经由一个或多个系统总线24或其它通信通道或介质,可通信地耦合到各种其它组件。
如在此所用的,术语“处理系统”和“数据处理系统”意图是广泛地包含单个机器,或可通信地耦合的机器或一起工作的装置构成的系统。处理系统的实例包括但不局限于:分布式计算系统、超级计算机、高性能计算系统、计算集群、主计算机、微型计算机、客户机-服务器系统、个人计算机(PC)、工作站、服务器、便携式计算机、膝上型计算机、平板计算机(tablet computer)、个人数字助理(PDA)、电话、手持设备、娱乐设备,例如音频和/或视频设备、以及用于处理或传输信息的其它设备。
处理系统20可以至少部分地由来自常规输入设备的输入进行控制,所述常规输入设备例如键盘、诸如鼠标之类的定点设备、等等。处理系统20还可以响应从其它处理系统或其它输入源或信号接收的指示或其它类型信息。处理系统20可以利用到一个或多个远程数据处理系统70的一个或多个连接,例如通过网络接口控制器(NIC)34、调制解调器、或其它通信端口或联接器。处理系统可以经由物理和/或逻辑网络72来相互连接,例如局域网(LAN)、广域网(WAN)、内联网、互联网等。涉及网络72的通信可以使用各种有线和/或无线的近程或远程载体和协议,包含射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11.802.16,802.20、蓝牙、光、红外、电缆、激光等等。
在处理系统20中,处理器22可通信地耦合到一个或多个易失性或非易失性数据存储设备,例如RAM 26、只读存储器(ROM)28、大容量存储设备30,如集成设备电路(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、和/或其它设备或介质,如软盘、光存储器、磁带、闪存、记忆棒、小型闪存卡(CF)、数字视频光盘(DVD)等等。对于本公开来说,术语“ROM”可以用来总体指代非易失性存储设备,如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪ROM、闪存等。处理器22还可以可通信地耦合到其他组件,例如视频控制器、SCSI控制器、网络控制器、通用串行总线(USB)控制器、I/O端口32、输入设备,如键盘、鼠标、相机等。处理系统20还可以包括一个或多个桥接器或集线器36,如内存控制中心(memory controller hub)、I/O控制中心、外设部件互连(PCI)总桥等,用于可通信地耦合系统组件。如在此所用的,术语“总线”包括可以由两个以上的设备共享的通道,以及点对点通道。
例如,一些组件,诸如NIC 34,可以实现为具有用于与总线通信的接口(例如PCI连接器)的适配器卡。可替换的,NIC 34和其它设备可以实现为板上式控制器或嵌入式控制器,其使用了诸如可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等之类的组件。
在此参考或结合了诸如以下的数据来说明本发明:指令、函数、过程、数据结构、应用程序、配置设定等。当机器对该数据进行存取时,该机器可以借助于执行任务、定义抽象数据类型或低级硬件设备环境、和/或执行其它操作来做出响应,如以下更为详细描述的。该数据可以存储在易失性或非易失性数据存储器中。对于本公开来说,术语“程序”用来总体覆盖广泛范围的软件构成,包括:应用程序、例程、方法、模块、驱动程序、子程序、过程和其它类型的软件组件。
例如,数据存储设备30和/或ROM 28可以包括各种指令集,所述指令集当被执行时,可以实现各种操作。这种指令集可以统称为软件。
如图1中所示出的,在实施例中,当处理系统20运行时,其可以包括程序或软件组件82,如平台框架60、操作系统(OS)50、以及一个或多个应用程序84。平台框架60可以包括各种运行时驱动程序68,用于向OS 50和/或其它模块提供运行时服务。
在该示例性实施例中,实现平台框架60的程序可以存储在ROM 28中,在处理系统20引导时,可以将这些程序中的一部分或全部装入RAM26。ROM 30中的程序可以提供各种服务。例如,这些程序可以包括一个或多个PE映像64,以及用于在引导过程期间将PE映像装入RAM 26中的映像装入器62。映像装入器62可以被认为是平台框架60的一部分,或者其可以是独立的模块。一旦作为平台框架60的一部分而被装入RAM 26中,PE映像64(或相应的驱动程序)就可以在处理系统20中提供各种引导时服务和/或运行时服务。
在该示例性实施例中,平台框架60在引导过程期间使用了引导时存储器72和运行时存储器70。然而,在处理系统20已经引导了OS 50之后,OS 50就可以使用RAM 26中由平台框架60用作引导时存储器的空间。然而,OS 50不会使用运行时存储器70,因为该区域包含运行时驱动程序68。在图1中,用于引导时存储器72的块使用虚轮廓线来表明当处理20已经完成引导时,引导时存储器可以不再存在。
在处理系统中的PE映像可以适当包括仅在引导时期间提供服务的驱动程序的映像(即,引导时驱动程序的映像),以及在运行时提供服务的驱动程序的映像(即,运行时驱动程序的映像)。一些运行时驱动程序可以在运行时期间和引导时期间提供服务。由于本公开主要关注运行时驱动程序,因此图1仅示出了多个PE映像64之中用于运行时驱动程序的映像。
在或者接近在引导过程开始时,处理系统20可以从ROM将映像装入器62装入到引导时存储器72中。映像装入器62随后可以将PE映像64装入RAM 26中。具体而言,如上所述,映像装入器62可以将每个PE映像64的一部分装入运行时存储器70中,并将每个PE映像64的另一部分装入引导时存储器72中。例如,RAM 26中的块64A和64B分别表示PE映像64的、装入运行时存储器70和引导时存储器72中的各个部分。另外,在每个PE映像64都已经被装入RAM 26中后,可以将驻留在运行时存储器70中的部分称为运行时驱动程序68。这样,在软件组件82中示出的每个运行时驱动程序68都对应于相应的PE映像64。
图2是示出根据本发明的示例性实施例、用于管理PE映像的处理的各方面的流程图。所示出的处理从在映像装入器62已经被装入RAM 26中之后,用于引导处理系统20的处理中开始。可以对在平台框架60中的每个PE映像执行所示出的处理。在块210,映像装入器62读取当前PE映像64的映像首部,并确定(即,计算或估计)平台框架60所需的运行时存储器的量。例如,映像装入器62可以基于在处理系统中存储的数据,来计算运行时存储器70所需的空间量,其中,所述数据指示在先前引导时运行时存储器所需的空间有多少。如在块212所示,映像装入器62随后可以基于对于需要多大运行时存储器的确定,预先分配RAM 26中的一块空间作为运行时存储器70,用于保存运行时驱动程序68。
如在块214所示的,随后,映像装入器62可以通过确定在平台框架60中是否剩余有任何其他PE映像64要进行处理,来开始处理平台框架60的每一个PE映像64。一旦全部映像都已经被处理后,该处理可以结束。然而,为了处理每个映像,映像装入器62可以从ROM 28选择或获得未处理的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可以用来自每个映像的重定位(reloc)数据,来安置引导时部分和运行时部分,如在块252所示的。另外,在运行时中需要重定位数据来安置运行时部分的情况下,映像装入器62可以将用于运行时部分的重定位数据复制到运行时存储器,如在块254所示的。然而,映像装入器62可以不将用于引导时部分的重定位数据复制到运行时存储器,因为一旦OS 50已经引导,就不再需要该数据了。
处理随后可以通过连接符号A返回到块214,如有必要,映像装入器62对任何剩余的待处理映像重复上述的操作。
图3是示出示例性PE映像和相关存储器映射的框图。具体而言,图3示出了用于运行时驱动程序的两个PE映像64、66,每个PE映像都包含各种文件首部或映像首部、具有在运行时所需指令的一个或多个区段(示为以斜线填充)、以及具有可能仅在引导时所需指令的一个或多个其它区段。此外,该存储器映射显示了引导时存储器72与运行时存储器70在RAM 26中的相对位置。
如虚线箭头74所示-并根据图2的块242和244-每个映像的引导时区段都被装入引导时存储器72,运行时区段被装入运行时存储器70。基于引导时区段和运行时区段的装入的驱动程序用参考数字64A、64B、66A和66B来标记。在该示例性实施例中,图1中的运行时驱动程序68是运行时驱动程序64A的别名。此外,在参考数字40处的黑实心块意图示出映像装入器62在连续的运行时驱动程序之间仅留下很小的间隙(例如,8、16或32个字节),这是因为映像装入器62用比由OS 50所提供的页面大小小的边界来对齐装入的映像,如以上所示。
图4是更详细示出示例性PE映像的框图。图4中,该示例性PE文件是PE映像64。如以上相对于图1所述的,该映像包括待装入运行时存储器70以实现运行时驱动程序68的指令。如图4所示的,PE映像64包括各种首部120以及一个或多个映像页面130。此外,在该示例性实施例中,PE映像64包括四个不同的子划分140:运行时数据区段64A1、运行时代码区段64A2、引导时数据区段64B1和引导时代码区段64B2。这些子划分可以通过用如上述的编译指令编译COFF文件来创建。
例如,在该示例性实施例中,区段64A1可以与标准.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;以及通信介质,如天线、电线、光纤、微波、无线电波及其它电磁载体或光载体。因此,指令及其它数据可以通过传输环境或网络以分组、串行数据、并行数据、传播信号等形式进行传递,并可以用于分布式环境,并且可以被本地和/或远程存储,以便由单处理器或多处理器的机器进行访问。
还应理解,在此所述的硬件和软件组件表示功能元件,其是适度独立式的,以便每一个元件都可以基本上独立于其它元件进行设计、构建或更新。在可替换实施例中,其中许多组件可以实现为硬件、软件或硬件和软件的组合,用于提供在此所述和所示的功能。用于执行本发明操作的硬件、软件或硬件和软件的组合还可以称为逻辑或控制逻辑。
鉴于易于从在此所述实施例得到的各种有用的置换,该详细说明意图仅是说明性的,不应作为本发明范围的限制。因此,本发明所要求权利的是在附带的权利要求的范围和精神内的全部实现及这种实现的全部等价物。

Claims (20)

1.一种用于装入可移植可执行PE映像的方法,所述方法包括:
判断用于平台固件运行时服务的可移植可执行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映像的区段装入所述预先分配的运行时存储器区域中;
确定所述预先分配的运行时存储器区域有多少被使用了;以及
至少部分地基于对于所述预先分配的运行时存储器区域有多少被使用的所述确定,记录与第二引导过程相关联的第二运行时存储器大小。
10.根据权利要求1的方法,其中,所述可移植可执行PE映像包括首部信息,所述方法还包括:
在将所述可移植可执行PE映像装入所述运行时存储器时,省略至少一部分所述首部信息。
11.一种用于创建可移植可执行PE映像的方法,所述方法包括:
在链接器上接收目标文件,所述目标文件包含多个具有用于执行引导时操作的指令的可废弃区段,以及具有用于执行运行时操作的指令的区段;并且
至少部分地根据所述目标文件,产生可移植可执行PE映像;
其中,产生所述可移植可执行PE映像的操作包括:在所述可移植可执行PE映像中将所述多个可废弃区段聚集在一起,
其中,所述可移植可执行PE映像包括:
具有用于执行运行时操作的指令的区段;以及
具有用于执行引导时操作的指令的多个可废弃区段。
12.根据权利要求11的方法,其中,在所述可移植可执行PE映像中将多个具有用于执行引导时操作的指令的区段聚集在一起的所述操作包括:
将所述多个可废弃区段聚集在一起,并置于具有用于执行运行时操作的指令的区段的下面。
13.一种用于引导处理系统的方法,所述方法包括:
获得可移植可执行PE映像,用于要由所述处理系统的平台固件提供的运行时服务;
判断所述可移植可执行PE映像是否包含可废弃区段;
响应于确定所述可移植可执行PE映像包含可废弃区段,将所述可废弃区段装入引导时存储器,以便由所述平台固件使用;以及
将所述可移植可执行PE映像的一部分装入运行时存储器,以便由所述平台固件使用;但
在将所述可移植可执行PE映像装入所述运行时存储器时,省略至少一部分所述可废弃区段,
其中,所述可移植可执行PE映像包括:
具有用于执行运行时操作的指令的区段;以及
具有用于执行引导时操作的指令的多个可废弃区段。
14.根据权利要求13的方法,还包括:
为可移植可执行PE映像预先分配运行时存储器区域;
将来自多个可移植可执行PE映像的区段装入所述预先分配的运行时存储器区域;以及
在将所述多个可移植可执行PE映像装入所述预先分配的运行时存储器区域时,使用小于四千字节的对齐粒度。
15.根据权利要求13的方法,其中,所述可移植可执行PE映像包括首部信息,所述方法还包括:
在将所述可移植可执行PE映像的一部分装入所述运行时存储器时,省略至少一部分所述首部信息。
16.一种用于创建可移植可执行PE映像的设备,所述设备包括:
用于在链接器上接收目标文件的模块,所述目标文件包含多个具有用于执行引导时操作的指令的可废弃区段,以及具有用于执行运行时操作的指令的区段;并且
用于至少部分地根据所述目标文件,产生可移植可执行PE映像的模块;
其中,用于产生所述可移植可执行PE映像的模块包括:用于在所述可移植可执行PE映像中将所述多个可废弃区段聚集在一起的模块,
其中,所述可移植可执行PE映像包括:
具有用于执行运行时操作的指令的区段;以及
具有用于执行引导时操作的指令的多个可废弃区段。
17.根据权利要求16的设备,其中,用于在所述可移植可执行PE映像中将多个具有用于执行引导时操作的指令的区段聚集在一起的模块包括:
用于将所述多个可废弃区段聚集在一起,并置于具有用于执行运行时操作的指令的区段的下面的模块。
18.一种具有用于管理可移植可执行PE映像的控制模块的处理系统,所述处理系统包括:
处理器;
运行时存储器,用于存储所述可移植可执行PE映像的运行时区段;
引导时存储器,用于存储所述可移植可执行PE映像的可废弃区段;
平台固件;以及
映像装入器,用于将所述可移植可执行PE映像的运行时区段装入所述运行时存储器,并将所述可移植可执行PE映像的可废弃区段装入所述引导时存储器,以便由所述平台固件使用;
其中,所述可移植可执行PE映像包括:
具有用于执行运行时操作的指令的所述运行时区段;以及
具有用于执行引导时操作的指令的多个可废弃区段;以及
其中,在所述可移植可执行PE映像中将所述多个可废弃区段聚集在一起。
19.根据权利要求18的处理系统,其中,所述映像装入器包括以下控制模块:
判断所述可移植可执行PE映像是否包含可废弃区段;
将所述可移植可执行PE映像的运行时区段装入运行时存储器,以便由所述平台固件使用;以及
响应于确定所述可移植可执行PE映像包含可废弃区段,在将所述可移植可执行PE映像装入所述运行时存储器时,省略至少一部分所述可废弃区段。
20.根据权利要求19的处理系统,其中,所述映像装入器包括以下控制模块:
为可移植可执行PE映像预先分配运行时存储器区域;
将来自多个可移植可执行PE映像的区段装入所述预先分配的运行时存储器区域;以及
在将所述多个可移植可执行PE映像装入所述预先分配的运行时存储器区域时,使用小于四千字节的对齐粒度。
CN2005800521544A 2005-12-24 2005-12-24 用于高效地布置可移植可执行(pe)映像的方法与设备 Expired - Fee Related CN101317154B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2005/002306 WO2007073610A1 (en) 2005-12-24 2005-12-24 Method and apparatus for efficiently arranging portable executable (pe) images

Publications (2)

Publication Number Publication Date
CN101317154A CN101317154A (zh) 2008-12-03
CN101317154B true CN101317154B (zh) 2012-02-29

Family

ID=38217656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800521544A Expired - Fee Related CN101317154B (zh) 2005-12-24 2005-12-24 用于高效地布置可移植可执行(pe)映像的方法与设备

Country Status (4)

Country Link
US (1) US7555638B2 (zh)
EP (2) EP1963966A4 (zh)
CN (1) CN101317154B (zh)
WO (1) WO2007073610A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853742B2 (en) * 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
US8296553B2 (en) * 2008-11-19 2012-10-23 Intel Corporation Method and system to enable fast platform restart
US8918585B2 (en) * 2010-01-28 2014-12-23 Hitachi, Ltd. Management system calculating storage capacity to be installed/removed
US8516018B1 (en) 2012-02-28 2013-08-20 Google Inc. Budgeting native resources in resource-constrained devices that employ a dynamic, garbage-collection based view architecture
US8280197B1 (en) 2012-02-29 2012-10-02 Google Inc. Managed background loading of image resources in resource-constrained devices
TW201337760A (zh) * 2012-03-09 2013-09-16 Phoenix Tech Ltd 呼叫基本輸入輸出系統之韌體執行時間服務之方法
JP2017226169A (ja) * 2016-06-24 2017-12-28 京セラドキュメントソリューションズ株式会社 画像形成装置およびメモリー配分方法
US11321077B1 (en) * 2020-06-05 2022-05-03 Amazon Technologies, Inc. Live updating of firmware behavior
US11748228B2 (en) * 2021-02-25 2023-09-05 Dell Products L.P. Optimizing preboot telemetry efficiency

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701476A (en) * 1994-11-29 1997-12-23 Intel Corporation Method and apparatus for dynamically loading a driver routine in a computer memory
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US6298422B1 (en) * 1996-06-17 2001-10-02 Network Associates, Inc. Method for reducing the memory requirements for an application program executing in a multi-tasking environment
US6128732A (en) * 1997-12-15 2000-10-03 Compaq Computer Corporation Implementing universal serial bus support with a minimum of system RAM
WO2001065359A2 (en) 2000-02-29 2001-09-07 Peter Petrov Method and apparatus for building a memory image
TW583582B (en) * 2001-05-11 2004-04-11 Benq Corp Microcomputer and associated method for reducing memory usage of the microcomputer
US8214849B2 (en) * 2001-07-13 2012-07-03 Advanced Micro Devices, Inc. System for loading device-specific code and method thereof
US7392371B2 (en) * 2001-12-20 2008-06-24 Zimmer Vincent J Method and apparatus for using a volume top file to boot firmware modules
US7082509B2 (en) * 2003-02-06 2006-07-25 Intel Corporation Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time
US7146512B2 (en) * 2003-06-30 2006-12-05 Intel Corporation Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US7127600B2 (en) * 2003-09-30 2006-10-24 Intel Corporation Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting
US7181610B2 (en) * 2003-10-07 2007-02-20 Intel Corporation Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension
US7676800B2 (en) * 2004-02-20 2010-03-09 Intel Corporation Method and apparatus for reducing the storage overhead of portable executable (PE) images
US7644287B2 (en) * 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication

Also Published As

Publication number Publication date
EP2485145A2 (en) 2012-08-08
US7555638B2 (en) 2009-06-30
EP1963966A1 (en) 2008-09-03
EP1963966A4 (en) 2009-12-30
EP2485145A3 (en) 2012-10-24
WO2007073610A1 (en) 2007-07-05
CN101317154A (zh) 2008-12-03
US20080059781A1 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
CN101317154B (zh) 用于高效地布置可移植可执行(pe)映像的方法与设备
CN101615106B (zh) 用于虚拟化sas存储适配器的方法和系统
CN101751285B (zh) 用于不同种类处理单元的集中式设备虚拟化层
TWI315032B (en) Method and system for managing partitions in a storage device
US7730268B2 (en) Multiprocessor system having an input/output (I/O) bridge circuit for transferring data between volatile and non-volatile memory
KR102363526B1 (ko) 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법
CN101120324B (zh) 用于在存储设备中设置保留区域的存储管理装置和方法
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
CN102708065A (zh) 页面文件预留
US20170102895A1 (en) Storage device, host communicating with the storage device, and electronic device including the storage device
KR102381343B1 (ko) 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US20230107344A1 (en) Analytics, Algorithm Architecture, and Data Processing System and Method
CN105573665A (zh) 数据存储装置和方法及包括该装置的数据处理系统
EP3647930A1 (en) Method of operating storage device, storage device performing the same and method of operating storage system using the same
CN101038555A (zh) 用于对系统bios本地及远程更新及配置的独立于芯片组的方法
CN103493011A (zh) 与库操作系统的应用兼容性
US9766954B2 (en) Configuring resources used by a graphics processing unit
CN110837385A (zh) 一种基于CANopen协议的DSP应用程序在线升级方法
US20200320019A1 (en) Controller, memory system including the same, and method of operating memory system
CN101283333A (zh) 用于在引导一个分区时维持另一个分区的方法和装置
CN103718159A (zh) 图像处理软件开发方法、图像处理软件开发装置和图像处理软件开发程序
CN101025711B (zh) 控制闪存的设备和方法
US11693569B2 (en) Host performing an embedding operation and computing system including the same
CN103268245A (zh) 一种气象数据快速处理流程化的方法
CN102812437A (zh) 高和低值应用状态

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120229

Termination date: 20171224