字体:大 中 小
护眼
关灯
上一章
目录
下一章
第670章 活过来的盘古之心!
第(2/3)页
旧的逻辑是:`PUSH`(所有寄存器压入公共堆栈) -> 保存SP -> 切换任务 -> 恢复SP -> `POP`(从公共堆栈弹出)。
新的逻辑是:保存当前任务的SP到它的PCB -> 将SP指向内核自身的一个临时堆栈 -> 在内核堆栈上完成所有后续操作(比如选择下一个任务) -> 从下一个任务的PCB中,读取它私有的SP -> 将SP切换到下一个任务的堆栈 -> `POP`(从新任务的私有堆栈中恢复它的寄存器)。
这个改动,意味着“天枢”内核,从此拥有了自己专属的、神圣不可侵犯的工作空间(内核堆栈)。
它不再与普通任务“同流合污”,而是真正站在了一个更高维度,以上帝视角,去管理和调度下方的芸芸众生(任务)。
这才是真正的“调度者”该有的姿态!
时间一分一秒地过去。
键盘的敲击声,构成了实验室的主旋律。
没有人感到疲惫。
因为所有人都清晰地感觉到,他们正在见证一个伟大生命的,第二次,也是真正的诞生。
十个小时后,代码重写完成。
“编译!”
“链接!”
“烧录!”
一连串的指令,行云流水。
当新的“天枢”内核V0.1.1版本,被再次烧录进“盘古之心”的ROM时,所有人的心,又一次悬了起来。
这一次,会成功吗?
黄建功的额头上,再次渗出了汗珠。
他深吸一口气,目光扫过屏幕上那段熟悉的测试代码。
任务A:循环打印'A',然后调用`system_yield()`。
任务B:循环打印'B',然后调用`system_yield()`。
没有变化。
决胜的关键,全在那看不见的,新烧录进去的内核之中。
“开始测试。”
黄建功的声音,带着一丝不易察觉的沙哑。
他敲下了回车。
屏幕上,光标闪烁。
A
字符'A'出现了。
任务A开始运行。
紧接着,`system_yield()`被调用。
控制权交给了“天枢”内核。
内核在自己的专属堆栈上,行云流水地完成了保存任务A上下文(包括它私有堆栈的指针),选择任务B,恢复任务B上下文(包括它私有堆栈的指针)等一系列操作。
然后,控制权交给了任务B。
屏幕上,在'A'的旁边,出现了第二个字符。
B
任务切换,成功!
所有人的拳头,都下意识地握紧了。
最关键的时刻来了
(本章未完,请翻页)
记住手机版网址:m.lewenwx.cc
上一章
目录
下一章