字体:大 中 小
护眼
关灯
上一章
目录
下一章
第668章 致命的错误!
第(2/3)页
它会不停地在屏幕上打印字符‘A’。”
“任务B,也是一个死循环,它会不停地打印字符‘B’。”
他解释道:“在没有‘天枢’内核之前,如果我们先运行任务A,那么整个系统就会被任务A占死,屏幕上会永远是‘AAAAA……’,任务B永远没有机会运行。这就是我们之前遇到的‘死循环’。”
“但是现在,”黄建-功的眼中闪烁着自信的光芒,“我们在任务A和任务B的循环体内部,都加入了一行特殊的代码:`system_yield()`。这个函数,会主动调用我们刚刚烧录进去的`task_yield()`内核函数。”
“我们的预期是,当任务A打印一个‘A’之后,就会主动放弃CPU,让内核把控制权交给任务B。任务B打印一个‘B’之后,也主动放弃CPU,再把控制权交还给任务A。”
“所以,如果‘天枢’内核工作正常,我们在屏幕上看到的,将不再是‘AAAAA……’或者‘BBBBB……’,而是……”
“‘ABABABAB……’!”钱学敏替他说了出来,声音里充满了期待。
所有人都明白了。
这个简单的“ABAB”交替打印,背后代表的,是操作系统历史上最伟大的一步:协同式多任务!
它意味着,“盘古之心”将不再是一个一次只能干一件事的笨蛋,而是一个懂得“分享”和“协作”的,拥有初步智能的生命体!
“准备测试!”黄建功深吸一口气,下达了最后的命令。
他亲自操作,先调用了两次`task_create()`,在“天枢”内核中,创建了任务A和任务B。
然后,他敲下了启动指令。
“运行任务A!”
回车键按下。
整个实验室,死一般的寂静。
所有人的心脏,都提到了嗓子眼。
屏幕上,光标闪烁。
下一秒。
一个清晰的,绿色的字符,出现在屏幕左上角。
A
成功了!任务A成功运行了!
还没等众人欢呼,就在那个“A”出现的瞬间,黄建功编写的`system_yield()`被触发。
CPU的控制权,从任务A,跳转到了那段刚刚烧录进去的,神秘而伟大的“天枢”内核代码中!
内核代码开始执行。
它保存任务A的现场,将任务A的状态从“运行”改为“就绪”。
然后,它在任务队列里,找到了下一个等待运行的任务——任务B。
它加载任务B的现场,将任务B的状态从“就绪”改为“运行”。
最后,它一个跳转,将CPU的控制权,交给了任务B!
整个过程,发生在电光火石之间,肉眼完全无法察觉。
在所有人看来,就是那个“A”字刚刚出现……
紧接着,在“A”的旁边,又跳出了一个字符。
B
“成功了!”
“是B!是B!任务切换成功了!”
孙立国第一个尖叫起来,他激动地跳了起来,一把抱住了身边的同事。
实验室瞬间变成了欢乐的海洋!
“ABABAB……”
屏幕上,A和B两个字符,正在完美地,以一比一的频率,交替出现,向整个世界宣告着一个新纪元的到来!
这不再是“Hello, World!”那样的简单问候。
(本章未完,请翻页)
记住手机版网址:m.lewenwx.cc
上一章
目录
下一章