软中断和微线程的处理都依赖于一组每-处理器内核线程,这些内核线程在当系统中软中断或微线程处理过于频繁时协助软中断和微线程的处理。

一个软中断或微线程可以重新激活自己,从来导致其又重新运行,这样会导致用户程序无法获得处理器,同时,忽略二次激活也是不可接受的。为了满足这两个需求,解决办法是,内核不会立即处理二次激活的软中断或微线程,而是,如果软中断或微线程的数目增长过快,内核将唤醒一些内核线程来协助处理,这些内核线程执行的优先级为最低(nice值为19),以确保它们不会在更重要的任务之前执行。每个处理器都有一个这样的线程,命名为ksoftirqd/n,其中n是处理器的编号。比如,对于双核处理器,有两个这样的内核线程:ksoftirqd/0,ksoftirqd/1。线程初始化,执行逻辑如下所示:

for (;;) {
if (!softirq_pending(cpu))
schedule();
set_current_state(TASK_RUNNING);
while (softirq_pending(cpu)) {
do_softirq();
if (need_resched())
schedule();
}
set_current_state(TASK_INTERRUPTIBLE);
}

内核线程ksoftirqd相关推荐

  1. ksoftirqd内核线程-处理软中断

    softirq属于底半步的一种方式,软中断是相对于硬中断的. 在中断的下半部机制中,软中断是执行效率最快的,同时,相对来说对于开发者也是最麻烦的,它的麻烦在于两个因素: 同一个软中断支持在不同的 cp ...

  2. linux kernel2.6中软中断运行线程ksoftirqd的创建

    1.软中断由内核线程ksoftirqd处理,下面说一下它的创建过程. start_kernel()创建init线程,init()调用do_pre_smp_initcalls()->spawn_k ...

  3. 【linux性能优化】内核线程CPU利用率高分析

    在排查网络问题时经常碰到的一个问题,就是内核线程的CPU使用率很高 比如,在高并发的场景中内核线程ksoftirqd的CPU使用率通常就会比较高,根据CPU和网络模块知识可以得知,这是网络收发的软中断 ...

  4. ksoftirqd内核线程

    每个处理器都有一组辅助处理器软中断(和tasklet)的内核线程.当内核中出现大量软中断的时候,这些内核进程就会辅助处理它们. 引入ksoftirq内核线程的原因: 对于软中断,内核会选择在几个特殊时 ...

  5. 【Linux 内核】进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )

    文章目录 一.进程特殊形式 ( 内核线程 | 用户线程 ) 二.C 标准库与 Linux 内核中进程相关概念 三.Linux 查看进程命令及输出字段解析 一.进程特殊形式 ( 内核线程 | 用户线程 ...

  6. rust 手动关闭子线程_从零开始写 OS (9) —— 内核线程

    上一篇 小源:从零开始写 OS (8) -- 创建页表​zhuanlan.zhihu.com 本章代码对应 commit :de86ae6e1e8bdfe3388530f82b2081fe29e40b ...

  7. linux 线程--内核线程、用户线程实现方法

    Linux上进程分3种,内核线程(或者叫核心进程).用户进程.用户线程 内核线程拥有 进程描述符.PID.进程正文段.核心堆栈 当和用户进程拥有相同的static_prio 时,内核线程有机会得到更多 ...

  8. linux内核线程创建销毁机制

    这个话题乍一听貌似比较大,其实线程创建本身就是一件很平常的事情. 下面将要介绍的是,新版linux中创建内核线程的机制做了一些变化(其实本质没变,最终还是调用do_fork()来实现),和控制线程的时 ...

  9. 用户进程与内核进程是一一对应的吗_用户线程、内核线程和轻量级进程

    这一篇再继续就线程进行一些更深层次的研究 线程所需的资源 进程中各个线程共享代码.数据和文件等资源,记录线程运行状态的空间(TCB)每个线程单独有一个 每个进程都需要它自己私有的线程控制块(TCB) ...

最新文章

  1. The Innovation | Volume 2 Issue 4 正式出版
  2. 网络营销之CPA、CPS、CPM、CPT、CPC 是什么
  3. Mac使用自带的屏幕共享实现VNC连接KVM时需要输入密码的问题解决
  4. android网络请求回调管理,Android HTTP网络请求的异步实现
  5. Java程序员周末时间搞锭银行信息管理系统毕业设计(java+springboot+mybatis+mysql+vue+elementui)等实现
  6. 推荐一系列优秀的Android开发源码
  7. mqtt判断设备是否在线_如何在 Python 中使用 MQTT
  8. 阿里巴巴美股股价大跌:创在美上市以来最大单日跌幅
  9. python 去除读取txt输出时候的换行号
  10. 批量生成zabbix screen xml file
  11. 苹果Mac强大的采样器音源软件:Native Instruments Kontakt
  12. c语言 从文件中读取车牌,输入一个车牌号写入文件,找出所有后四位是一个完全平方数的车牌号并输出
  13. Cesium + Vue 点击获取经纬度 气泡窗(三)
  14. 电信屏蔽了80端口,利用80端口映射解决web网站应用发布问题
  15. 3d max材质贴图
  16. 工作汇报计时器小工具介绍
  17. securecrt 远程映射端口
  18. JAVA IO必会概念
  19. 送快递到程序员,自学3年终于转行成功,薪资从5K涨到了12K
  20. 使用vue3实现数据大屏展示

热门文章

  1. (c#)int类型和枚举类型的相互转换
  2. 涨点技巧:基于Yolov5的微小目标检测,多头检测头提升小目标检测精度
  3. IT行业男性出轨率最高!
  4. 2020-11-07 Mybatis
  5. wannier拟合能带总是拟合不上_Wannier 90使用教程
  6. bootstrap--表格(table的各种样式)
  7. 为什么误差采取平方和形式
  8. Cadence 17.4 中文菜单
  9. CC2530基础实验四 串口通信
  10. win10打不开开始菜单的解决方法