- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习英特尔架构。到目前为止,我遇到了几种类型的中断:
最佳答案
一开始,x86 CPU 有 two pins 可用于通知中断的传入:INTR(中断请求)和 NMI(不可屏蔽中断)
虽然图片描绘的是 8086 芯片,但这些引脚一直存在,直到在奔腾时代引入所谓的 LAPIC(更多内容见下文)。
INTR 置位时导致 CPU 从总线读取中断向量(或中断号),中断当前程序并开始执行与刚刚读取的中断向量相关联的中断处理程序。
清除 IF
中的 (E)FLAGS
(中断标志)将屏蔽中断,防止 CPU 中断当前程序。
作为信息说明,在 INTR 和设备之间通常有一个称为 8259A 的芯片,也称为 PIC(可编程中断 Controller )。
NMI 置位时会导致 CPU 中断当前程序并开始执行中断向量 2 的中断处理程序。 简单地说,置位 NMI 会生成中断 2。
清除 IF
不会屏蔽 NMI,但可以在硬件中屏蔽任何进入 NMI 引脚的信号:设置端口 70h 的 MSb would do the trick 。
NMI 背后的想法是将中断分为两类:一类由普通中断组成,一类是由设备在系统正常运行下使用的中断,并且操作系统可能想要屏蔽;由中断造成的另一个类别更严重,操作系统不想屏蔽(过渡状态除外)。
NMI 产生中断 2,因此 NMI 使用 IVT(中断向量表,用于实模式)或 IDT(中断描述符表,用于保护模式及相关)。
在 DOS 时代,中断 2 处理程序由 BIOS 设置,此供应商特定处理程序读取一组专有硬件寄存器,检测到错误(如内存 ECC 错误,由于突然拔出导致的总线错误),并尝试恢复(如重置或 memory scrubbing )。
这种机制在当时是有意义的,因为操作系统与 BIOS 一起工作,能够在不影响 NMI 的情况下执行 cli
是极大的简化。
随着保护模式的出现,为实模式设计的 BIOS 中断 2 处理程序变得毫无用处。
一些内核使用 NMI 来实现内核看门狗定时器,因为即使在 cli
之后也会生成 NMI 中断。
英特尔认识到使用中断来控制固件不再是一种解决方案,因为可以将新的执行模式添加到 CPU,需要一种更透明的解决方案。
所以他们创建了 SMM(系统管理模式)。
与普通中断相反,SMM 是 CPU 的一种特殊模式,引用 Intel 手册 2 的第 34 章:
When SMM is invoked through a system management interrupt (SMI), the processor saves the current state of the processor (the processor’s context), then switches to a separate operating environment defined by a new address space. The system management software executive (SMI handler) starts execution in that environment, and the critical code and data of the SMI handler reside in a physical memory region (SMRAM) within that address space. While in SMM, the processor executes SMI handler code to perform operations such as powering down unused disk drives or monitors, executing proprietary code, or placing the whole system in a suspended state. When the SMI handler has completed its operations, it executes a resume (RSM) instruction.
The only way to enter SMM is by signaling an SMI through the SMI# pin on the processor or through an SMI message received through the APIC bus.
The device can signal an SCI to inform the OS of changes in power status. For example, a device can trigger an interrupt to inform the OS that the battery has reached low power level
1 (Highest) Hardware Reset and Machine Checks
- RESET
- Machine Check
2 Trap on Task Switch
- T flag in TSS is set
3 External Hardware Interventions
- FLUSH
- STOPCLK
- SMI
- INIT
4 Traps on the Previous Instruction
- Breakpoints
- Debug Trap Exceptions (TF flag set or data/I-O breakpoint)
5 Nonmaskable Interrupts (NMI)
6 Maskable Hardware Interrupts
7 Code Breakpoint Fault
8 Faults from Fetching Next Instruction
- Code-Segment Limit Violation
- Code Page Fault
9 Faults from Decoding the Next Instruction
- Instruction length > 15 bytes
- Invalid Opcode
- Coprocessor Not Available
10 (Lowest) Faults on Executing an Instruction
- Overflow
- Bound error
- Invalid TSS
- Segment Not Present
- Stack fault
- General Protection
- Data Page Fault
- Alignment Check
- x87 FPU Floating-point exception
- SIMD floating-point exception
- Virtualization exception
关于x86 - 各种中断的区别 : SCI, SMI、NMI、普通中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583848/
当从数学角度看待机器学习时,我们有成本函数,以减少下次预测的误差,并且我们不断优化特定算法中使用的方程的参数。 我想知道这个优化发生在库的哪里 Sci-kit learn 。没有任何函数可以完成这项工
我正在观看 Google 的机器学习视频,并完成了一个利用数据库存储有关花卉信息的程序。程序成功运行,但我很难理解结果: from scipy.spatial import distance def
我有一个 pandas DataFrame,其索引是唯一的用户标识符、对应于唯一事件的列以及值 1(参加)、0(未参加)或 NaN(未被邀请/不相关)。对于 NaN,矩阵非常稀疏:有数百个事件,大多数
我正在尝试对表单字符串中的数据帧进行编码,但收到此错误: error : '<' not supported between instances of 'str' and 'NoneType'",'o
我正在使用 sci-kit learn 的标签编码类将字符串列表列表编码为整数代码。即 [[a,b,c],[b,c,d],[c,f,z]...,[a,v,z]]] LabelEncoder 已实例化并
public void changeParams(int k, int[] A, String s){ k++; A[0]++; s += "X"; } public void
我正在从事击键生物识别认证项目。它就像是传统的基于密码的身份验证的包装器。如果密码正确,它会检查“打字节奏”,如果与用户的配置文件匹配,则给出肯定的输出。否则,给出负输出。通过映射一些在键入密码时提取
我正在尝试使用 Sci-kit learn python 库 对一堆 url 进行分类,以确定是否存在与用户配置文件匹配的某些关键字。用户有姓名、电子邮件地址……以及分配给他们的 url。我创建了一个
我的数据库中有大约 1600 篇文章,每篇文章都已预先标记为以下类别之一: Technology Science Business World Health Entertainment Sports
我正在学习英特尔架构。到目前为止,我遇到了几种类型的中断: SCI:系统控制中断,硬件用来通知操作系统 ACPI 事件的系统中断。 SCI 是一个事件的、低的、可共享的电平中断。 SMI:系统管理中断
我正在尝试安装 scikit-learn,这样它就无法访问 ATLAS(其他 BLAS 和 LAPACK 库可以)。有没有办法设置安装以便不使用 ATLAS?很抱歉这个基本问题,但我看不出有什么好的方
如何在 sci-kit learn 中使用 GridSearchCV 获得一致的答案?我假设我得到了不同的答案,因为不同的随机数导致每次运行时的折叠都不同,尽管我的理解是下面的代码应该将这个问题解决为
我有一个单独的训练和测试数据(来自加载到不同 pandas 数据帧的不同 CSV),我想使用此训练和测试数据绘制学习曲线,而不是使用交叉验证从训练集本身生成的训练和测试数据(这似乎是learning_
我正在为科学目的开发一个 c++/Qt 软件。虽然 Eigen 库为我提供了许多分析矩阵的操作,但为所有可能的操作串联设计一个图形用户界面仍然是痛苦/困难的。因此,我还在运行时与 Matlab 交换矩
我在最后使用带有 KerasClassfier 的 Sci-kit 学习管道。分类器将加载经过训练的模型进行预测。但是在将分类器添加到管道后(总共 3 个组件),我在调用 pipeline.predi
我使用 sci-kit/python 将数据与 PLS 模型进行了拟合。我注意到 Python 3.7/Sci-kit 0.20.1 的结果大约是 Python 2.7/Sci-kit 0.17 的结
我正在寻找一个计算第n个中心矩的函数(与 scipy.stats.moment 中的相同)对于我的分箱数据(在 numpy.histogram 函数之外)。 # Generate normal dis
我正在使用 printf 函数创建摄氏度到华氏度的转换表。 在我的笔记中,我发现我应该能够在 printf 的 % 之后使用 ^ 标志将输出居中。但是,当我运行该程序时,Netbeans 总是给我一条
我有一个数据集,我试图从 DNA 构成中预测数据条目属于哪种 DNA。例如,字符串 ATTAG...ACGAT 可能会转换为 EI。可能的输出为 EI、IE 或 N。可以进一步研究该数据集 here
我想对 SVC 分类器的概率输出运行网格搜索交叉验证。我特别想最小化负对数可能性。从文档来看, GridSearchCV 似乎调用了它所传递的估计器的 predict() 方法以及 的 predict
我是一名优秀的程序员,十分优秀!