写在前面

这是我的BIOS启蒙文章第二篇了,上一篇我谈了谈什么是legacy USB,和大家聊了聊在USB键盘背后的那些不为人知的故事。大家可以去(http://blog.csdn.net/prostar/archive/2009/04/17/4088521.aspx)这里来看看这个文章。现在是第二篇了。今天我打算给大家讲讲什么是Ia32架构具备的系统管理模式(SMM),这是CPU四种运行模式中的一种,而且是最为神秘的运行模式。前段时间,IA32架构闹了个所谓的大BUG(其实不是BUG),就是和这个模式有关。

大家都知道Intel的IA32 CPU的实模式与保护模式了吧。实模式是最简单的运行模式,在这个模式下CPU运行在分段下,并且只能访问1MB的内存。而保护模式下,CPU既支持分页也支持分段。可访问的内存也增大到4GB。这个模式是主要的工作模式。

实模式和保护模式由于用的最多,我们大家也最熟悉,但是其实IA32 CPU还有另外两个很少为人所知的运行模式:系统管理模式(以下简称SMM)以及V86模式。本文主要探讨SMM,对V86的讨论我们放在以后吧。V86模式主要是帮助操作系统在保护模式下继续支持16位的实模式软件。

SMM : 概述

SMM是Intel在386SL之后引入x86体系结构的一种CPU的执行模式。系统管理模式只能通过系统管理中断(System Management Interrupt, SMI)进入,并只能通过执行RSM指令推出。SMM模式对操作系统透明,换句话说,操作系统根本不知道系统何时进入SMM模式,也无法感知SMM模式曾经执行过。为了实现SMM,Intel在其CPU上新增了一个引脚SMI# Pin,当这个引脚上为高电平的时候,CPU会进入该模式。在SMM模式下一切被都屏蔽,包括所有的中断。SMM模式下的执行的程序被称作SMM处理程序,所有的SMM处理程序只能在称作系统管理内存(System Management RAM,SMRAM)的空间内运行。可以通过设置SMBASE的寄存器来设置SMRAM的空间。SMM处理程序只能由系统固件实现。

SMM : 执行环境

SMM的执行环境与实模式与保护模式都不同。SMM模式下系统没有分页与分段支持。系统完全执行在自然环境下。换言之,CPU可以寻址4GB的空间,没有逻辑地址与物理地址的区别。或者说,所有的地址都是物理地址。SMM下可以执行一切特权指令。并且一切内存保护均失效。

SMM : 如何进入?

进入SMM的唯一方法就是通过SMI,也即是系统管理中断(System Management Interrupt)。而触发SMI的唯一方法是将前述的SMI Pin引脚上加一个物理电平。而这个电平是由系统chipset根据不同的物理执行环境(如某些事件到来,某些设备需要特别服务)加到CPU上去的。

SMM :如何退出?

退出SMM的方法也只是一个。那就是执行RSM指令。CPU见到这个指令,就退出SMM。并自动的将CPU设置成进入SMM之前的执行模式。

SMM : 完全透明

SMM的进入与退出对非SMM软件(如操作系统)而言,是完全透明的。操作系统根本不知道什么时候系统会进入SMM,什么时候会退出。对于操作系统而言,SMM从来没有存在过。从某种意义上说,SMM是对系统进行监控的终极方法。那么透明是如何做到的呢?

SMM会在进入之前,由CPU自己主动的将当前的全部寄存器以及其他的任何需要保存的信息(公开的和不公开的全部保存)保存在之前体积的SMRAM的某个地方。然后直接跳转到SMRAM内的某一个入口地址开始执行。而退出的时候,CPU会恢复所有事先保存的信息。然后返回中断的地方继续执行程序。故而被中断的程序根本无法感知。并且SMM中断是如此的霸道,就连正在进行中的I/O操作,如果有SMI到来,那么CPU也必须暂停I/O,转发进入SMM。于是SMM内提供了一个手段,用于探测是否处于一个I/O Trap状态。

SMM : 幽灵搬移

SMM程序可以重新定位SMRAM。换言之,也许每次进入SMM的执行的入口地址都会不一样。这使得跟踪SMM的执行变得异常困难。于是一些被折磨的难受的程序员就给SMM的这个feature起了个有趣的名字:幽灵搬移。

SMM : 固件ONLY

SMM如此强大,可以说是IA32架构内的真正的无上霸主。如果这个特性被恶意代码利用,那么后果将不可想象。微软为了自己的利益,一直反对Intel在自己的CPU内放这么一个玩意。于是Intel规定SMM程序只能由系统固件使用。系统内有个SMM Lock Register,一旦设置成锁定状态,那么任何程序都不可能将自己设置成SMM处理程序了。固件会在每次启动操作系统之前,锁死SMM。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/prostar/archive/2009/05/01/4141567.aspx

阅读全文
类别:Bios 查看评论

转载于:https://www.cnblogs.com/kuwoyidai/archive/2011/02/15/2046245.html

SMM模式--来自CSDN 辛晓晨相关推荐

  1. 来自CSDN的精华网址

    来自CSDN的精华网址,包括:WebForm中DataGrid及其它程序员收藏的精华 自认为以下文章比较经典,希望对初学者有用^_^ 1.DataGrid动态模板列更新数据并且分页的例子 http:/ ...

  2. 成功的背后!(给所有IT人)----转载:来自CSDN第一名博主

    转载:来自CSDN第一名博主:http://blog.csdn.net/phphot/article/details/2187505 放在这里激励你我! 正文: 成功的背后,有着许多不为人知的故事,而 ...

  3. 来自CSDN或其它的精华网址

    来自CSDN的精华网址 1.DataGrid动态模板列更新数据并且分页的例子 http://www.cnblogs.com/lovecherry/archive/2005/03/26/126102.h ...

  4. oracle常用语句大全 来自csdn

    1. Oracle安装完成后的初始口令?  internal/oracle  sys/change_on_install  system/manager  scott/tiger  sysman/oe ...

  5. 来自csdn第一博主:成功的背后(给所有IT人)

    转载来源:https://blog.csdn.net/phphot/article/details/2187505 看完第一博主的自述,内心有一种难以描述的感觉,成功背后皆有不易,自己做不到日夜不停去 ...

  6. 如何保护源代码(来自csdn讨论区)

    如何保护源代码,即防止源代码的扩散,员工的流失不会导致源代码的流失 楼主 signboy (横) 2003-06-17 17:23:04 在 软件工程 / 管理 / 管理版 提问 在一个软件产品的开发 ...

  7. 来自CSDN的js代码大全,害怕忘了(上)

    写道 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.sr ...

  8. 程序猿接私活经验总结,来自csdn论坛语录

    下面为网上摘录,以做笔记: 但是到网上看看,似乎接私活也有非常多不easy,技术问题本身是个因素,还有非常多有技术的人接私活时被骗,或者是合作到最后以失败告终,所以想请有经验的大侠们出来指点一下,接私 ...

  9. 程序员应该具备的素质(来自csdn)

    程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着 ...

最新文章

  1. FastDFS 使用经验分享
  2. JAVA中文支持指南(Vera Yuanti)
  3. 荒岛余生为什么没有打开包裹_您会带到荒岛什么办公桌设置?
  4. 量子物理 詹班 计算机,(电气系计算机系詹班)量子物理作业答案
  5. 接口测试基础——第5篇xlrd模块
  6. 稀疏内存模型sparsemem memory model | 文章
  7. Jafka来源分析——文章
  8. 使用HttpURLConnection+AsyncTask访问webservice接口(返回json字符串)
  9. [BZOJ2753][SCOI2012]滑雪与时间胶囊(特殊的有向树形图)
  10. 51CTO网友感谢信:昨天以940分的成绩顺利通过NE考试 在此特地感谢网工泡泡
  11. js 弹出提示信息,并跳转指定页面代码分享
  12. PS视频教程|photoshop视频教程零基础入门到精通
  13. 网付代理利润我把它分析得透透的
  14. 浅谈微博、微信公众号、今日头条三者的区别
  15. 敏捷迭代管理 --需求变更规范
  16. L2、L3协议开发之以太网交换机基础
  17. Win实用好用软件清单推荐
  18. 我做产品经理这半年来的经验总结(一)
  19. 我的创作纪念日(128天)
  20. 【Coggle 30 Days of ML】汽车领域多语种迁移学习挑战赛(2)

热门文章

  1. 淘宝首页左侧导航栏源代码
  2. 奔驰老款C200语言设置,【图】奔驰C级隐藏功能设定大全
  3. 狭道相逢勇者胜--记IT维护中心足球赛
  4. 点歌系统屏蔽服务器,点歌系统网关服务器
  5. 【论文推荐】 2021-11-10 云间周报 | 十月初六 | 星期三 | 今日宜运动
  6. 非规范商品项是什么?商标注册规范项和非规范项区别?
  7. 大话STM32F103系统架构
  8. Redis HA篇 +集群搭建
  9. Windows 10剪贴板历史记录清理
  10. Typescript面向对象---上篇