中断是一种当今很重要的硬件与cpu通信的方式,主板上集成很多硬件,那么就可以认为会有很多中断,但是cpu的数目往往要少得多,那么肯定会有多个硬件中断竞争一个cpu的情况,任何系统(包括自然界)都不能乱套,肯定会有一定的机制防止事情变得不可控制,这种机制的结果就是使一切变得有序化,出现多竞争一的情况时,最常用的方法就是排队,而排队有很多策略,比如先来先服务,优先级队列,加权优先级队列,多级队列等等。这是硬件方面的情况,那么cpu方 面呢,cpu的中断引脚往往只有一个,这就是说,排队必须在中断到达cpu前进行,所以中断控制器的作用就体现出来了,有了中断控制器,我们就可以把控制 器后面的硬件当成黑盒子了,只要管控制器里面会接受很多中断并且仲裁它们就可以了。
现在中断控制器和cpu都讨论了,那么终极控制者--操作系统还没有登场呢,最终需要os来控制着一切,就是说,控制器和cpu提供机制,而os提供策 略,中断优先级是中断控制器的机制,操作系统可以更改,而中断线程化是os为了更好的控制中断而实现的一种策略,不同os控制中断的方式不同,而中断线程 化只是其中的一种。
像unix比如solaris都是中断线程化的,线程拥有自己的优先级,优先级高的中断线程当然可以抢占优先级低的中断线程(如果内核可抢占的话),但是由于中断是cpu外界的事件报告,所以它的到来不受cpu控制,那么中断发生的那一瞬间,中断并不是线程化的,而是也像linux那样进入中断处理,然后 将其对应的中断线程唤醒,此线程就开始参与调度参与抢占了。
那么中断控制器处排队的中断优先级和中断线程的线程优先级有何关系呢?按照道理来说就是一个线性正比关系,事实上也是这样,每个中断控制器都实现了中断优先级管理,大部分是通过寄存器实现的,比如,x86芯片组的tpr寄存器,sun sparc也有类似的机制,比如通过pil。
ia架构的tpr寄存器可以将所有低优先级的中断屏蔽掉,并且可以限制嵌套次数。但是在linux中并没有用到这里的tpr,它将中断一视同仁,不区分由 县级,用最短的时间处理上半部,然后在下半部处理耗时任务,这一方面是效率需要(该来的就让它来,阻止并不是好事!),二来是为了移植性,windows 只在x86,soaris只在sparc和x86,这些平台都实现了硬件的中断优先级概念,而linux基于多平台。引用 :
在上半部没有实现中断优先级正是因为linux的中断处理是分上下部分的。如果把中断处理放在一起,恰恰需要实现中断优先级。
试想一下,一个高优先级中断还没处理完,就被低优先级中断打断了,而低优先级中断频繁发生,会导致高优先级中断得不到处理,不正需要屏蔽低优先级中断吗?
而linux中断分两部分,所以高优先级中断不怕被打断,因为低优先级中断的上半部处理会马上完成。注意,在中断嵌套的时候linux只处理中断的上半部哦,在进行下半部之前有个判断如下:

QUOTE:

if (!in_interrupt() && local_softirq_pending())
  invoke_softirq();
//引用完了
ipl是solaris里面的一个抽象概念,对应中断线程优先级,irql是windows里的一个同样意义的抽象概念,它们都实现了低优先中断屏蔽以的 作用,不同的是solaris中断是线程化的,而windows是在任意上下文的,后者可能在唤醒中断线程后马上就可以恢复ipl,而前者必须执行完上半部后才可;linux并没有用这些繁琐的东西,它直接允许中断嵌套,不屏蔽任何中断,可谓大气~~
必须理解两个概念,中断响应和中断执行,前者影响到吞吐,后者受os机制(调度,softirq...)影响,中断只要被响应,至于怎么执行就看我的了,linux正是这么做的,它百分百响应任何中断,所以效率高。在中断线程实现中,有两种方法,一个是预先为每个中断设置线程,二是设置线程池。中断线程化有个很大的优势就是实时化,因为实时线程可以将优先级调到比中断线程还高(windows似乎做不到,因为比硬件中断还高的irql会受到很多限制, 比如,分页内存的访问,调度,睡眠等等)

