`
longxj
  • 浏览: 101843 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

softirq

阅读更多

softirq并不是由软件产生的中断,它也是由硬件(网卡)产生的,只是对这类中断的处理不需要很迅速的处理,可以被defer。softirq由do_softirq()函数进行处理,这个函数只处理一定数量的pending
softirq,一般是10个,然后就退出了,那么剩下的什么时候处理呢?linux有个ksoftirpd内核线程,当这个线程被执行时会处理处于pending状态的softirq。(对active也就是pending softirq的check
是在内核代码的几个点上进行的)
2009/01/23 五

分享到:
评论

相关推荐

    Linux的内核软中断(softirq)执行分析.zip_leavinghzf_linux_theory989

    软中断(SoftIRQ)是Linux内核中的一种特殊类型中断,它与硬件中断相对,主要用于处理那些不能在硬件中断上下文中完成,但又需要快速处理的任务。这个压缩包文件"Linux的内核软中断(softirq)执行分析.zip_...

    Linux中断(interrupt)子系统之一:软件中断(softIRQ).docx

    内核预设了 10 种类型的软件中断,如 HI_SOFTIRQ、TIMER_SOFTIRQ 等,并通过 `softirq_vec` 数组进行管理,每个数组项对应一种软中断类型。 每个 CPU 都有一个 `irq_cpustat_t` 变量来记录待处理的软中断。`__...

    locking-selftest-spin-softirq.rar_Extras

    【标题】"locking-selftest-spin-softirq.rar_Extras" 提供的是Linux系统中的一个测试程序,主要关注锁机制、自旋锁(spinlock)以及软中断(softirq)的相关内容。这个压缩包包含了用于测试的源代码文件,是Asus ...

    locking-selftest-spin-softirq.rar_decide

    标题“locking-selftest-spin-softirq.rar_decide”和描述中的“provide all the vectors, so that EQ creation response can decide which one to use”涉及到的是Linux内核中的锁机制、中断处理和设备驱动编程的...

    Linux软中断softirq机制流程图

    这个流程图粗略地描述了softirq, tasklet, bottomhalt, task queue这些对象之间的联系及调用流程。 主要依据:《Linux内核的Softirq机制》和《软中断概况》 图中可能存在错误,希望您的指正!

    Linux 2.6中断下半部机制分析

    内核通过一个全局数组 `softirq_vec[32]` 来管理所有 softirq 请求,每个元素都是一个 `softirq_action` 结构体。实际上,Linux 并没有使用全部 32 个 softirq 向量,而是预定义了一组常见的 softirq 类型,例如: ...

    pci954ds.pdf

    内核维护了一个全局的软中断向量表`softirq_vec[32]`,预定义了一系列软中断类型,如`HI_SOFTIRQ`(高优先级)、`TIMER_SOFTIRQ`(定时器)、`NET_TX_SOFTIRQ`(网络发送)、`NET_RX_SOFTIRQ`(网络接收)、`BLOCK_...

    理解 linux 内核的软中断

    实际上,`raise_softirq` 函数内部会调用 `__raise_softirq_irqoff` 函数,后者负责实际的位图设置操作。 ##### 3. 激活时机之三:`ksoftirqd` 线程 为了更好地处理大量软中断请求,每个 CPU 还有一个专门的线程 `...

    linux软中断

    static struct softirq_action softirq_vec[32] __cacheline_aligned; ``` 3. **irq_cpustat_t结构体**:用于描述一个CPU的中断统计信息,其中包括软中断触发和控制变量。 ```c typedef struct { unsigned int...

    The journey of a packet through the linux 2.4 network stack

    描述:本文档详细阐述了在Linux内核2.4.x版本中数据包在网络层的处理流程,与2.2版本相比,由于弃用了全局序列化的下半部,转而采用新的软中断(softirq)系统,整个网络堆栈的处理方式发生了显著变化。 标签:TCP/...

    linux内核源代码分析中断处理程序与内核同步ppt课件.ppt

    软中断处理程序在`softirq_handler`中执行,通过`Raise_softirq`触发,`do_softirq`检查并执行待处理的软中断。 - **Tasklet**:基于软中断的简化版本,提供更简单的接口和较低的锁保护需求,通过`tasklet_schedule...

    Linux操作系统课程指导:Ch8 Bottom Halves and Deferring Work.ppt

    SoftIRQ有一个特定的索引,用于标识不同的SoftIRQ类型。一旦SoftIRQ被引发,Linux内核会在合适的时机执行相应的处理程序。 除了SoftIRQs,还有Tasklets,这是一种更加灵活的底半处理机制,它在进程上下文执行,可以...

    Interrupt in linux

    本文将详细介绍 Linux 中断的基本概念、不同类型的中断和异常、初始化过程、硬件和软件处理方式、数据结构以及一些关键术语,如中断描述符表(IDT)、bottom half、softirq 和 tasklet。 在 Linux 系统中,CPU 在...

    linux内核软中断_linux内核源码详解.docx

    软中断的激活是通过raise_softirq函数来实现的,该函数将响应的软中断号对应的__softirq_pending中的位置1,以表示该软中断被挂起。如果当前CPU不在中断上下文中,唤醒内核线程ksoftirqd来检查被挂起的软中断,然后...

    Linux 2.4.x内核软中断机制.pdf

    Softirq通过预先定义的处理函数列表,以及内核的调度算法,能够在适当的时间执行这些处理函数,从而减轻了硬件中断服务程序的负担,提高了系统的整体性能。 #### 使用示例 在实际应用中,软中断机制如tasklet和...

    linux内核软中断[借鉴].pdf

    在Linux 2.4.x内核中,软中断机制包括了bottom half、tasklet以及softirq等多种形式。 首先,bottom half,或称为“下半部”,是早期Linux内核用来处理硬件中断后续任务的方式。它将中断处理分为两个阶段:上半部...

    tasklet.pdf

    这两种类型的tasklet分别通过HI_SOFTIRQ和TASKLET_SOFTIRQ两种softirq来实现。这意味着,根据tasklet的优先级不同,它们会被调度到不同的softirq队列中进行处理。高优先级tasklet主要用于处理时间敏感性较高的任务,...

    Linux 2.4内核中断之探析.pdf

    《Linux 2.4内核中断之探析》这篇文献主要探讨了Linux 2.4内核中的中断处理机制,作者柏礼俊深入解析了基于Intel 80x86架构的Linux中断处理流程,特别关注了新引入的softirq和tasklet机制。 中断是计算机系统中关键...

    LinuxTasklet分析20121225.pdf

    tasklet_schedule()将tasklet加入链表,ksoftirqd线程执行__do_softirq(),调用tasklet_action处理。 - 方式二:硬中断下半部。在硬中断处理中,通过do_softirq()检查并执行软中断,包括tasklet。 - 方式三:显式...

    基于zynq平台linux外设驱动分析-内核部分

    - **NAPI接收流程**:NAPI(New API)是一种高效的网络数据接收机制,利用软中断(softirq)处理网络数据。在Zynq多核环境中,考虑到CPU抢占问题,NAPI需要确保函数的可重入性,以避免数据堆栈错误。具体流程如下: ...

Global site tag (gtag.js) - Google Analytics