理解linux内核框架--中断嵌套

原创 2018年04月15日 18:42:02

linux2.4.0内核中断嵌套处理,可能性分析如下:

1,同一中断线:是否可嵌套,取决于ack是否发屏蔽中断线信号给硬件?
可嵌套中断:
场景:[cpu0 A进程 i ii] [cpu1 B进程] ,先i中断执行后执行ii。若有iii,同理。
两中断(i及ii)被中断控制器分配到同一核cpu0处理,此时使用的堆栈空间均为A的
i ii中断嵌套处理使用边缘触发方式,即i在可中断环境 handle_IRQ_event中处理未返回,ii中断进入do_IRQ流程,发现此时i未完成(简单这样理解),不做handle_IRQ_event处理即刻返回,多嵌套同理。返回i中断处理时,判断当前中断线是否有pending,因该场景pending者ii,为保证所有中断都得到处理机会,会触发再遍历处理一次,ii得以处理。

场景:[cpu0 A进程 i] [cpu1 B进程 ii]
两中断(i及ii)分别被中断控制器分配到cpu0 cpu1中处理 此时各自使用命中进程的堆栈空间,此时无中断嵌套。

不可嵌套中断:
在进入do_IRQ时便ack屏蔽了该中断线,使得同一中断线上中断无法嵌套。
场景:[cpu0 A进程 i ii] [cpu1 B进程]
严格串行化处理
场景:[cpu0 A进程 i] [cpu1 B进程 ii]
处理等同于可嵌套中断的场景:[cpu0 A进程 i] [cpu1 B进程 ii]

2,混合中断线:不同中断线定是可以中断嵌套的
若同线可嵌套:
场景:[cpu0 A进程 i ii iii] [cpu1 B进程],其中:i ii iii同线。
i 先中断 后ii中断嵌套 又i与iii中断嵌套
iii可边缘触发对本端cpu0 ii(未处理直接返回了)的处理。
场景:[cpu0 A进程 i ii iii] [cpu1 B进程 iiii],其中:i ii iiii同线。
i 先中断 后ii中断嵌套 又i与iii中断嵌套
iiii可边缘触发对对端cpu0 ii(未处理直接返回了)的处理。

若同线不可嵌套:
场景:[cpu0 A进程 i ii iii] [cpu1 B进程 iiii],其中:i iii iiii同线
i 先中断 后ii中断嵌套 又ii与iii中断嵌套 iiii最后中断。
iiii可边缘触发对iii(未处理直接返回了)的处理。
无所谓对本端cpu中断的边缘触发

linux2.4.0 vs linux2.6.37(其实2.6以上基本相同了)
1>、后者只允许不同线的嵌套中断,在检测到来自同一中断线的中断时会发送ack屏蔽该中断线,前者若不管是相同中断线还是不同中断线都允许中断嵌套。引出问题:若存在256中断号,则对于后者来说,极端情况也就被中断嵌套255次,而前者会是无限次。
2>、前者中断处理占用命中进程的堆栈空间,后者在中断处理时有堆栈环境的切换动作,有独立的中断栈。问题:中断多时前者会出现堆栈溢出。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Je930502/article/details/79951738

Linux内核中断嵌套

假设读者对Linux内核的中断一定的理解,下面来介绍Linux内种的中断嵌套和抢占规则。 1 中断运行过程中的开关情况 在进入硬中断的时候,CPU会自动将硬中断功能关闭;进入软件中断的时候不会关闭...
  • u012603457
  • u012603457
  • 2016-10-30 14:47:36
  • 1947

理解硬(软)中断的嵌套

中断基础 关于中断的概念,很多人还停留在书本上,我们结合实际的操作系统来理解。先给出硬中断和软中断的介绍: 硬中断:外设处理过程中产生的,通过硬件控制器通知cpu自己的状态变化。 ...
  • gudongxian
  • gudongxian
  • 2015-05-16 21:22:23
  • 953

深入理解Linux内核day03--中断和异常

中断和异常     中断(interrupt)通常被定义为一个事件,该事件改编处理器执行的指令顺序。这样的事件与CPU芯片内部外部硬件电路产生电信号相对应。     中断通常分为同步中断(sync...
  • dsf031411
  • dsf031411
  • 2016-04-28 16:09:30
  • 3940

深入理解Linux内核架构

2.1 进程优先级 粗略分,实时进程和非实时进程。 实时进程:(1)硬实时进程,必须在可保证的时间范围内得到处理。 (2)软实时,仍然需要尽快处理,晚一点...
  • ljf_forlinux
  • ljf_forlinux
  • 2016-12-30 21:44:36
  • 2332

细说Linux内核中断架构

中断和异常 一、什么是中断?         中断通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。         中断通常分为同步...
  • kerneltea
  • kerneltea
  • 2012-06-14 17:59:28
  • 2494

《深入理解Linux内核》学习笔记——中断和异常

Declaration:Linux Kernel based x86 Platform 1.      异常(也称同步中断)分类: a)        处理器探测异常,根据eip寄存器值可进一步...
  • u013141572
  • u013141572
  • 2015-11-04 16:08:13
  • 196

深入理解linux内核——中断和异常(上)

1.      中断interrupt是一个会改变处理器执行顺序的事件,这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。 2.      中断又可以分为同步synchronous中断和异步a...
  • HelloNerd
  • HelloNerd
  • 2017-08-01 00:01:17
  • 249

读书笔记--深入理解Linux内核-第七章 进程调度

 深入理解Linux内核-第七章 进程调度Sailor_forever分析整理 sailing_9803@163.com 转载请注明http://blog.csdn.net/sailor_8318/a...
  • sailor_8318
  • sailor_8318
  • 2008-05-20 01:04:00
  • 8123

深入理解linux内核架构(内存管理)

1:在内核使用高端内存页之前,必须使用下文讨论的kmap和kunmap函数将其映射到内存虚拟地址空间中。 2:UMA计算机(一致内存访问,uniform memory access)将可用内存以连续方...
  • xueli1991
  • xueli1991
  • 2017-02-20 15:43:52
  • 1862

【Linux OS】(实验)重建Linux内核和添加系统调用

一、实验背景         操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现...
  • ly01kongjian
  • ly01kongjian
  • 2013-05-19 19:28:59
  • 2038
收藏助手
不良信息举报
您举报文章:理解linux内核框架--中断嵌套
举报原因:
原因补充:

(最多只允许输入30个字)