《linux协议栈源码分析》读书报告

《linux协议栈源码分析》读书报告

ID:26069149

大小:102.50 KB

页数:14页

时间:2018-11-24

《linux协议栈源码分析》读书报告_第1页
《linux协议栈源码分析》读书报告_第2页
《linux协议栈源码分析》读书报告_第3页
《linux协议栈源码分析》读书报告_第4页
《linux协议栈源码分析》读书报告_第5页
资源描述:

《《linux协议栈源码分析》读书报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、读书报告题目《Linux协议栈源码分析》-13-/13一、介绍-2-1.1、中断模型-2-1.1.1、软中断-2-1.1.2、硬中断-2-1.2、硬中断和软中断的区别-2-二、中断处理-3-2.1、中断线-3-2.1.1、中断线分配方式-3-2.1.2、特性-3-2.2、硬中断处理-4-2.2.1、硬中断的开关-4-2.2.2、注册软中断处理函数-4-2.3、软中断处理-5-2.3.1、软中断的开关-5-2.3.2、注册软中断处理函数-5-2.3.3、待处理的软中断检查和执行-6-2.4、软中断处理和硬中断

2、处理区别-6-2.5、关于中断上下文的一些宏-6-三、中断处理中数据结构-6-3.1、中断描述符-6-3.2、中断描述符表和中断描述符数组-9-3.3、中断控制器描述符(PIC、APIC)-10-3.4、中断服务例程(ISR)-12-四、总结-13--13-/13一、介绍1.1、中断模型Linux支持CPU的外部硬件中断和内部中断。不管是内部还是外部中断,系统都会根据接收到的中断信息,查询idt表。idt表依照中断源的位置按序组成,并对应中断服务程序(以及异常处理程序)的入口地址。Linux系统在初始化页式

3、虚存管理的初始化以后,便调用trap_init和init_IRQ两个函数进行中断机制的初始化。1.1.1、软中断内部中断包含系统调用陷入和异常。(1)系统调入陷入系统调用就是软件有计划地调用CPU提供的特殊指令,触发CPU内部产生一个中断,于是完成一次核内核外运行空间的切换。(2)异常异常就是软件无意的执行了一个非法指令(比如除0)从而造成CPU内部引发一次中断。 1.1.2、硬中断外部中断特指外部设备发出的中断信号。但这几种中断的CPU处理过程基本相同,即:在执行完当前指令后,或在执行当前指令期间,根据中

4、断源所提供的“中断向量”,在内存中找到相应的ISR(中断服务例程)然后调用之。 1.2、硬中断和软中断的区别(1)软中断是执行中断指令产生的,而硬中断是由外设引发的。(2)硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。(3)硬中断是可屏蔽的,软中断不可屏蔽。(4)硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。(5)软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。 -13-/13二、中断处理2.1、中断线  每个能

5、够产生中断的设备或者模块都会在内核中注册一个中断服务例程(ISR),当产生中断时,中断处理程序会被执行,在中断处理程序中,首先会保存中断向量号和上下文,之后执行中断线对应的中断服务例程。对于CPU来说,中断线是非常宝贵的资源,而由于计算机的发展,外部设备数量和种类越来越多,导致了中断线资源不足的情况,linux为了应对这种情况,实现了两种中断线分配方式,分别是:共享中断线,中断线动态分配。2.1.1、中断线分配方式(1)共享中断线  多个设备共用一条中断线,当此条中断线发生中断时,因为不可能预先知道哪个特定

6、的设备产生了中断,因此,这条中断线上的每个中断服务例程都会被执行,以验证是哪个设备产生的中断(一般的,设备产生中断时,会标记自己的状态寄存器,中断服务例程通过检查每个设备的状态寄存器来查找产生中断的设备),因此共享中断线的分配方式是比较常见的。(2)中断线动态分配  一条中断线在可能使用的时刻才与一个设备驱动程序关联起来,这样一来,即使几个硬件设备并不共享中断线,同一个中断向量也可以由这几个设备在不同时刻运行。2.1.2、特性(1)中断处理程序正在运行时,CPU会通知中断控制器屏蔽产生此中断的中断线。此中断

7、线发出的信号被暂时忽略,当中断处理程序结束时恢复此中断线。(2)在中断服务例程的设计中,原则上是立即处理紧急的操作,将非紧急的操作延后处理(交给软中断进行处理)。(3)中断处理程序是运行在中断上下文,但是其是代表进程运行的,因此它所代表的进行必须处于TASK_RUNNING状态,否则可能出现僵死情况,因此在中断处理程序中不能执行任何阻塞过程。-13-/132.2、硬中断处理2.2.1、硬中断的开关简单禁止和激活当前处理器上的本地中断:local_irq_disable();local_irq_enable(

8、);保存本地中断系统状态下的禁止和激活:unsignedlongflags;local_irq_save(flags);local_irq_restore(flags);2.2.2、注册软中断处理函数设备驱动程序要处理硬件中断,必须挂接ISR,则挂接一个ISR可以用这个函数,要注意的是你在挂接ISR之前要正确的初始化你的设备,并且要保证用正确的顺序挂接中断。里面调用 setup_irq 就是把创建的irqacti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。