中断描述符表(Interrupt Descriptor Table'IDT) 。中断描述符表是一个系统表,它与每一个中断或者异常向量相联系 。每个向量在表中有相应的中断或者异常处理程序的入口地址。 。每个描述符8个字节,共256项,占用空间2KB 。内核在允许中断发生前,必须先对IDT表进行适当的初始化 ·CPU的idtr寄存器指向IDT表的物理基地址 ●1idt指令 。IDT包含3种类型的描述符:任务门、中断门和陷阱门 。陷阱门与中断门类似,但进入陷阱门时,系统不会进入关中断状态 1口4日是42在月0C0 陈香兰(xlanchenoustc,edu,cn)(升算丸应Linux禄作系统分折Chapter5中断和并常 0 ctober21,201417/阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断描述符表(Interrupt Descriptor Table,IDT) 中断描述符表是一个系统表,它与每一个中断或者异常向量相联系 每个向量在表中有相应的中断或者异常处理程序的入口地址。 每个描述符8个字节,共256项,占用空间2KB 内核在允许中断发生前,必须先对IDT表进行适当的初始化 CPU的idtr寄存器指向IDT表的物理基地址 lidt指令 IDT包含3种类型的描述符:任务门、中断门和陷阱门 陷阱门与中断门类似,但进入陷阱门时,系统不会进入关中断状态 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 17 / 69
中断描述符表(Interrupt Descriptor Table,IDT) Task Gate Descriptor 636261605058575655545352515004847464544342414003837363543332 RESERVED P 010 RESERVED TSS SEGMENT SELECTOR RESERVED 31302图282726252423222120191817161514131211109876543210 Interrupt Gate Descriptor 636261059585756555H53525150494847464544484241403038373635343932 0 FFSET(16-31) 0 1 0 010 0 RESERVED SEGMENT SELECTOR OFFSET(0-15) 3130☒282726252423222120191817161514131211109876543210 Trap Gate Descriptor 662616059585756555453525150494847464544434241403938373635343332 D OFFSET(16-31) 0 1 00 0 RESERVED SEGMENT SELECTOR OFFSET(0-15) 313029282726252423222120191817161514131211109876543210 Dac 陈香兰(x1 anchenoustc,edu.cn)(升算丸应量 Linux株作系统分析Chapter5中断和并常 October 21.2014 17/阅
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断描述符表(Interrupt Descriptor Table,IDT) 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 OFFSET(16-31) OFFSET(16-31) RESERVED P P P D P L D P L D P L 0 0 0 1 1 0 1 1 1 1 1 0 1 1 0 RESERVED 0 0 0 0 0 0 RESERVED RESERVED SEGMENT SELECTOR SEGMENT SELECTOR TSS SEGMENT SELECTOR OFFSET(0-15) OFFSET(0-15) RESERVED 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Task Gate Descriptor Interrupt Gate Descriptor Trap Gate Descriptor 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 17 / 69
Outline 中所信号的作用和处理的一股原则 1/0设备如何引起CPU中断 x86CPU如何在硬件级处理中断信号 ●中断和异常的硬件处理:进入中断/异常 ●中断和异常的硬件处理:从中断/异常返回 Liux内核中软件级中断处理及其数据结构 Linux的软中断、tasklet以及下半那分 ©作业 1口4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和齐常 0 ctober21,201418/0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 中断信号的作用和处理的一般原则 .2 I/O设备如何引起CPU中断 .3 x86 CPU如何在硬件级处理中断信号 中断和异常的硬件处理:进入中断/异常 中断和异常的硬件处理:从中断/异常返回 4. Linux内核中软件级中断处理及其数据结构 5. Linux的软中断、tasklet以及下半部分 .6 作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 18 / 69
Outline 中所信号的作用和处理的一般原则 I/0设各如何引起CPU中断 ③x86CPU如何在硬件级处理中断信号 ·中断和异常的硬件处理:进入中断/异常 。中断和异常的硬件处理:从中听/异常返回 @Li区内核中软件级中断处理及其数据结祠 。初始化中断描述符表 。低级异常处理 。低级中断处理 。Liux体系无关部分的中断管理数据结构 。do IRQ的中所处理过程 ⑤Liux的软中新、task1et以及下半部分 o Linux的软中断softirq o Tasklet 。工作队列和工作线程 ©作业 1口4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linux禄作系统分折Chapter5中断和并常 0 ctober21,201419/0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 中断信号的作用和处理的一般原则 .2 I/O设备如何引起CPU中断 .3 x86 CPU如何在硬件级处理中断信号 中断和异常的硬件处理:进入中断/异常 中断和异常的硬件处理:从中断/异常返回 4. Linux内核中软件级中断处理及其数据结构 初始化中断描述符表 低级异常处理 低级中断处理 Linux体系无关部分的中断管理数据结构 do_IRQ的中断处理过程 5. Linux的软中断、tasklet以及下半部分 Linux的软中断softirq Tasklet 工作队列和工作线程 .6 作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 19 / 69
中断和异常的硬件处理:进入中断/异常 ·假定:内核已经初始化,CPU在保护模式下运行 ●CPU的正常运行: 。当执行了一条指令后·cs和eip这对寄存器包含了下一条 将要执行的指令的逻辑地址。 ·在执行这条指令之前,CPU控制单元会检查在运行前一条 指令时是否发生了一个中断或者异常· 。如果发生了一个中断或异常,那么CPU控制单元中断当前 任务的运行转而进入中断处理 。硬件进入中断处理的过程如下: ●确定与中断或者异常关联的向量i(0~255) ©读idtr寄存器指向的IDT表中的第i项 O从gdtr寄存器获得GDT的基地址,并在GDT中查找,以读取 IDT表项中的段选择符所标识的段描述符 4口4四是4P刀0C 陈香兰(x1 anchenoustc,edu.cn)(计算机应Linux禄作系统分折Chapter5中断和齐常 ctober21,201420/60
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中断和异常的硬件处理:进入中断/异常 假定:内核已经初始化,CPU在保护模式下运行 CPU的正常运行: 当执行了一条指令后,cs和eip这对寄存器包含了下一条 将要执行的指令的逻辑地址。 在执行这条指令之前,CPU控制单元会检查在运行前一条 指令时是否发生了一个中断或者异常。 如果发生了一个中断或异常,那么CPU控制单元中断当前 任务的运行转而进入中断处理 硬件进入中断处理的过程如下: 1. 确定与中断或者异常关联的向量i(0~255) 2. 读idtr寄存器指向的IDT表中的第i项 3. 从gdtr寄存器获得GDT的基地址,并在GDT中查找,以读取 IDT表项中的段选择符所标识的段描述符 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 5 中断和异常 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) October 21, 2014 20 / 69