JianFeeeee
cb32032f76
feat(scheduler)!: 中断/排队两类别模型 + 插件声明 L1-L3、L4 内核独占
用户澄清推翻了早期设计的三处前提,本提交按新模型重做调度核心(行为有意变化):
1) 类别由注入 API 决定,与通道名无关
- InjectInterrupt* -> TaskInterrupt(带级别,可被严格更高级中断打断)
- InjectText*/InjectInputSync*/内核自循环 -> TaskQueued(无级别,可被任何中断打断)
- 删除按通道名推断的 taskLevel():qq 走 InjectInterruptTextOpts,本就是中断
2) 级别只属于中断
- 插件在 InjectOptions.Priority 声明 L1-L3(空/非法降级 L1,声明 L4 夹到 L3)
- L4 内核独占:新增 raiseKernelInterrupt(panic / selfip);requestKernelPreempt 不夹取
- panic 现在产生一条带 kernel 标记的 L4 中断;L4 自身 panic 不再产生新 L4(防自我放大)
3) 选择结构:四容器固定次序,删除统一比较器
- immediate(抢占者立即运行)-> 中断队列 L4..L1 -> 栈顶(与队头比级别) -> 排队 FIFO
- 删除 pickTaskIndex/taskBefore 与“同级 pending 优先”补丁(根因是抢占者进了队列)
- 中断栈上界改为结构推论 = 4(= 中断级数);删除“超限转 pendingInterrupts”降级
公开 SDK(feature 分支有意新增,纯追加):InjectOptions.Priority + PriorityL1/2/3;
内核 io / proc 桥 / 插件模板同步透传。
设计稿 §2/§3/§4.1/§6.3/§9/§11/§12/§13/§15 按新模型重写。
验收:go build/vet 干净;go test ./... 37 包 ok 0 FAIL;-race 全绿;
e2e(抢占-挂起-恢复)+ 压力(200 排队 + 50 中断,L1/L2/L3 轮转)通过。
2026-09-13 07:00:51 +08:00
..
2026-09-12 12:42:43 +08:00
2026-09-10 18:54:36 +08:00
2026-09-10 18:54:36 +08:00
2026-09-10 21:18:16 +08:00
2026-09-10 10:21:50 +08:00
2026-09-10 17:56:50 +08:00
2026-09-11 20:31:50 +08:00
2026-09-13 07:00:51 +08:00
2026-09-12 12:42:43 +08:00
2026-09-02 19:07:14 +08:00
2026-09-02 19:07:14 +08:00
2026-09-02 19:07:14 +08:00
2026-09-02 19:07:14 +08:00
2026-09-10 17:56:54 +08:00
2026-09-10 17:56:54 +08:00
2026-09-10 21:18:16 +08:00
2026-09-04 18:43:05 +08:00
2026-09-10 18:54:36 +08:00
2026-09-02 10:41:18 +08:00
2026-09-02 10:41:18 +08:00
2026-09-11 20:31:50 +08:00
2026-09-10 21:28:56 +08:00
2026-09-03 12:37:58 +08:00
2026-09-03 12:37:58 +08:00
2026-09-12 12:42:43 +08:00
2026-09-12 12:42:43 +08:00
2026-09-10 23:26:16 +08:00
2026-09-10 10:21:50 +08:00
2026-09-10 10:21:50 +08:00
2026-09-10 10:21:50 +08:00
2026-09-10 10:21:50 +08:00
2026-09-02 10:41:18 +08:00
2026-09-12 12:42:43 +08:00
2026-09-02 13:03:57 +08:00
2026-09-02 13:03:57 +08:00
2026-09-02 19:07:14 +08:00
2026-09-11 20:31:50 +08:00
2026-09-02 10:41:18 +08:00
2026-09-10 11:42:22 +08:00
2026-09-11 20:31:50 +08:00
2026-09-02 11:34:33 +08:00
2026-09-10 11:42:22 +08:00
2026-09-03 12:37:58 +08:00
2026-09-10 17:56:50 +08:00
2026-09-02 10:41:18 +08:00