中断优先级和中断线程优先级相关推荐

  1. java线程——中断线程+线程状态+线程属性(优先级)

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java线程--中断线程+线程状态+线程属性(优先级) 的相关知识: [1]中断线程 1.1 ...

  2. Java 线程实例二(终止线程、生产者/消费者问题、获取线程状态、获取所有线程、查看线程优先级、中断线程)

    终止线程 Java中原来在Thread中提供了stop()方法来终止线程,但这个方法是不安全的,所以一般不建议使用. 本文向大家介绍使用interrupt方法中断线程. 使用interrupt方法来终 ...

  3. 【多线程】线程的引入,创建线程的方式,设置线程名字、获取名字,线程优先级priority,加入休眠的方法,,后台线程,礼让线程,Join,中断线程,某电影院,共有100张票线程流程图,3售票窗口,

    多线程 1.线程的引入 进程: 正在运行的程序,是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和资源. 线程: 是进程的单个顺序控制流,或者说就是一个单独执行的路径 一个进程如果只 ...

  4. [改善Java代码]线程优先级只使用三个等级

    线程的优先级(priority)决定了线程获得CPU运行的机会,优先级越高获得的运行机会越大,优先级越低获得的机会越小.Java的线程有10个级别(准确的说是11个级别,级别为0的线程是JVM,应用程 ...

  5. Windows进程与线程学习笔记(九)—— 线程优先级/进程挂靠/跨进程读写

    Windows进程与线程学习笔记(九)-- 线程优先级/进程挂靠/跨进程读写 要点回顾 线程优先级 调度链表 分析 KiFindReadyThread 分析 KiSwapThread 总结 进程挂靠 ...

  6. python 测试 多线程 _thread和threading模块 线程同步,线程优先级队列

    文章目录 python 多线程简介 Python中使用线程的两种方式 1.函数式 示例 2.线程模块 示例 线程同步 示例 线程优先级队列( Queue)[暂时没用到,没仔细看] 示例 其他 thre ...

  7. Windows via C/C++ 学习(15)线程调度、线程优先级和亲缘性

    每一个线程在它的线程内核对象中有一个上下文结构,反映了线程最后一次执行的 CPU 寄存器状态,每隔大约 20ms(可以使用 GetSystemTimeAdjustment 获得,我测得这个间隔大约为 ...

  8. Linux中断线程化的优势,记一个实时Linux的中断线程化问题

    背景 有一个项目对实时性要求比较高,于是在linux内核上打了RT_PREEMPT补丁. 最终碰到的一个问题是,芯片本身性能不强,CPU资源不足,急需优化. 初步分析 看了下cpu占用率,除了主应用之 ...

  9. [IC]浅谈嵌入式MCU软件开发之中断优先级与中断嵌套

    转自:https://mp.weixin.qq.com/s?__biz=MzI0MDk0ODcxMw==&mid=2247483680&idx=1&sn=c5fd069ab3f ...

最新文章

  1. 微信小程序客服实现自动回复图文消息链接,点击去关注公众号
  2. TestLink1.9.3测试用例:Excel转换XML工具一
  3. R语言ggplot2可视化:将条形图(bar plot)和线图(line plot)组合在一起并使用双Y轴(double y axis)进行可视化、其中一个Y轴显示为百分比
  4. 环境变量、用户变量、系统变量
  5. linux 环境 安装jdk tomcat mysql git
  6. JVM实战与原理---字节码执行引擎
  7. 这是一个无效的源路径
  8. linux 下的gettimeofday 函数在windows上的替换方案
  9. Hibernate访问数据库,HibernateTemplate操作数据库,实现增删改查
  10. RabbitMQ——work queue
  11. gentoo/funtoo 环境配置使用 valgrind
  12. Python + Appium 环境搭建
  13. java阶段测试A卷含答案
  14. python慕课编程答案_中国大学慕课Python编程基础课后答案
  15. word添加引用及自动更新的方法
  16. 什么是数据分层,数据分层的作用!
  17. AMD Ryzen 5 2600X 微星B450M 迫击炮 技嘉GTX10606G成功安装黑苹果Mac OS High Sierra 10.13.16全记录
  18. Android手机屏幕变化监听
  19. Elasticsearch _search查询参数及过滤
  20. Spring Boot 自动装配的原理

热门文章

  1. 关于BatchNorm的理解与讨论
  2. faceswap的正确安装步骤
  3. Jabber介绍(补充)
  4. weblogic 启动问题
  5. springboot使用Cassandra组合查询数据
  6. 基于RTSP视频流的Java后台服务端虹软人脸识别
  7. <汇编>七种寻址方式
  8. Mac版excel如何快速进行数据拆分?
  9. 国产化机器视觉嵌入式主板RK3399
  10. WuThreat身份安全云-TVD每日漏洞情报-2023-01-31