TaterLi 个人博客

前面所有调度话题都假装只有一个 CPU.真机是 4 个 A53 加 2 个 A72,六个核,两种脾气,调度器的活立刻多了两件:任务放哪个核,核之间的负载怎么摆平.这篇把 SMP 的三层机制 — 亲和性,负载均衡,异构感知 — 全部在板上实测,顺手把频率联动...

发布 0 条评论

单核再忙,同一时刻也只有一个任务在跑.所谓"多任务",是调度器在毫秒尺度上不停换人:保存旧任务的现场,恢复新任务的现场,放它上CPU.这篇把这个"换人"动作拆开看:一次切换到底贵多少(实测),切换点在哪发生(两种,计...

发布 0 条评论

上一节说调度类绝对隔离:rt 有人,fair 靠边.这话对,但如果只有前半句,一个写坏的实时任务就能把整台机器锁死.这节在单核上把 FIFO 和 RR 的行为全部实测,看隔离的威力,再看内核给这威力套上的那道缰绳 — RT 带宽节流.还有我自己实验...

发布 0 条评论

先泼盆冷水:fair.c 的文件头注释今天还写着 Completely Fair Scheduling (CFS) Class,调度类还叫 fair_sched_class,策略还叫 SCHED_NORMAL,但 6.6 里面装的东西已经换血了.你要是拿"CFS 就是红黑树挑最左边那个 vruntime 最小的...

发布 0 条评论

进程一多,CPU 时间怎么分就成了核心问题.Linux 调度器这些年从 O(n) 到 O(1) 到 CFS 再到 EEVDF,名字换了几茬,骨架倒一直稳:调度类分层加每 CPU 运行队列.这篇把骨架看清楚 — 类怎么排,策略怎么落到类,优先级到底有几个体系 — 下一篇...

发布 0 条评论

有生就有死.进程退出这条路上挤满了经典问题:退出码怎么编码,僵尸到底占不占资源,孤儿谁管,exit 和 pthread_exit 什么区别.这篇把这些行为全部实测,内核侧的 do_exit 流程对着讲,顺便捡到一个意外收获:僵尸也会被过继. 这篇回答几...

发布 0 条评论

fork 复制进程,execve 把它腾空重装:地址空间,代码,数据,栈,全部换掉,PID 不变.这条"进程身份延续,内容全换"的组合是 Unix 哲学的地基.这篇拿一个程序 exec 另一个程序,前后地址空间摆在一起对比,再把内核塞给新程序的&quo...

发布 0 条评论

Linux 造进程只有一个系统调用家族:clone.fork 是 clone 的特例,pthread 是 clone 的另一种特例,vfork 是历史特例.这篇把"一个 clone,几种人生"讲清楚,附两组硬数据:fork 和线程的创建成本差多少,COW 的缺页数能不能和内存...

发布 0 条评论

内核眼里的进程是一个 task_struct,几千行的大结构,身份,亲属,内存,调度,文件,信号全在里面.这篇不逐字段背书,挑最常用的几组 — 状态,PID 体系,亲缘关系 — 全部在板上现场制造现场观察:一个测试程序同时造出睡眠,僵尸,停止三种状态,...

发布 0 条评论

系统调用是用户态和内核唯一的正门:一次受控的特权级切换,带着编号和参数进门,办完事拿结果出去.1.1 讲过 EL 分层,1.3 讲过异常向量,这篇把这条路径彻底走通 — 包括真的给内核加一个自己的系统调用,从修改表到用户态调通,一步不缺. ...

发布 0 条评论