
Linux进程管理
文章平均质量分 69
兔斯基灬木木
一个Linux爱好者,专注Linux内核机制研究和学习。
展开
-
Linux内核实时机制19 - RT调度器2 - 实时任务创建
1、将调度策略SCHED_FIFO和SCHED_RR设置到任务描述结构体struct task_struct的policy;2、将任务的优先级保存到描述结构体struct task_struct的rt_prority中;3、对任务的rt_priority进行转换保存到struct task_struct中的prio,以供后续调度使用。原创 2025-03-13 18:02:09 · 120 阅读 · 0 评论 -
Linux内核实时机制25 - RT调度器8 - 实时任务周期调度 task_tick_rt
更新统计信息,并判断当前进程执行时间是否超过系统最大值 — 后续重点分析。Linux进程管理11 - 调度时机3 - 周期调度 &抢占触发点。原创 2025-03-13 08:40:06 · 77 阅读 · 0 评论 -
xlnid_down 驱动 - 实时内核适配空指针
【代码】xlnid_down 驱动 - 实时内核适配空指针。原创 2025-03-12 16:38:30 · 74 阅读 · 0 评论 -
实时内核机制 - 任务迁移分析
【代码】实时内核机制 - 任务迁移分析。原创 2025-03-12 15:35:23 · 37 阅读 · 0 评论 -
Linux进程管理优秀参考博文
Linux进程调度优秀参考博文原创 2025-03-07 12:26:53 · 27 阅读 · 0 评论 -
Linux进程管理 - 优先级的处理
进程管理原创 2025-03-04 14:03:36 · 116 阅读 · 0 评论 -
Linux进程管理 - 优先级、进程nice、top
【代码】Linux进程管理7 - 优先级、进程nice、top。原创 2025-03-05 08:51:20 · 50 阅读 · 0 评论 -
Linux进程调度20 - 负载均衡
Linux进程调度17 - 负载均衡。原创 2025-03-07 14:24:02 · 33 阅读 · 0 评论 -
Linux进程调度19 - SMP调度
Linux进程调度16 - SMP调度。原创 2025-03-07 14:22:46 · 410 阅读 · 0 评论 -
Linux进程管理18 - CFS调度器5 - pick_next_task_fair
因此我们优选出来的进程必须同last和next指针域进行对比, 其实就是检查就绪队列中的最优进程, 即红黑树中最左节点last是否可以抢占last和next指针域, 检查是否可以抢占是通过wakeup_preempt_entity函数来完成的.在pick_next_entity的最后, 要把红黑树最左下角的进程和另外两个进程(即next和last)做比较, next是抢占失败的进程, 而last则是抢占成功后被抢占的进程, 这三个进程到底哪一个是最优的next进程呢?原创 2025-03-11 10:12:07 · 72 阅读 · 0 评论 -
Linux进程管理17 - CFS调度器4 - 周期调度 task_tick_fair
详细参考:Linux进程管理11 - 调度时机3 - 周期调度 & 抢占触发点。原创 2025-03-11 09:46:59 · 50 阅读 · 0 评论 -
Linux进程管理16 - CFS调度器3 - 出入队enqueue_task_fair
在休眠进程被唤醒时重新设置vruntime值,以min_vruntime值为基础,给予一定的补偿,但不能补偿太多。CFS调度器没有时间片的概念了,而是根据实际的运行时间和虚拟运行时间来对任务进行排序,从而选择调度。睡眠进程、新建进程都是由该函数完成虚拟时间vruntime的设置。原创 2025-03-11 10:07:52 · 74 阅读 · 0 评论 -
Linux进程管理15 - CFS调度器2 - 数据结构关系
【代码】Linux进程管理15 - CFS调度器2 - 数据结构关系。原创 2025-03-08 09:39:59 · 128 阅读 · 0 评论 -
Linux进程管理14 - CFS调度器1 - 基础概念
为了计算方便,内核约定nice为0的权重值为1024,其他nice值相对的权重值可以通过查表的方式获取,内核预先计算好了一个表 sched_prio_to_weight[40],表的下标对应nice值。如果一个CPU密集型的应用程序的nice值从0增加到1,那么它相对其他nice值为0的应用程序将减少10%的CPU时间;, 进程默认的nice为0,这些值类似于级别,可以理解成有40个等级,nice值越高,优先级越低,反之亦然。每次选择总选择虚拟时间最小的进程,而红黑树中虚拟时间键值最小的总在最左侧。原创 2025-03-04 18:15:33 · 101 阅读 · 0 评论 -
Linux进程管理13 - 调度时机5 - 内核抢占
defined#else0BIT32当内核即将返回用户空间时, 内核会检查need_resched是否设置,如果设置,则调用schedule(),此时,发生用户抢占。从系统调用返回用户空间从中断(异常)处理程序返回用户空间当kerne(系统调用或者中断都在kernel中)返回用户态时,系统可以安全的执行当前的任务,或者切换到另外一个任务.原创 2025-03-07 12:24:40 · 102 阅读 · 0 评论 -
Linux进程管理12 - 调度时机4 - 唤醒进程 & 抢占触发点
try_to_wake_up函数通过把进程状态设置为TASK_RUNNING, 并把该进程插入本地CPU运行队列rq来达到唤醒睡眠和停止的进程的目的.`设置rq中正在执行进程的flags为TIF_NEED_RESCHED。设置 preempt.need_resched 为0。原创 2025-03-07 12:23:48 · 117 阅读 · 0 评论 -
Linux进程管理11 - 调度时机3 - 周期调度 & 抢占触发点
这里是引用 CFS调度设计,结合权重/nice等计算进程的虚拟运行时间vruntime。task_tick函数在CFS调度类中的实现函数为task_tick_fair()调用entity_tick检查是否需要调度。细节分析,参考时间子系统分析。原创 2025-03-07 13:09:19 · 101 阅读 · 0 评论 -
Linux进程管理10 - 调度时机2 - 抢占触发点
1)周期调度函数scheduler_tick()中判断是否满足进程切换的条件,并设置延迟调用的标志位,也就是TIF_NEED_RESCHED标志。2)当有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。原创 2025-03-08 11:59:52 · 86 阅读 · 0 评论 -
Linux进程管理9 - 调度时机1 - 调度执行点
1、进程切换分为自愿(voluntary)和强制(involuntary)两种。主动调度:通常自愿切换是指任务由于等待某种资源,将state改为非RUNNING状态后,调用schedule()主动让出CPU;抢占式调度:而强制切换(即抢占)则是任务状态仍为RUNNING却失去CPU使用权,情况有任务时间片用完、有更高优先级的任务、任务中调用cond_resched()或yield让出CPU。原创 2025-03-08 10:21:32 · 270 阅读 · 0 评论 -
Linux进程调度8 - 核心调度 - 切换进程2
Linux进程调度8 - 核心调度 - 切换进程2。原创 2025-03-08 09:58:57 · 44 阅读 · 0 评论 -
Linux进程调度7 - 核心调度 - 切换进程1
进程上下文切换(有时候也称作进程切换 或 任务切换)是指CPU从一个进程或线程切换到另一个进程或线程。此处仅简述进程切换概念流程,后续专门详细分析梳理。context_switch流程。原创 2025-03-07 14:06:17 · 43 阅读 · 0 评论 -
Linux进程管理6 - 核心调度 - 主调度器schedule
Linux进程核心调度器之主调度器schedule延迟调度1延迟调度2Linux进程管理18 - CFS调度器5 - pick_next_task_fair。原创 2025-03-06 14:19:27 · 87 阅读 · 0 评论 -
Linux进程管理5 - 核心调度 - 主调度器设计
进程调度有一个非常重要的数据结构sched_entity,它称为调度实体。它描述进程作为一个调度实体参与调度所需的所有信息。原创 2025-03-04 16:57:03 · 133 阅读 · 0 评论 -
Linux进程管理4 - 进程创建及唤醒
【代码】Linux进程管理4 - 进程创建及唤醒。原创 2025-03-04 11:15:46 · 70 阅读 · 0 评论 -
Linux进程管理3 - 进程创建入口
##ENTRY(stext)__primary_switchedinit_thread_unionINIT_TASK_DATA1、thread_union数据结构2、定义thread_union &引用init_thread_union3、INIT_TASK_DATA4、task_struct5、thread_info6、init_task7、__init_task_data8、INIT_THREAD_INFO(init_task)1 Linux5.0 进程创建流原创 2025-03-04 09:52:56 · 63 阅读 · 0 评论 -
Linux进程管理2 - 进程创建基础
新建线程处于不可运行态,需要使用wake_up_process将其唤醒并添加到就绪队列中。写时复制技术就是父进程创建子进程时,不需要复制进程地址空间的内容到子进程。当父子进程中有一方需要修改某个物理页面内容时,触发写保护缺页异常。原创 2025-03-04 09:32:21 · 53 阅读 · 0 评论 -
Linux进程管理1 - 进程基础
进程调度基础原创 2025-03-04 09:22:27 · 82 阅读 · 0 评论