UEFI SMM

SMM 介绍

SMM (System Management Mode) 是Intel IA32/Intel64 CPU 架构的一种特殊模式。CPU

通过SMI(System Management Interrupt) 进入SMM 模式。然后,CPU 保存当前环境,跳转到

预先定义的地址,执行完后通过RSM指令返回。目前主流的的操作系统和Intel CPU 都支持SMM.

     BIOS 对于SMM 的支持包括以下几个方面:

  1.      初始化SMRAM
  2.      提供平台相关的SMM 回调函数

SMM 的运行分为两阶段:

1 SMRAM 初始化  在DXE 阶段, SMM IPL/Core 驱动负责打开SMRAM, 创建SMRAM 的

Memory Map, 为其他SMM 驱动提供必要的服务,最后关闭并锁住SMRAM.

 2 SMI 管理  当系统SMI 产生,SMM CPU/Core 驱动负责建立SMI 执行环境,找出SMI

    Handler, 并且调用 。

 

SmmIpl

SmmIpl (smm Initialization Program Loader), 顾名思义,是指把SmmCore 加载到smram 的一

段程序。流程如下:

 

SMM IPL 基本会使用由Memory Controller 提供的SMM_ACCESS

 

 

 

SmmIplReadyToLocakEventNotify 函数

smmIplReadyToLockEventNotify 是由platform 负责通知SmmIpl 来关闭并锁住SMRAM.

SmmIpl 再通知SmmCore, 来关闭SmmCore 的部分服务,例如Dispatch SMM 驱动。

 

 

检查是否已经Lock. 如果是的话,直接返回。

检查是否由DxesmmReadyToLockProtocol 触发的ReadyToLock 事件,如果不是的话,

则表明是ReadytoBoot 事件产生,打印警告信息。

锁住Smram.

关闭所有需要关闭的事件。

通知smmCore 产生了ReadyToLock 事件。

设置标志位表示SmmLock 已经发生。

<think>嗯...用户这次想了解"SMM框架"的使用指南或介绍。看起来用户是刚接触这个框架,需要基础指导。从用户提问方式来看,ta可能混淆了术语。当前主流的Java框架组合是SSM(Spring+SpringMVC+MyBatis),而"SMM"更可能是拼写错误。不过为防万一,还是需要确认是否存在名为SMM的独立框架。让我先检查引用内容:引用[2]提到了"Smmalloc-CSharp",这是个C#内存分配库,和Java框架无关;其他引用涉及SSM整合/ES/BISystem等,但没提SMM框架。结合主流技术生态,初步判断用户实际需要SSM框架信息。考虑到用户可能是初学者,回复应该:1️⃣先澄清术语差异,避免用户走弯路2️⃣提供SSM整合的完整路线图3️⃣重点说明SpringMVC的作用(因为名称最接近SMM)4️⃣推荐含代码示例的学习资源用户情绪似乎比较急切(使用两个"或"连接需求),所以回复要简明直接。上次对话涉及快速排序的代码示例,这次继续采用"基础原理+示例代码"的模式可能比较友好。技术细节上需要强调:-必须基于Maven构建(引用[1]的工程结构要求)-MyBatis的SQL管理方式(初学者常卡在XML配置)-分层架构图示比文字描述更直观-补充国产框架组合选项(如SpringBoot替代方案)</think> 以下是关于**SMM框架**的详细介绍和使用指南。需要说明的是,主流开发中通常指 **SSM框架**(Spring+SpringMVC+MyBatis),若您确指独立的"SMM框架",可能是对术语的误写(或指特定场景的自研框架),以下按主流的**SSM框架**整理关键信息: --- ### 一、SSM框架核心组件 1. **Spring** - **作用**: 轻量级控制反转(IoC)容器,管理Bean生命周期,支持AOP面向切面编程[^5]。 - **关键配置**: ```properties # application.properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 ``` 2. **SpringMVC** - **作用**: Web层框架,处理HTTP请求,实现MVC分层架构[^1]。 - **工作流程**: ```mermaid graph LR A[客户端请求] --> B(DispatcherServlet) B --> C{HandlerMapping} C --> D[Controller] D --> E[ModelAndView] E --> F{ViewResolver} F --> G[视图渲染] ``` 3. **MyBatis** - **作用**: ORM框架,将SQL映射为Java对象,简化数据库操作[^1]。 - **示例Mapper**: ```xml <select id="selectUser" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> ``` --- ### 二、SSM整合指南(Maven项目) #### 步骤1:创建项目结构 ```bash src ├── main │ ├── java # Java源码 │ ├── resources # 配置文件 │ │ ├── spring/applicationContext.xml # Spring配置 │ │ ├── mybatis/mybatis-config.xml # MyBatis配置 │ │ └── mapper/*.xml # SQL映射文件 │ └── webapp # Web资源 ``` #### 步骤2:关键依赖(pom.xml) ```xml <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.22</version> </dependency> <!-- MyBatis整合Spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.7</version> </dependency> <!-- JDBC驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> </dependencies> ``` #### 步骤3:配置DispatcherServlet(web.xml) ```xml <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` --- ### 三、常见问题解答 1. **如何解决事务管理?** - 在Spring配置中声明式事务: ```xml <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:annotation-driven/> ``` 2. **MyBatis SQL报错如何处理?** - 检查SQL映射文件路径是否在`mybatis-config.xml`中正确配置: ```xml <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> ``` --- ### 四、替代方案 & 扩展 - **简化方案**:用 **Spring Boot** 代替传统SSM整合(自动配置,减少XML)[^5]。 - **数据可视化**:整合BI工具(如Tableau、帆软)展示业务数据[^3]。 - **高性能场景**:结合Elasticsearch实现搜索功能(通过REST客户端操作)[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值