剖析Linux内核的中断处理机制

中断是为了解决外部设备完成某些工作后通知CPU的一种机制。

1.为什么把中断分为两个部分

Linux 系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是上半部和下半部分。前半部分内核立即执行,而后半段稍后处理。
上半部用来快速处理中断,一般会暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。必须在一个新的中断产生之前终止。(硬中断)
下半部用来延迟处理上半部未完成的工作,一般以内核线程的方式运行。(软中断)

2.软中断

软中断机制也是推迟内核函数的执行。软中断本身是一种机制,也是一种基本架构。具体的内核定义用一个enum定义:

enum
{
    HI_SOFTIRQ=0, /* 高优先级tasklet */ /* 优先级最高 */
    TIMER_SOFTIRQ, /* 时钟相关的软中断 */
    NET_TX_SOFTIRQ, /* 将数据包传送到网卡 */
    NET_RX_SOFTIRQ, /* 从网卡接收数据包 */
    BLOCK_SOFTIRQ, /* 块设备的软中断 */
    BLOCK_IOPOLL_SOFTIRQ, /* 支持IO轮询的块设备软中断 */
    TASKLET_SOFTIRQ, /* 常规tasklet */
    SCHED_SOFTIRQ, /* 调度程序软中断 */
    HRTIMER_SOFTIRQ, /* 高精度计时器软中断 */
    RCU_SOFTIRQ, /* RCU锁软中断,该软中断总是最后一个软中断 */      /* 优先级最低 */

    NR_SOFTIRQS /* 软中断数,为10 */
};

每一个优先级的软中断都使用一个struct softirq_action结构来表示,在这个结构中,只有一个成员变量,就是action函数指针,因为不同的软中断它的处理方式可能不同。软中断向量如下所示:

/* 用于描述一个软中断 */
struct softirq_action
{
    /* 此软中断的处理函数 */
    void (*action)(struct softirq_action *);
};

软中断控制状态结构:softirq_cec[]是一个全局变量,系统中的每个CPU所看到的是同一个数组,但是,每个CPU各有自己的软中断控制状态结构。irq_stat[]数组是一个全局量,但是各个CPU可以按自身的编号访问相应的域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux内核分析与编程是指对Linux操作系统的内核进行深入研究并进行相关开发工作的过程。Linux内核是操作系统的核心部分,负责管理计算机的硬件资源和软件的运行。 首先,Linux内核分析是通过研究内核源代码来理解其工作原理和设计理念。分析时我们可以关注如中断处理、进程调度、内存管理、文件系统等关键模块,深入了解它们的实现原理和交互方式。通过分析内核代码,我们能够了解Linux内核中各个组件的工作方式,更好地了解操作系统的工作流程和机。 其次,Linux内核编程是指基于已有内核的代码基础上进行开发工作。通过在内核中添加新的功能模块或优化现有功能,我们可以对操作系统进行定化的开发,以满足特定需求。内核编程需要具备深厚的C语言编程基础和操作系统相关知识,熟悉内核代码的组织结构和编码规范。 Linux内核分析与编程的价值在于提升我们对操作系统的理解和能力。通过深入研究内核源代码,我们可以更好地掌握操作系统的原理和机,从而优化系统性能和安全性。同时,通过内核编程,我们能够进行操作系统的个性化定,满足特定业务需求。这对于从事系统开发、嵌入式开发等方向的工程师来说,具有重要的意义。 总结来说,Linux内核分析与编程是对Linux操作系统内核进行研究和开发的过程。通过分析内核源代码来了解内核的工作原理和设计思想,并通过内核编程进行系统定和优化,从而提升对操作系统的理解和能力。这对于开发人员来说具有重要的价值和意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhInen丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值