第五章-中断与异常-《Linux操作系统原理与应用》电子教案课件.ppt
《第五章-中断与异常-《Linux操作系统原理与应用》电子教案课件.ppt》由会员分享,可在线阅读,更多相关《第五章-中断与异常-《Linux操作系统原理与应用》电子教案课件.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 中断与异常中断与异常中断的基本知识中断描述符表的初始化中断处理中断的下半部处理机制中断的应用时钟中断中断控制的主要优点:中断控制的主要优点:CPU只有在只有在I/O需要服务时才响应需要服务时才响应外部中断:外部中断:外部设备所发出的外部设备所发出的I/O请求请求内部中断:内部中断:也称之为也称之为“异常异常”,是为解决机器运,是为解决机器运行时所出现的某些随机事件及编程方行时所出现的某些随机事件及编程方便而出现的便而出现的中断掠影中断掠影中断向量中断向量:中断源的编号外设可屏蔽中断:外设可屏蔽中断:屏蔽外部I/O请求 异常及非屏蔽中断异常及非屏蔽中断:CPU内部中断或计算机内部硬
2、件出错引起的异常中断描述符表中断描述符表:描述中断的相关信息中断相关的汇编指令中断相关的汇编指令:中断常识中断常识中断向量中断向量每个中断源都被分配一个8位无符号整数作为类型码,即中断向量中断的种类:中断的种类:中断:外部可屏蔽中断外部非屏蔽中断异常:不使用中断控制器,不能被屏蔽故障陷阱中断向量中断源的类型中断向量中断源的类型 异常就是CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。非屏蔽中断就是计算机内部硬件出错时引起的异常情况 Intel把非屏蔽中断作为一种异常来处理在CPU执行一个异常处理程序时,就不再为其他异常或可屏蔽中断请求服务 异常及非屏蔽中断 中断描述符表(中断描述
3、符表(IDT):即中断向量表,):即中断向量表,每个中断占据一个表项每个中断占据一个表项中断描述符表中断描述符表调用过程指令CALL:CALL 过程名过程名调用中断过程的指令INT INT 中断向量中断向量 中断返回指令IRETIRET 加载中断描述符表的指令LIDT LIDT 48位的位的伪伪描述符描述符 相关汇编指令相关汇编指令 IDT表项的设置通过_set_gaet()函数实现 调用该函数在IDT表中插入一个中断门:set_intr_gate(unsigned int n,void*addr)调用该函数在IDT表中插入一个陷阱门:set_trap_gate(unsigned int n,
4、void*addr)调用该函数在IDT表中插入一个系统门:set_system_gate(unsigned int n,void*addr)IDT表项的设置表项的设置trap_init()函数用于设置中断描述符表开头的19个陷阱门和系统门这些中断向量都是CPU保留用于异常处理的,例:set_trap_gate(0,÷_error);set_trap_gate(1,&debug);set_trap_gate(19,&simd_coprocessor_error);set_system_gate(SYSCALL_VECTOR,&system_call);初始化陷阱门和系统门初始化陷阱门
5、和系统门中断和异常的硬件处理:从硬件的角度看从硬件的角度看CPU如何处理中断和异常如何处理中断和异常中断请求队列的建立:方便外设共享中断线方便外设共享中断线 中断处理程序的执行 从中断返回:调调用用恢恢复复中中断断现现场场的的宏宏RESTORE_ALL,彻底从中断返回彻底从中断返回 中断处理中断处理 确定所发生中断或异常的向量i(在0255之间)通过IDTR寄存器找到IDT表,读取IDT表第i项(或叫第i个门)分“段”级、“门”级两步进行有效性检查 检查是否发生了特权级的变化 中断和异常处理中中断和异常处理中CPUCPU的工作的工作SSESPEFLAGSCSEIPERROR CODEEFLAG
6、SCSEIPERROR CODE堆栈增长方向中断发生前夕的SS:ESP返回地址错误码中断处理程序堆栈由于硬件条件的限制,很多硬件设备共享一条中断线为方便处理,Linux为每条中断线设置了一个中断请求队列中断服务例程与中断处理程序中断线共享的数据结构注册中断服务例程中断请求队列的建立中断请求队列的建立struct irqaction void(*handler)(int,void*,struct pt_regs*);unsigned long flags;unsigned long mask;const char*name;void*dev_id;struct irqaction*next;Ha
7、ndler:指向一个具体I/O设备的中断服务例程Flags:用一组标志描述中断线与I/O设备之间的关系。SA_INTERRUPT:中断处理程序执行时必须禁止中断SA_SHIRQ:允许其它设备共享这条中断线。中断线共享的数据结构中断线共享的数据结构 struct irqaction void(*handler)(int,void*,struct pt_regs*);unsigned long flags;unsigned long mask;const char*name;void*dev_id;struct irqaction*next;SA_SAMPLE_RANDOMSA_SAMPLE_RA
8、NDOM:内核可以用它做随机数产生器。SA_PROBESA_PROBE:内核正在使用这条中断线进行硬件设备探测。NameName:I/O设备名dev_iddev_id:指定I/O设备的主设备号和次设备号(参见第9章)。NextNext:指向irqaction描述符链表的下一个元素 中断线共享的数据结构中断线共享的数据结构 初始化IDT表之后,必须通过 request_irq()函数将相应的中断服务例程挂入中断请求队列,即对其进行注册 在关闭设备时,必须通过调用free_irq()函数释放所申请的中断请求号 注册中断服务例程注册中断服务例程 int request_irq(unsigned in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux操作系统原理与应用 第五 中断 异常 Linux 操作系统 原理 应用 电子 教案 课件
限制150内