第2章 认识CPU-2.3 32位微处理器(3)

  1. 中断处理

80386不但保存了8086/8088的所有中断,还增强了很多功能。我们把外部中断称为"中断",把内部中断称为"异常"。

在实模式下,中断的处理和8086/8088完全一样。但是,在保护模式下,80386不再使用简单的中断向量表来处理中断程序,而是引入了"中断描述符"。

GATE STRUC ;门的数据结构

OFFSETL DW 0 ;32位偏移的低a16位

SELECTOR DW 0 ;选择子

DCOUNT DW 0 ;双字计数字段

GTYPE DB 0 ;类型

OFFSETH DW 0 ;32位偏移的高16位

GETE ENDS

中断的简单处理过程如下:

(1)当中断产生时,通过中断号找到对应的中断描述表。

(2)从中断描述表中取出对应的选择子和偏移。

(3)通过选择子从描述符中取出段的基值加上偏移,形成中断处理程序的位置。

(4)转入中断处理程序。

(5)中断处理程序分为以下两种。

 当程序出现中断时,让中断自己进行处理,程序跳到中断点后继续运行。

 中断程序可能先在环1进行一些处理,然后再跳环2进行一些处理,还可能跳用户层(环3)进行处理。但是Windows中是没有环1、环2的过程的,所以这种情况一般发生在异常中。这时就会变成先在系统级进行处理,当处理完后,再返回到用户级继续处理,当用户级完成后,再返回到中断点。

相关推荐
程序员与背包客_CoderZ13 分钟前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
william_yangshun27 分钟前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
Yyyyyy~2 小时前
【C语言】数据类型和变量【下】
c语言
小雪崩4 小时前
嵌入式学习 day30:minilog
linux·c语言·学习
二级小助手9 小时前
C语言二级操作题高频真题精解与大题代码模板
c语言·计算机二级·二级c语言·c语言操作题·c语言真题·c语言大题
kkkkkkkkkk_Z17 小时前
学嵌入式和C语言编程数据结构|学习日记Day22:栈,二叉树,哈希存储
c语言·数据结构·学习
Navigator_Z17 小时前
LeetCode //C - 1206. Design Skiplist
c语言·算法·leetcode
码行山野赴时序归途17 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
Navigator_Z20 小时前
LeetCode //C - 1209. Remove All Adjacent Duplicates in String II
c语言·算法·leetcode
码行山野赴时序归途1 天前
算法效率的度量(上):时间复杂度中的对数思维
c语言·数据结构·算法