您好、欢迎来到现金彩票网!
当前位置:双彩网 > 向量屏蔽 >

linux中断机制和时钟

发布时间:2019-06-16 19:52 来源:未知 编辑:admin

  linux中断机制和时钟_计算机软件及应用_IT/计算机_专业资料。linux

  Lecture 8 Linux Interrupt and timer 中断机制 ? ? ? ? 中断基本知识 异常处理 外部中断处理 中断的后半部分处理机制 一、 中断基本知识 1.中断向量 ?Intel x86系列微机共支持256种向量中断,按0~255 编号,即赋予一个中断类型码,linux中称其为中断 向量。 ?所有的256种中断可分为中断和异常两大类。 ?异常又分为故障和陷阱,它们的共同特点是既不 使用中断控制器,又不能被屏蔽。 ? 中断又分为外部可屏蔽中断和外部非屏蔽中断。所 有的I/O设备产生的中断请求均引起可屏蔽中断, 而紧急事件引起的故障产生非屏蔽中断。 非屏蔽中断的向量和异常的向量是固定的,而可屏蔽 中断的向量可以通过对中断控制器的编程来实现。 ? ? 从0~31的向量对应于异常和非屏蔽中断 从32~47的向量分配给屏蔽中断 从48~255的向量用来标志软中断 (由int n指令产生), linux只用了一个:128(0x80)向量 ? 异常和非屏蔽中断 被0除 故障/陷阱 陷阱 陷阱 故障 故障 故障 故障 故障 故障 故障 故障 0 1 2 3 4 5 6 7 除法出错 SIGFPE 故障 调试 SIGTRAP 非屏蔽中断(NMI) 断点 SIGTRAP 溢出 SIGSEGV 边界检查 SIGSEGV 非法操作码 SIGILL 设备不可用 SIGSEGV 执行 8 双重故障 SIGSEGV 9 协处理器段越界 SIGFPE 80386) 10 无效TSS SIGSEGV 11 段不存在 SIGBUS 12 栈段异常 SIGSEGV 存 13 通用保护 SIGSEGV 14 页异常 SIGSEGV 机制 15 Intel保留 16 浮点出错 SIGFPE 17 对齐检查 SIGSEGV 18~31 Intel保留 对程序进行逐步调试 由Int 3断点指令引起 当into(check for overflow)指令被执行 当bound指令被执行 当CPU检查到一个无效操作码 随着CR0的TS设置,ESCAPE或MMX指令被 处理器不能串行处理异常引起 因外部的数学协处理器引起的问题(仅用在 要切换到的进程具有无效的TSS 引用一个不存在的内存段 试图超越栈段界限,或由ss标志的段不在内 故障 故障 故障 故障 违反了Intel x86保护模式下的一个保护规则 寻址的页不在内存,或违反了一种分页保护 浮点单元用信号通知一个错误情况,如溢出 操作数的地址没有被正确地排列 2.外设可屏蔽中断 ? Intel x86通过两片中断控制器8259A来响应15个 外部中断源,每个8259A可管理8个中断源。 ? 并非每个设备都可以向中断线(与中断控制器 相连的每条线)上发中断信号,只有拥有了某 条中断线的控制权,才可以向这条中断线上发 送信号。 ? 中断线是非常宝贵的资源,必须采取只有当设 备需要中断的时候才申请占用一个IRQ,或者 是在申请IRQ时采用共享中断的方式。 ? 外设可屏蔽中断 32 IRQ0 33 IRQ1 35 IRQ3 36 IRQ4 37 IRQ5 38 IRQ6 39 IRQ7 40 IRQ8 41 IRQ9 45 IRQ13 46 IRQ14 时钟 键盘 tty2 tty1 XT Winchester 软驱 打印机 实时时钟 重定向的IRQ2 FPU异常 AT Winchester ? 8259A执行的操作 ? ? ① ② ③ ④ ? 监视中断线,检查产生的IRQ信号 如果在中断线上产生了一个IRQ信号 把接收的IRQ信号转换成一个对应的向量。(IRQn的 缺省向量是n+32) 把这个向量存放在8259A的一个I/O端口,从而允许 CPU通过数据总线读此向量。 把产生的信号发送到CPU的INTR引脚——发出一个中 断。 等待,直到CPU确认这个中断信号,然后把它写进PIC 的一个I/O端口,此时清INTR线A对外部I/O请求的屏蔽可分为两种情况: a 清除EFLAGS的IF位,禁止所有外部的I/O中断 请求 b 中断控制器中有一个8位的中断屏蔽寄存器,每 位对应于8259A中的一条中断线,如果要禁用某 条中断线 中断路由的逻辑图 3.中断描述符表IDT Intel系统利用中断描述符表将中断向量和 其处理程序对应起来。 ? IDT是一个描述符数组,每一个元素由8 个字节组成,叫做门描述符。每个中断 向量对应一个门描述符。 ? ? 中断描述符表 偏移量31~16 段选择符 DLP 偏移量 P 段选择符 D XXX P DPL 0DXXX000 ????? 偏移量15~0 段描述符的特权级 入口函数地址的偏移量 段是否在内存中的标志 入口函数所处代码段的选择符 标志位,1=32位,0=16位 三位门类型码 任务门 类型码为101,门中包含一个进程的TSS段选择符, 不使用偏移量,故不包含一个函数的入口地址, Linux中一般不用任务门进行任务切换。 ? 中断门 类型码为110,控制权通过中断门进入处理程序时 关中断。中断门中的DPL为0,所有的中断处理 程序都由中断门激活,并全部限制在内核态。中 断时清IF标志,关中断以防止中断嵌套。 ? 陷阱门 类型码为111,控制权通过陷阱门进入处理程序时 不关中断,即IF标志位不变。 ? 系统门 是Linux内核特别设置的,用来让用户态的进程访 问Intel的陷阱门,DPL为3。通过系统门激活 3,4,5,0x80中断。 ? 4.IDT的初始化 Linux内核在系统的初始化阶段进行大量的初始化操 作 ?初始化可编程控制器8259A 8259A内部有4个中断命令字寄存器,8259A初始化 的目的是为了写入有关命令字,并利用8259A内部的 相应寄存器锁存这些命令字,以控制8259A的工作

http://bluecaleel.com/xiangliangpingbi/153.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有