• 33:深入浅出x86中断机制


    背景

    我们知道使用0x10号中断,可以在屏幕上打印一个字符。

    问题

    系统中的 中断 究竟是什么?

    生活中的例子

    来看一个生活中例子:

    小狄的工作方式

    1. 在处理紧急事务的时候,不回应同事的技术求助。
    2. 老板的召唤必须回应,不能耽搁。
    3. 处理完老板的召唤后,继续处理之前的紧急事务。
    4. 同事的技术求助继续不回应

    中断的概念和意义

    处理器与外设的拓扑结构

    中断与外设

    1. 中断是一种处理器与外设进行通信的机制。
    2. 用于 “通知”处理器外部有 “重要事情”发生
    3. 一般情况下,中断需要被处理器响应

    本质

    操作系统是中断驱动的死循环。

    处理器、中断、操作系统内核之间的关系。

    中断的分类

    1. 外部中断:由外部设备发出来的中断,比如:网卡、键盘、鼠标等。这些外部设备向处理器发出来的中断,都叫做外部中断。
    2. 内部中断:由处理器自己内部发出来的中断。当然这些中断由代码产生的,所以说 也叫做软中段。异常:处理器是逐条逐条指令执行的,这个时候碰到了一个非法不合理的指令码,这个时候处理器知道怎么样去执行吗?当然不知道怎么去执行,所以处理器就报了一个异常。

    处理器的外部中断

    处理器的内部中断

    问题

    处理器接受到中断请求之后,如何具体的对中断进行处理?就是中断服务程序(Interrupt Service Routine)

    中断服务程序(Interrupt Service Routine)

    中断处理流程

    Linux中断处理方式

    思考

    中断与对应的服务程序间如何建立关联?在代码层面如何进行转移?

    实模式下的中断处理

    -使用中断向量表映射不同中断与中断服务程序

    -中断向量表(Interrupt Vector Table)

            起始于物理地址0,长度为 1KB

            每个单元4字节,连续256个单元

            每个单元存放一个中断服务程序的入口地址

    中断向量表就是一个指针数组,这个数组里面存放的是:中断程序的入口地址。

    中断向量表(IVT)

    中断响应与处理

    1. 产生中断,外部设备向CPU发送一个中断,通过 INTR引脚,向处理器发送一个中断请求。
    2. 处理器通过 INTA 这个引脚 去响应这个中断信号。
    3. 外部设备将 中断向量 TYPE 发送给处理器。
    4. 处理器有了中断向量 TYPE,那么就去 查找中断向量表 IVT
    5. 在中断向量表中,就可以查找到 对应的中断服务程序的地址。
    6. 有了中断服务程序的地址,那么直接 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 连接方式 和 中断触发方式

    实例分析

  • 相关阅读:
    怎样将文字转换成语音?这两种转换方法方便有效
    基于springboot车辆充电桩管理系统springboot000
    anzo capital昂首资本:MT4和MT5 EA测试的主要区别
    Element-ui container常见布局
    深度学习笔记——神经网络(ANN)搭建过程+python代码
    Day38 性能测试理论
    HarmonyOS之 应用程序页面UIAbility
    PaddleOCR 尝试OpenCV-DNN/onnxruntime推理
    iOS AppStore上架流程图文详解
    打游戏的蓝牙耳机推荐哪一款?吃鸡蓝牙游戏耳机推荐
  • 原文地址:https://blog.csdn.net/weixin_42136255/article/details/134091398