Linux内核设计与实现——7 中断与中断处理(4)

原创 2012年03月23日 20:08:05

4.上半部与下半部

1)为什么要分上下半部

速度与功能的博弈。上文已经提到中断处理程序是打断了别人的运行,所以要尽可能快地运行完毕。但是又想尽量完成强大的功能。这是两个互相矛盾的目标。解决办法就是把中断处理程序分成以下两部分

2

上半部:有严格的时间限制,做一些必须要马上进行的工作,例如对中断的应答和硬件复位

下半部:允许稍后完成,做一些不太紧急的工作,如数据的加工

这样,中断处理程序处理上半部,下半部再稍后空闲的时候再来执行,就能在速度与功能上达到一个平衡

3)举例:网卡的中断处理

网卡有数据到达,发一个中断给内核

内核调用中断处理程序处理以下工作:通知硬件、拷贝数据到内存。这些工作都是紧急的,以为网卡的缓存通常比较小,如果不及时拷出,缓存满后将造成丢包。而且必须让网卡复位,立即准备接收新数据。

而下半部的工作:对内存中数据进行加工,并发送给相应的进程。这是不太紧急的工作,可以稍后进行。

linux内核架构-中断处理机制

本文对中断系统进行了全面的分析与探讨,主要包括中断控制器、中断分类、中断亲和力、中断线程化与 SMP 中的中断迁徙等。首先对中断工作原理进行了简要分析,接着详细探讨了中断亲和力的实现原理,最后对中断线...
  • shenwanjiang111
  • shenwanjiang111
  • 2015年08月26日 13:18
  • 1073

把握linux内核设计思想(二):硬中断及中断处理

操作系统负责管理硬件设备,为了使系统和硬件设备的协同工作不降低机器性能,系统和硬件的通信使用中断的机制,也就是让硬件在需要的时候向内核发出信号,这样使得内核不用去轮询设备而导致做很多无用功。     ...
  • gentleliu
  • gentleliu
  • 2015年07月28日 23:25
  • 1616

linux内核中断实现机制

一、什么是中断 中断分两种: 1)中断,又叫外部中断或异步中断,它的产生是由于外设向处理器发出中断请求。其中外部中断也有两种,这是由配置寄存器设定的:普通中断请求(IRQ)和快...
  • hunanchenxingyu
  • hunanchenxingyu
  • 2013年01月13日 22:37
  • 2957

Linux内核中断处理体系分析

前一篇博文中:linux内核初始化阶段通过early_trap_init()函数完成了把异常向量拷贝到0xFFFF0000开始的地方,这些异常向量大部分指向通过vector_stub宏定义的那段代码,...
  • u011549260
  • u011549260
  • 2015年03月19日 00:18
  • 1077

Linux内核的中断机制分析

http://os.chinaunix.net/a2008/0910/985/000000985664.shtml     Copyright © 2003 by 詹荣开     E-...
  • larryliuqing
  • larryliuqing
  • 2014年07月24日 15:38
  • 536

把握linux内核设计思想(六):内核时钟中断

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】         内核中很多函数是基于时间驱动的,其中有些函数需要周期或定期执行...
  • gentleliu
  • gentleliu
  • 2015年07月29日 20:03
  • 2560

Linux内核中断及定时器实现

转自:http://blog.chinaunix.net/uid-20355640-id-1963771.html 内核中断及定时器实现分析 定时器是Linux提供的一种定时服...
  • lijiatong1005
  • lijiatong1005
  • 2013年09月02日 22:48
  • 923

Linux内核分析5:分析system_call中断处理过程

席金玉+ 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程 一、系统调用步骤 程序调用库的封装函数;调用软中断int $0x80进入内核;在内核中首先执行system_call()函...
  • xuyuqingfeng953
  • xuyuqingfeng953
  • 2016年03月23日 19:34
  • 504

linux内核中断分析

知识要点 一、struct irq_chip、struct irq_desc[]、struct irqaction三者之间的关系 二、Linux内核中中断的初始化流程、中断的注册流程、中断的执行流程 ...
  • fridayLL
  • fridayLL
  • 2016年07月07日 21:31
  • 696

Linux内核——中断机制

中断机制 为什么需要中断? 如果让内核定期对设备进行轮询,以便处理设备,那会做很多无用功,因为外设的处理速度一般慢于CPU,而CPU不能一直等待外部事件。所以能让设备在需要内核时主动通知内核,会是一个...
  • walkerkalr
  • walkerkalr
  • 2014年08月06日 13:57
  • 1502
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux内核设计与实现——7 中断与中断处理(4)
举报原因:
原因补充:

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