- 博客(8)
- 资源 (25)
- 收藏
- 关注
原创 中断详解(七)——软中断与微任务
我们知道,中断处理程序被分为上半部函数和下半部函数。而软中断、微任务、工作队列都是是下半部函数的机制。(至于工作队列的方式,她是以另一个线程的方式实现的,初始化时创建,调用时唤醒,其实request_thread_irq是将中断线程化,包括利用定时器实现延时处理,这都不是在中断上下文中) 软中断和微任务都是通过do_softirq执行的。 中断处理在do_IRQ中调用软中断
2015-03-25 15:28:05 3443
原创 中断详解(六)——do_IRQ函数
中断处理程序在完成一些堆栈和寄存器的处理后,调用do_IRQ函数。do_IRQ是中断在C语言的总入口。common_interrupt: addl $-0x80,(%esp) /* Adjust vector into the [-256,-1] range */ SAVE_ALL TRACE_IRQS_OFF movl %esp,%eax call
2015-03-25 11:16:15 10776
原创 中断详解(五)——中断处理程序
对于异常处理来说,内核只要给引起异常的进程发送一个Unix信号就能处理大多数异常。然后内核的工作就是延迟下一个动作,知道进程接收到该信号。关于异常处理,内核并没有执行多少任务,因而异常处理非常迅速。这种方怯并不适合中断,因为经常会出现一个进程(例如,一个请求数据传输的进程)被挂起好久后中断才到达的情况,因此,一个完全无关的进程可能正在运行。所以,给当前进程发送一个Unix信号是毫无意义的.
2015-03-24 17:03:38 5328
原创 中断详解(四) ——异常与异常处理
异常8Ox86微处理器发布了大约20种不同的异常,内核必须为每一种异常提供一个异常处理程序。对于某些异常,CPU控制单元在开始执行异常处理程序前会产生一个硬件出错码(hardwar eerror code) , 并且压入内核态堆钱。(见本文最后面的几张大图)异常处理CPU的大部分异常都被Linux解释为出错条件。当其中一个异常发生肘,内核就向引起异常的进程发送一个信号向色通
2015-03-24 16:31:07 5311
原创 中断详解(三)——中断和异常的硬件处理
假定内核已被初始化,CPU在保护模式下运行 当执行了一条指令后,CS和eip这对寄存器包含下一条将要执行的指令的逻辑地址.在处理那条指令之前,控制单元会检查在运行前一条指令时是否已经发生了一个中断或异常。如果发生了一个中断或异常,那么控制单元执行下列操作: 1)确定与中断或异常关联的向量i (0 ≤ i ≤ 255) 2)读由idtr寄存器指向的I
2015-03-24 14:44:44 3565 1
原创 中断详解(二)——中断描述符、任务门、中断门、陷阱门
什么是中断描述符表 中断描述符IDT表示一个系统表,它与中断或异常向量相联系。每一个中断或异常向量在这个系统表中有对应的中断或异常处理程序入口地址。中断描述符的每一项对应一个中断或异常向量,每个向量由8个字节组成。因此,最多需要256*8=2048字节来存放IDT。 在运行中断之前,必须初始化IDT(中断描述符表)。任务门、中断门、陷阱门 IDT包
2015-03-24 13:53:26 16954
原创 中断详解(一)——基本概念
概述什么是中断 中断通常被定义为一个事件,该事件能够改变处理器执行指令的顺序。这样的事件与 CPU 芯片内外部硬件电路产生的电信号相对应。 中断分为同步中断和异步中断。 同步中断——同步中断是当指令执行时由 控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后 CPU 才会发出中断 异步中断——异步中 断是由其他硬件设备依照
2015-03-24 10:30:32 26805 6
原创 深入理解Linux网络技术内幕——中断与网络驱动程序
接收到帧时通知驱动程序 在网络环境中,设备(网卡)接收到一个数据帧时,需要通知驱动程序进行处理。有一下几种通知机制:轮询: 内核不断检查设备是否有话要说。(比较耗资源,但在一些情况下却是最佳方法)中断: 特定事件发生时,设备驱动程序代表内核指示设备产生硬件中断,内核中断其它活动满足设备的需要。多数网络驱动程序使用中断。中断期
2015-03-19 14:12:23 6202
OpenStack企业云平台架构与实践.pdf
2018-04-25
TCP-IP详解卷2-实现.pdf
2018-04-13
UNIX环境高级编程 中文第3版
2018-01-15
libev-官方手册
2017-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人