读深入理解Linux内核 (第4章 中断和例外)
来源:互联网 发布:linux防御软件 编辑:程序博客网 时间:2024/05/18 00:41
中断,通常指异步中断,主要来自外设,也包括内部某些中断,如时钟中断。异步中断发生的时间是任意的,和CPU执行过程没有直接关系。
例外,也称为同步中断,CPU执行指令直接导致,比如缺页,除零等。
例外又分为两大类,
第一类:处理器检测到的例外,包括以下几个子类,
1. 缺陷(faults),比如缺页,通常例外处理程序处理后,恢复到原来的地址执行
2.陷阱(traps),traps主要指指令主动产生的例外,比如调试指令,断点
3.中止(aborts),发生了不可恢复的错误,如除零。Abort发生后,会中断当前程序,并且会发送信号给应用程序
第二类:可编程的例外。比如int指令,又称为软中断,用于系统调用陷入内核空间
IRQs和中断
IRQ 值Interrupt ReQuest Line,中断请求线,设备通过它发送中断信号给中断控制器(PIC– Programmable Interrupt Controller)。
中断控制器 ---- 捕获外部设备的中断请求,处理优先级,然后发送信号给CPU的中断脚。中断控制器提供中断状态寄存器,中断屏蔽寄存器,中断待定寄存器给CPU访问。
IRQ0 指第一根中断控制线。
例外
常见的有,除零,断点(通常由调试器插入),缺页,无效内存等,每个例外都有自己的例外处理程序。
软件IRQ(SoftIrqs)和Tasklet(小任务)
软件IRQ和Tasklet是用来处理从中断中分离出来,不需要立即处理的任务或数据,减少ISR的负荷,也称为中断的下半部。
SoftIRQ基本限定在某些用途中,包括Tasklet实际是由其中一个SoftIRQ来执行。
SoftIRQ是运行在中断上下文,所以tasklet也是运行在中断上下文中。
tasklet创建后,放在队列中被顺序执行,tasklet中不应该有休眠或调度的行为。
tasklet的使用方法,
1. tasklet_init(),参数包括tasklet函数方法
2. tasklet_enable()
3. 然后在中断服务程序中,可以调用tasklet_schedule()来让tasklet取得运行机会
工作队列
使用工作队列来让内核函数延迟到在后面某个时刻执行。工作队列是由工作者线程(WorkerThread),这个内核线程调用,所以是进程上下文,可以调度出去,这也是它和tasklet比较关键的差别。
- 读深入理解Linux内核 (第4章 中断和例外)
- 《深入理解Linux内核》--第四章 中断和异常:读书笔记
- 深入理解Linux内核个人小结4---中断和异常
- 深入理解Linux内核(4)---中断和异常(x86平台)
- 深入理解Linux内核day03--中断和异常
- 读深入理解Linux内核 (第5章 内核同步机制)
- 《深入理解Linux内核》读书笔记-第四章-中断和异常(1)
- 《深入理解Linux内核》读书笔记-第四章-中断和异常(1) .
- 深入理解linux内核——中断和异常(上)
- 深入理解linux内核——中断和异常(下——多核&可延迟中断)
- 读深入理解Linux内核 (第6章 时间管理)
- 读深入理解Linux内核 (第7章 进程调度)
- 读深入理解Linux内核 (第8章 内存管理, 第一部分 --- 页的管理)
- 读深入理解Linux内核 (第8章 内存管理, 第三部分 --- 虚拟内存分配)
- 读深入理解Linux内核 (第9章 进程地址空间, 第一部分 ---- 概念)
- 读深入理解Linux内核 (第9章 进程地址空间, 第二部分 ---- 内存区域)
- 读深入理解Linux内核 (前言和第一章)
- 《深入理解Linux内核》学习笔记——中断和异常
- 微信"小程序"的诞生
- 使用RemoteViews自定义通知栏样式 Notification
- ubuntu 无法登陆桌面问题
- css中的度量单位
- css实现图片等比例缩小不变形
- 读深入理解Linux内核 (第4章 中断和例外)
- 最近的总结
- 贪吃蛇
- Java 多线程(二) 线程的实现
- java xml操作实例
- ios developer tiny share-20160916
- 计算分数精确值
- pyspark中使用categoricalFeaturesInfo来标记分类型变量
- CSS表格与列表