33
背景
我们知道使用0x10号中断,可以在屏幕上打印一个字符。
问题
系统中的 中断 究竟是什么?
生活中的例子
来看一个生活中例子:
小狄的工作方式
- 在处理紧急事务的时候,不回应同事的技术求助。
- 老板的召唤必须回应,不能耽搁。
- 处理完老板的召唤后,继续处理之前的紧急事务。
- 同事的技术求助继续不回应
中断的概念和意义
处理器与外设的拓扑结构
中断与外设
- 中断是一种处理器与外设进行通信的机制。
- 用于 “通知”处理器外部有 “重要事情”发生
- 一般情况下,中断需要被处理器响应
本质
操作系统是中断驱动的死循环。
处理器、中断、操作系统内核之间的关系。
中断的分类
- 外部中断:由外部设备发出来的中断,比如:网卡、键盘、鼠标等。这些外部设备向处理器发出来的中断,都叫做外部中断。
- 内部中断:由处理器自己内部发出来的中断。当然这些中断由代码产生的,所以说 也叫做软中段。异常:处理器是逐条逐条指令执行的,这个时候碰到了一个非法不合理的指令码,这个时候处理器知道怎么样去执行吗?当然不知道怎么去执行,所以处理器就报了一个异常。
处理器的外部中断
处理器的内部中断
问题
处理器接受到中断请求之后,如何具体的对中断进行处理?就是中断服务程序(Interrupt Service Routine)
中断服务程序(Interrupt Service Routine)
中断处理流程
Linux中断处理方式
思考
中断与对应的服务程序间如何建立关联?在代码层面如何进行转移?
实模式下的中断处理
-使用中断向量表映射不同中断与中断服务程序
-中断向量表(Interrupt Vector Table)
起始于物理地址0,长度为 1KB
每个单元4字节,连续256个单元
每个单元存放一个中断服务程序的入口地址
中断向量表就是一个指针数组,这个数组里面存放的是:中断程序的入口地址。
中断向量表(IVT)
中断响应与处理
- 产生中断,外部设备向CPU发送一个中断,通过 INTR引脚,向处理器发送一个中断请求。
- 处理器通过 INTA 这个引脚 去响应这个中断信号。
- 外部设备将 中断向量 TYPE 发送给处理器。
- 处理器有了中断向量 TYPE,那么就去 查找中断向量表 IVT
- 在中断向量表中,就可以查找到 对应的中断服务程序的地址。
- 有了中断服务程序的地址,那么直接 CALL就行
思考?
实模式下的中断向量表(IVT) 和 中断服务程序(ISR) 需要操作系统内核来建立吗?
在实模式下,中断向量表(IVT) 和 中断服务程序(ISR) 并不是由操作系统内核来建立的。
实模式下的中断处理
计算机上电
BIOS做的事情
保护模式下的中断处理
中断门描述符(Interrupt Gate)的定义
中断描述符表(IDT)
保护模式下的中断处理
注意事项
思考
不同外设如何向处理器发送中断信号?当多个外设同时产生中断时,如何进行处理?
中断代理-8259A
想象中的连接方式
中断处理器的代理(8259A)
8259A是专门为处理器设计的中断管理芯片
8259A芯片的内部结构
中断响应流程
8259A工作方式
8259A的数据连接方式
中断优先方式
中断嵌套方式
中断屏蔽方式
中断结束方式
8259A控制编程
8259A够用吗?
问题:如何具体的设置和控制 8259A ?
ICW1:初始化8259A连接方式和中断触发方式
ICW2:设置起始中断向量(IRQ0 对应的中断向量)
ICW3:指定主从 8259A 的级联引脚
ICW4:初始化 8259A 连接方式 和 中断触发方式
实例分析
发布者:admin,转转请注明出处:http://www.yc00.com/web/1701550940a1114082.html
评论列表(0条)