测试环境准备就绪。
所有人的目光,都聚焦在那个专门用于显示结果的“输出”窗口上。
在旧的、非抢占式的内核下,如果同时启动进程A和进程B,结果是可预见的。
由于进程A先启动,它会立刻陷入无限循环,霸占所有的计算资源。
输出窗口上,将会出现一长串永无止境的“A”,而进程B,将永远没有机会运行,那个代表它的字符“B”,将永远不会出现。
这就是协同式多任务的脆弱性。
而现在,他们即将验证的,是那七行自动化代码,是否能改变这一切。
“启动测试!”
随着黄建功一声令下,两道指令同时发出。
进程A,启动!
进程B,启动!
所有人都屏住了呼吸,死死盯着那个空白的输出窗口。
下一秒。
第一个字符,出现了。
A
紧接着,是第二个,第三个……
A
A
A
A
A
……
一连串的“A”,如同雨点般,迅速占满了输出窗口的第一行。
看到这一幕,一些年轻的工程师,心头猛地一沉。
“失败了?”
“怎么还是这样?进程B呢?”
紧张的气氛,开始在人群中蔓延。
难道,他们呕心沥血写出的那七行代码,存在着致命的逻辑错误?
只有黄建功和钱学敏等少数几位核心专家,依旧面色沉静。
他们的目光,没有看输出窗口,而是看向了“调试模式”下的数据星空。
在那里,他们能清晰地看到,那个与【调度中心】绑定的“当前进程运行心跳数”计数器,正在随着淡金色波纹的每一次扩散,飞速地向上跳动。
1……2……3……
……50……
……80……
……99……
所有人的心,都提到了嗓子眼。
就是现在!
当那个计数器的数字,从“99”,跳到“100”的瞬间!
奇迹,发生了!
嗡!
那七行被镌刻在【OnWorldTick】事件中的神圣代码,被触发了!
在数据星空中,一道代表着“内核级中断”的红色指令流,从【调度中心】猛地射出!
它,精准地,命中了那个,之前还在,疯狂闪烁的,代表“进程A”的,绿色光点!
进程A的光芒,在一瞬间,凝固了。
紧接着,它的所有“上下文”信息,被完整地打包,存入了它的PCB档案袋中。
它的状态,从“运行中”,瞬间,切换为了“就绪”。
然后,它被调度器,毫不留情地,踢到了“就绪队列”的队尾,去排队了。
与此同时。
那个,一直,在队列头部,默默等待的,“进程B”的光点,被选中了。
它的PCB档案被打开,所有沉睡的“上下文”信息,被重新加载。
它的状态,从“就绪”,切换为了“运行中”!
整个过程,快如闪电,充满了不容置疑的系统级权威!
这,就是“抢占”!
这,就是,时间的第一次,强制切割!
而在,那个,所有人关注的“输出”窗口上。
就在,那一长串“A”的末尾。
一个,全新的字符,终于,破土而出!
B
它出现了!
在被压制了100个心跳周期之后,进程B,终于,在调度器的强制干预下,夺回了,属于它的,运行权!
“出来了!出来了!是B!”
人群中,爆发出,一声,压抑不住的,惊呼!
紧接着。
更多的“B”,开始,疯狂地,涌现出来。
B
B
B
B
B
……
它,同样,以,极快的速度,打印了,整整一行。
然后,当,又一个100心跳周期,过去之后。
那道,红色的,内核级中断指令,再次,出现!
这一次,它,精准地,命中了,正在运行的“进程B”。
“进程B”被剥夺了运行权,乖乖地,回到了队尾。
而,排在队首的“进程A”,则,重新,获得了,世界的掌控权。
于是。
在输出窗口上,众人,看到了,让他们,永生难忘的一幕。
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA……
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB……
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA……
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB……
……
“A”和“B”,就像两个,纪律严明的士兵。
在,调度官的,号令下,进行着,精准无比的,交替报数。
一个不多,一个不少。
每一次切换,都,发生在,第100个“世界心跳”到来的,那一瞬间。
误差,为零!
这,已经,不是,简单的,程序运行了。
这,是,秩序!
是,法则!
是,由他们,亲手,建立起来的,属于这个世界的,时间法则!
“成功了……”
黄建功,闭上了眼睛,感受着,那,完美交替的,数据韵律。
他的声音,带着,一丝,完成旷世之作后的,疲惫和,巨大的,满足。
“我们……成功了。”
雷鸣般的,欢呼声,在这一刻,响彻了,整个昆仑沙盘。
所有科学家,都,拥抱在了一起。
他们,笑中带泪,泪中带笑。
他们,知道,从今天起。
“天枢”内核,将,不再是,那个,需要他们,小心翼翼,手动维护的,脆弱婴儿。
它,拥有了,自己,强劲的,心跳。
拥有了,自己,不容置疑的,意志。
它,活了!