当前位置: 首页 > news >正文

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) 需要操作系统内核来建立吗?

http://www.lryc.cn/news/209515.html

相关文章:

  • docker docker-compose安装(centos7)
  • Dockerfile文件详细教程
  • 机器学习-模型评估与选择
  • 分享一下办公自动化常用的思想
  • mac vscode 使用 clangd
  • DSI及DPHY的学习
  • 环形链表(C++解法)
  • 星闪技术 NearLink 一种专门用于短距离数据传输的新型无线通信技术
  • 【Python机器学习】零基础掌握RandomForestRegressor集成学习
  • FreeRTOS深入教程(任务创建的深入和任务调度机制分析)
  • Megatron-LM GPT 源码分析(一) Tensor Parallel分析
  • 分类预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测
  • 婚礼的魅力
  • 【计算机网络笔记】DNS报文格式
  • 10月28日
  • 【性能测试】初识 Jmeter 中的 BeanShell
  • Rust实现基于Tokio的限制内存占用的channel
  • 【C++】C++入门(上)--命名空间 输入输出 缺省参数 函数重载
  • 设计模式:原型模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
  • SpringMVC 资源状态转移RESTful
  • verilog vscode linux
  • Postman日常操作
  • 10月份程序员书单推荐
  • 【ChatGPT系列】ChatGPT:创新工具还是失业威胁?
  • C++ 实现定时器的两种方法(线程定时和时间轮算法修改版)
  • 2023mathorcup大数据竞赛选题建议及思路
  • 部署vuepress项目到githubPage
  • ORACLE表空间说明及操作
  • vue使用Element-plus的Image预览时样式崩乱
  • 安装使用vcpkg的简易教程