Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376875
  • 博文数量: 44
  • 博客积分: 2060
  • 博客等级: 上尉
  • 技术积分: 528
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-17 20:50
文章分类
文章存档

2011年(1)

2010年(28)

2008年(15)

分类: LINUX

2008-04-27 21:33:09

此文PDF版本可在下载。
之所以张贴到Blog是为了让搜索引擎索引。
 
 

写在前面的话

前段时间在ChinaUnix和很多朋友一起讨论了Linux中断的问题,发现不少地方都搞不清楚。于是静下心来,收集了一些资料,配合源代码进行了学习。经过一个月的时间,已经大体了解了关于中断的细节和实现,但仍然有很多疑问,我把它们总结了一下,写下这篇文章,和大家一起讨论。个人水平有限,难免有错,希望大家在发现错误后能反馈到我的邮箱,我好及时更正。

这篇文章不是学习Linux中断的入门文章,如果对中断没有概念,笔者建议先阅读《Understanding Linux Kernel(3thd Edition)》。此文是对ULK3的补充,讲了一些它没讲的内容。文中的硬件知识,适用与Intelx86平台、x86_64平台,但不适用与IA64SAPIC系统。

此外,本文对于Linux源码的讲解采用的是ULK3的模式,笔者比较反感源码注释。对于开源项目来说,告诉我你要做什么,但不要告诉我你是怎么做的代码就是最好的注释,这是我的信条。 

 

(版权声明:此文欢迎转载。但未经允许不得用于商业目的)


内容提要

第一章:介绍了PICAPIC系统的基本架构,提供了了解现代中断系统构成的基本知识。

第二章:论述了Linux如何探测中断硬件,以及如何初始化它们。

第三章:补充了一些中断系统的硬件知识,没有它们你也应该能读懂前两章的内容。

文中用大量题外话介绍了中断相关的知识和原理,它们大部分是笔者感兴趣的,例如“Remote IRR的作用“Edge中断的共享与丢失伪中断产生的原因等。以笔者开头的文字,是作者自己对一些问题的看法,其中有很多不能解决的疑问,如果你知道答案,希望能通过 xing5820@163.com告诉我,让我及时更新相关内容。同时,非常欢迎指出文中的错误之处。

此文虽取名为硬件篇,但不代表就有一个软件篇存在。虽然目前内核使用了Generic Interrupt Layer,但这只是对原__do_IRQ()路径的封装,ULK3的内容完全适用于当前内核中断系统,软件相关内容可以参考此书。

 

目录

第一章 中断控制器概述... 6

1.1史前的PIC.. 6

1.2现代的APIC.. 8

1.2.1 IOAPIC.. 9

题外话 —— Remote IRR有什么用?... 10

1.2.2 LAPIC.. 11

1.2.3 IOAPIC发出的中断消息是如何找到LAPIC的?... 13

题外话——关于APIC ID.. 14

1.2.4 TPRPPRAPRLowest priority —— 中断发给Whom... 16

题外话 —— x86的中断优先级级别... 17

题外话 —— Focus Processor. 19

第二章 Linux的中断子系统... 20

题外话 —— IRQPinGSIVector. 20

2.1 中断探测... 21

2.1.1 关键数据结构... 21

题外话 —— 中断共享和中断丢失... 22

2.1.2 中断探测内核路径... 23

2.1.2.1 MP Spec路径... 23

题外话 ——MP Floating Pointer entry Default Configuration. 23

题外话 —— IRQ01213是什么?... 25

2.1.2.2 MADT路径... 26

2.1.2.2.1 MADT表结构... 26

题外话 —— APIC的地址... 26

2.1.2.2.2 ACPI中断探测过程... 28

2.1.3 APIC的初始化... 30

2.1.3.1 LAPIC初始化:... 30

题外话 —— 什么是伪中断... 30

题外话 —— 什么是LVT... 32

2.1.3.1 IOAPIC的初始化:... 33

题外话 —— ArbLAPIC总线竞争... 35

题外话 —— LinuxVector分配策略... 36

第三章 你应该知道的硬件知识... 38

3.1 APICPIC共存下的系统... 38

3.1.1 PIC mode. 38

题外话 —— IMCR的访问... 39

3.1.2 Virtual Wire Mode. 39

3.1.3 APIC mode. 40

3.2 PCI中断转ISA中断协议... 41

3.3 IOAPIC情况下的中断路由... 44

3.3.1 Variable Routing. 45

3.3.2 Fixing Routing... 45

题外话 —— Fixing RoutingOS的暗示... 46

 


阅读(8427) | 评论(9) | 转发(1) |
给主人留下些什么吧!~~

walter0072019-07-05 16:05:32

walter007:大家有专门研究中断的可以建立个组, 。

三九六一九一二六七  微?

回复 | 举报

walter0072019-07-05 16:05:03

大家有专门研究中断的可以建立个组, 。

sbso_19882011-01-10 17:27:32

想请教博主一个问题,看了你发的有关VI编辑时不离开VI窗口即可编辑单个文件的问题,我想请教一下,如果我的MAKEFILE文件不在当前目录,在../debug/src/makefile 这时候如果写呢? 我是这样写的还是不行:make -C ../debug/src/

chinaunix网友2009-09-06 13:38:25

RTE格式描述中“根据Destination Filed(见下)值的不同,该字段值的意义不同,它有两个意义”有笔误,应为“根据Destination Mode(见下)值的不同,该字段值的意义不同,它有两个意义”

chinaunix网友2009-08-14 16:18:58

自强不“惜”,呵呵