UEFI提供给操作系统的接口包括启动服务(Boot Services, BS)和运行时服务(Runtime Service, RT)以及隐藏在BS之后的丰富的Protocol。BS和RT以表的形式(C语言中的结 构体)存在。UEFI驱动和服务以Protocol的形式通过BS提供给操作系统。
从操作系统加载器(OS Loader)被加载,到OS Loader执行ExitBootServicesQ的这 段时间,是从UEFI环境向操作系统过渡的过程。在这个过程中,OS Loader可以通过BS 和RT使用UEFI提供的服务,将计算机系统资源逐渐转移到自己手中,这个过程称为TSL (Transient System Load) o
当OS Loader完全掌握了计算机系统资源时,BS也就完成了它的使命。OS Loader调用 ExitBootServicesQ结束BS并回收BS占用的资源,之后计算机系统进入UEFI Runtime阶段。 在Runtime阶段只有运行时服务继续为OS提供服务,BS已经从计算机系统中销毁。
在TSL阶段,系统资源通过BS管理,BS提供的服务如下。
1) 事件服务:事件是异步操作的基础。有了事件的支持,才可以在UEFI系统内执行并 发操作。
2) 内存管理:主要提供内存的分配与释放服务,管理系统内存映射。
3) Protocol管理:提供了安装Protocol与卸载Protocol的服务,以及注册Protocol通知 函数(该函数在Protocol安装时调用)的服务。
4) Protocol使用类服务:包括Protocol的打开与关闭,査找支持Protocol的控制器。 例如要读写某个PCI设备的寄存器,可以通过OpenProtocol服务打开这个设备上的Pcilo Protocol,用PciIo->Io.Read。服务可以读取这个设备上的寄存器。
5) 驱动管理:包括用于将驱动安装到控制器的connect服务,以及将驱动从控制器上卸 载的disconnect服务。例如,启动时,如果我们需要网络支持,则可以通过loadimage将驱 动加载到内存,然后通过connect服务将驱动安装到设备。
6) Image管理:此类服务包括加载、卸载、启动和退出UEFI应用程序或驱动。
7) ExitBootServices :用于结束启动服务。
RT提供的服务主要包括如下几个方面。
1 )时间服务:读取/设定系统时间。读取/设定系统从睡眠中唤醒的时间。
2) 读写UEFI系统变量:读取/设置系统变量,例如BootOrder用于指定启动项顺序。 通过这些系统变量可以保存系统配置。
3) 虚拟内存服务:将物理地址转换为虚拟地址。
4) 其他服务:包括重启系统的ResetSystem,获取系统提供的下一个单调单增值等。