SMM系列(2)-- SMI中断运行环境

保存现场

在上一节“SMM的基本概念”中已经讲到,在进入SMI中断处理程序之时,会将处理器的状态信息保存到SMRAM中,然后再退出中断处理函数时恢复现场。

运行环境的初始化

在保存完现场后,紧接着就会对寄存器的信息做一些相应的修改,这就是初始化SMI handler的运行环境。

其实主要是设置一些寄存器的初值:

通用寄存器对程序没有什么影响,所以不用做初始化。

EFLAGS初始化为0x2H,即所有的标志清零,bit1恒为1。

EIP为0x8000H, 即CS:[EIP]处刚好为SMI handler的第一条指令。

CR0的PE(保护),EM, TS, PG(分页)初清零。处理器工作于Big-Real-Mode下。这里与Real Mode最大的区别是,其地址偏移可以

到达32位,因此可以访问4GB的内存空间。

CR4被全部清零,全部扩展功能被取消

DR7(Bit10恒为1),禁止断点。

地址模式

刚才讲到,在SMI Handler下,处理器工作于Big-Real-Mode下,PE, PG标志被清除了,线性地址被当作物理地址来对待。

在SMM中,操作数默认的位数是16 bits,因此在实模式下,SMRAM的最大访问空间为1MB,但我们可以通过override prefixes的方式

访问到超过1MB的地址空间。具体解析如下:

在实模式下,段地址寄存器中的值不是用来指向一个段描述符表,而是直接用来参于运算。

比如:CS=0x1000, Offset=0xFFFF, 那么我们实际得到的物理地址是:0x1FFFF。

但是如果: CS=0xFFFF, Offset=0xFFFF,那么我们得到:

(0xFFFF << 4) + 0xFFFF = 0x10FFEF

这个值在实模式下是超过了1MB的,超出的部分被截掉,变成0xFFEF

所以,我们有必要先来了解一下Override Prefix了。

由Intel的spec中我们可以看到Instruction Prefix是可选的。只有操作码部分是必须的。

不同的prefix可以完成不同的附加功能。

比如:

      2EH : CS segment override prefix.
      36H : SS segment override prefix.
      3EH : DS segment override prefix.
      26H : ES segment override prefix.
      64H : FS segment override prefix.
      65H : GS segment override prefix.

其中:

     67H: Address - Size Override Prefix

这个prefix可以用来完成16 bit 和 32 bit 之间的切换。

具体操作时我们可以使用32位寄存器间接寻址来做:



  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: zabbix-nvidia-smi-multi-gpu是一个用于监控多个NVIDIA GPU的Zabbix插件。它通过NVIDIA System Management Interface(nvidia-smi)来获取GPU的相关信息,并将这些信息发送到Zabbix服务器进行监控和分析。 这个插件在多GPU环境中非常有用,特别是在服务器集群或大规模GPU集群中。它可以帮助管理员实时监控每个GPU的使用情况、温度、功耗以及其他性能指标,以便更好地管理和优化GPU集群的资源。 使用zabbix-nvidia-smi-multi-gpu插件,管理员可以轻松配置Zabbix服务器来监控和收集GPU的数据。插件会定期执行nvidia-smi命令以获取GPU的信息,并将这些数据发送到Zabbix服务器上的特定主机。 在Zabbix服务器上,管理员可以设置触发器和报警规则,当GPU的使用率或温度超过设定的阈值时,会触发报警通知。这样管理员就可以及时采取措施来解决GPU过热或过载的问题,确保系统的稳定性和可靠性。 总而言之,zabbix-nvidia-smi-multi-gpu是一个强大的插件,为管理员提供了实时监控和管理多个GPU的功能。通过使用该插件,管理员可以更好地优化GPU集群的性能,确保系统的正常运行。 ### 回答2: zabbix-nvidia-smi-multi-gpu是一个用于监控多个GPU设备的Zabbix插件。在服务器上安装了多个显卡设备,该插件可以帮助我们实时监控各个GPU的性能和使用情况。 该插件基于NVIDIA的SMI(System Management Interface)工具开发,通过查询SMI的API来获取GPU的信息。它可以监测GPU的温度、利用率、电源使用情况、显存使用情况等指标,并将这些信息传递给Zabbix监控系统。 使用zabbix-nvidia-smi-multi-gpu插件,我们可以在Zabbix的监控面板上实时查看多个GPU的状态。我们可以了解每个GPU的温度是否正常,以及其负载情况。如果某个GPU的温度过高或负载过载,我们可以及时采取措施,如调整风扇速度或优化算法,以保证GPU的稳定性和性能。 此外,zabbix-nvidia-smi-multi-gpu还具有告警功能,当GPU的某些参数超过预设的阈值时,它会发出警报通知管理员。这样,我们可以在GPU出现故障或异常情况时快速采取措施,避免系统崩溃或性能下降。 总之,zabbix-nvidia-smi-multi-gpu是一个方便实用的插件,可用于监控多个GPU设备的性能和状态。它可以帮助我们追踪GPU的使用情况,提供有价值的数据,以优化系统性能和提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值