【我所認知的BIOS】—>SMM (SYSTEM MANAGEMENT INTERRUPT )

【我所認知的BIOS—>SMM

System management mode 学习笔记)

By LightSeed

2009-9-11  

1System management mode综述

这篇文章里面我主要是谈谈对IA32的了解,而且也纯粹是笔记而已,没有太多的组织语言。

1.1 什么是SMM

SMM是一种特殊用途的运行模式,他是用来处理影响整个系统功能的模式。影响整个系统功能的东东大致有:电源管理,系统硬件的控制等,或者也可用用这个模式来处理专有OEM designed代码。这种模式的运行只面向系统固件,而不是由软件来申请使用的。SMM的好处有很多后主要有,它提供了一个比较清楚的,容易孤立的处理的环境。这种模式对于系统或应用软件是透明的(我的理解呀,透明就是没有任何影响的意思^^,如果不正确还往高手不吝指教)。

1.2 SMM能够完成的事情

SMM通过SMI而被调用(或者说进入更合适点吧),处理器就会保存处理器的当前状态(处理器的上下文,发觉英文翻译过来真别扭,还是建议大家看E文原版比较好。-_-<),然后切换到SMRAM中这个独立的运行环境中来。当CPU的模式是SMM的时候,CPU去执行SMI handler代码,来完成相应的操作。比如:

①关闭未使用的磁盘驱动器或显示器,执行专有的代码;

②将整个系统进入挂起状态(suspended state)。

③处理DOS下的USB等等相关的东东。

④相关的定时器的刷新(在DOS下有Go Stop grant,的选择它也是通过SMI来计时的。)

⑤等等,,,用SMI来处理的相关操作真是太多了。这里例举不完。

当在SMI处理程序已完成其规定的操作后,它会执行恢复(RSM)指令。这指令会使处理器重新加载处理器之前已经保存了的上下文,切换到之前的保护模式或实模式下,恢复(应该说是进入SMM之前的程序,继续执行此程序)去执行中断应用程序(ISR)或操作系统程序(program)或任务(task)。

1.3 SMM的特点

SMM的以下机制(也许翻译成“特点”更加有味道),使之对于应用程序和操作系统而言都是透明的:

①进入SMM的唯一途径是触发了SMI信号。

②处理器执行SMM代码的时候是在一个单独的地址空间(SMRAM)下完成的,并且这段地址空间在其他模式下是绝对不能被访问的(inaccessible)。

③在进入SMM的时候,处理器保存了中断程序(interrupted program)或者任务(task)的上下文。

④通常由OS来处理的所有中断,在进入SMM后都会被disabled。(当然这里说的是通常,其实在后面我们会进一步探讨,这些中断也是可以打开的,只是要考虑的情况就比较多,比较复杂罢了。)

RSM指令只能在SMM里执行。(有人会问,那如果在其他模式下执行RSM,结果会怎样呢?笔者觉得你可以尝试一下,结果你自然就知道了。^^

SMM是类似于实地址模式中,不存在任何权限级别或地址映射。一个SMM的程序可以处理多达4G内存且可以执行所有I / O和指令。


2SMMSMI

2.1 SYSTEM MANAGEMENT INTERRUPT (SMI)系统管理中断

进入SMM的唯一途径是产生了SMI信号。这个信号会通过处理器的SMI# pin产生,或者直接从APIC bus上收到了SMI信号。SMI是一个不可屏蔽的外部中断,SMI的运作独立于处理器的其他中断,异常处理机制,本地(localAPICSMI的优先级要高于NMI(不可屏蔽中断)和可屏蔽中断。SMM是不可重入的,这就是说,当处理器在SMM里的时候,SMI是被disabled了的。

2.2 SMM和其他模式之间的联系

2.2.1 SMM和其他模式之间的切换

1显示了SMM与其他处理器运行模式(保护模式,实模式和虚拟- 8086)之间的切换过程。SMI信号产生后,不管处理器是实模式,还是保护模式,甚至虚拟8086模式都会导致处理器切换到SMM。执行指令(RSM)后,处理器总是回到进入到SMM模式之前的那个模式。

 

1 处理器各种模式之间的切换示意图

2.2.2 进入SMM

当处理器收到一个SMI信号,它会等待所有指令就绪,同时等待所有保存完成。处理器会保存它的上下文到SMRAM(后面小节会介绍),然后进入SMM的,并开始执行SMI handler(处理程序)。

当处理器在进入SMM的时候,它会通知处理器的外部硬件说:“SMM已经开始了”(或者SMI pin会呈三态。或者SMIACT#会被访问等等,只是各种处理器的表达方式不太一样罢了,但是宗旨都是一样的。这和我们人的语言比较相像,虽然我们和外国都说不同的语言,但是我们的目的都是相互交流。)。

SMI的优先级高于调试异常(debug exceptions)和外部中断。因此,如果NMI,可屏蔽硬件中断,或出现调试指令,和SMI同时向CPU发送信号的时候,只有SMI会被处理。随后CPU不再会响应SMI请求,因为处理器已经在SMM里面了。当处理器已经在SMM里面的时候,第一个SMI请求将会被锁存,并且当处理器执行RSM指令退出SMM后,马上会响应这个SMI(就是再一次进入SMM

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值