黄建功的声音,带着一丝不易察觉的沙哑。
他敲下了回车。
屏幕上,光标闪烁。
A
字符'A'出现了。
任务A开始运行。
紧接着,`system_yield()`被调用。
控制权交给了“天枢”内核。
内核在自己的专属堆栈上,行云流水地完成了保存任务A上下文(包括它私有堆栈的指针),选择任务B,恢复任务B上下文(包括它私有堆栈的指针)等一系列操作。
然后,控制权交给了任务B。
屏幕上,在'A'的旁边,出现了第二个字符。
B
任务切换,成功!
所有人的拳头,都下意识地握紧了。
最关键的时刻来了。
接下来,任务B也会调用`system_yield()`,内核需要将控制权,再交还给任务A。
这一次,任务A会从它自己的,未被污染的私有堆栈中,恢复它自己的返回地址。
还会出现“内核恐慌”吗?
在所有人死寂般的注视中,屏幕上,跳出了第三个字符。
A
紧接着是第四个。
B
第五个。
A
第六个。
B
“ABABABABABAB……”
那串代表着协同式多任务处理的,美丽的字符串,再次出现在屏幕上。
一秒。
五秒。
十秒。
这一次,它没有在第十二秒时戛然而止。
二十秒。
三十秒。
一分钟。
屏幕上的“ABAB”字符串,已经打印了满满好几行,而且还在不知疲倦地,稳定地,一行一行地向下延伸。
没有红屏。
没有蜂鸣。
没有那行如同梦魇般的“KERNEL PANIC”。
成功了。
这一次,是真的成功了。
“呜……”
一个年轻的研究员,再也抑制不住自己的情绪,他捂着脸,蹲在地上,发出了喜极而泣的呜咽声。
这哭声,像一个信号。
压抑了二十四小时的紧张、屈辱和期待,在这一刻,轰然爆发。
“成功了!”
“我