IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 操作系统中断 -> 正文阅读

[嵌入式]操作系统中断

中断

中断时提高处理器效率的一种手段,如任务A需要用到打印机,打印的时间相对于cpu来说会很长,如果在打印期间死等打印机太浪费资源,所以出现了中断,cpu会先放弃该任务的执行,然后转去执行其他任务,当打印机打印好后就会发出中断信号给cpu,cpu就暂停当前任务的执行,继续运行任务A。

中断的分类:

程序中断由指令执行的结果产生,如算数溢出、除数为0、试图执行非法指令
时钟中断由处理器内部的计时器产生,运行操作系统以一定的规律执行周期性的任务
I/O中断由I/O控制器产生,发信号通知一个io操作的正常完成或是错误
硬件失效中断如掉电或存储器奇偶校验之类的故障产生
  • 中断(Interruption):也叫外中断,即上面的IO中断和时钟中断,这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。
  • 异常(陷阱):也叫内中断,是由CPU内部事件所引起的中断,例如进程在运算中发生了上溢或者下溢,有如程序出错,如非法指令,地址越界等,即上面的程序中断。若系统发现有陷入事件,CPU也将暂停正在执行的程序,转去执行该陷入事件的处理程序。

中断和陷入的主要区别是信号的来源,看是来自CPU外部,还是CPU内部。

另外还有一种是系统调用。所谓系统调用就是用户在程序中调用操作系统所提供的一些子功能,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/0传输以及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。

有了中断的加入,cpu的指令周期从

?变为了

?多出了一个检查中断的步骤,也增加了消耗,但是对于io的速度和cpu相比,大部分时候还是挺划算的。中断是硬件和软件相互合作才能完成的。

中断步骤

具体的中断处理步骤如下:
?

  1. ?首先某个硬件完成了自主的给CPU发送中断信号
  2. 处理器响应中断前结束当前指令的执行
  3. 处理器发送确认信号,允许该中断的设备取消它的中断信号,否则该信号会一直存在
  4. 保存当前执行程序的信息,要求最少包括程序状态字PSW(包含了当前程序的内存使用信息、条件码和其他诸如允许中断/禁止中断位、内核/用户模式位等信息)和程序计数器PC指针(保存下一条要执行的指令地址),将这些信息压入系统栈
  5. 处理器把响应该中断的中断处理程序入口地址装入程序计数器PC,每类中断可有一个中断处理程序,CPU根据新的PC值开始执行中断处理程序:
  6. 除了PSW和PC已经被压入系统栈外,还有其他的信息也需要保存,如CPU寄存器的一些内容,防止被中断处理程序运行的时候覆盖掉。
  7. 开始处理中断
  8. 中断处理完成后,被保存的寄存器的值恢复到处理器中
  9. 最后从系统栈中恢复PSW和PC,因此下一条要执行的指令就是刚刚被中断的程序

多个中断

假如有多个设备发送中断信号的话,有两种方法:

  • 正在处理一个中断时禁止再发生中断,即开始处理一个中断请求时,设置PSW中的标记为禁止中断状态,其他设备发送的中断信号都不予理睬,但该信号会一直存在,直到当前中断执行完毕后,把标记位设置为允许中断,再去获取到当时的中断信号。该方法比较简单。
  • 嵌套中断:定义中断优先级,允许高优先级的中断打断低优先级的中断的运行

总结

  • 中断是为了实现多道程序并发执行而引入的一种技术。
  • 中断的本质就是发生中断时需要操作系统介入开展管理工作。
  • 发生中断,CPU会立即进入核心态,针对不同的中断信号,采取不同的处理方式。
  • 中断是CPU从用户态进入核心态的唯一途径(如系统调用)
  • 中断分为内中断和外中断。
  • 进程中断时,操作系统会保存CPU的运行环境,如程序状态字(PSW)、程序计数器、各种通用寄存器,这是为了当进程再次运行时可以从中断的状态处继续运行。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:31:24  更:2022-03-03 16:34:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:40:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码