第683章 完美!
“节奏不对劲?”
孙立国这句带着不确定性的疑问,像一盆冷水,瞬间浇灭了实验室里刚刚燃起的狂热。
所有人的欢呼声,戛然而止。
黄建功立刻从巨大的喜悦中抽离出来,目光如鹰隼般,重新聚焦在屏幕上。
“哪里不对劲?”
屏幕上,字符依旧在稳定地输出。
A、B、C、D四个字符,轮流出现,中间夹杂着一段属于任务X的,无声的停顿。
从宏观上看,这个节奏,似乎……没什么问题。
“我……我也说不好。”孙立国的眉头锁得更紧了,“就是一种感觉。好像每一次‘ABCD’循环的间隔,不是完全一样的。”
“有时候快一点点,有时候,又慢一点点。”
“这个‘一点点’,非常非常微小,几乎感觉不到。但是,看久了,就觉得这个节拍……有点‘晃’。”
有点“晃”?
这个形容词,让所有人都感到了困惑。
一个老专家走过来,仔细看了半天屏幕,摇了摇头。
“小孙,是不是你看错了?我觉得很稳定啊。每一次都是四个字符,然后一个停顿,非常规律。”
“是啊,可能是你太紧张了,眼睛花了。”
众人再次倾向于,这只是一个错觉。
毕竟,在经历了这么多的大起大落之后,每个人的神经都绷得像一根即将断裂的琴弦。
然而,黄建功没有说话。
他相信孙立国的直觉。
这个年轻人,有着超乎常人的,对数据和逻辑节律的敏感度。
之前那个幽灵般的‘A’,就是他第一个发现的。
黄建功没有去争辩,他直接走到了主控台前。
“把日志系统打开。”他的声音,冷静得没有一丝波澜,“把每一个任务的开始执行时间,和被中断的时间,都给我用微秒级的精度,打印出来。”
“我们不靠感觉。”
“我们,用数据说话。”
“是!”
负责测试的工程师,立刻开始修改测试脚本。
很快,带有详细时间戳日志的测试,重新开始。
这一次,屏幕上不再是简单的字符流。
而是密密麻麻的,夹杂着字符的数据。
[ 0.050012] Task A start.
A
[ 0.060008] Task A preempted. Task B start.
B
[ 0.070015] Task B preempted. Task C start.
C
[ 0.080011] Task C preempted. Task D start.
D
[ 0.090018] Task D preempted. Task X start.
[ 0.100025] Task X preempted. Task A start.
A
...
日志,清晰地记录下了每一次任务切换的,精确到微秒的时间点。
所有人都围了过来,死死地盯着这片数据的海洋。
刚开始,没有人看出问题。
每一次任务切换,都间隔了大约10000微秒,也就是10毫秒。
这和他们设定的时间片,是完全一致的。
“你看,小孙,时间是对的。”那个老专家指着屏幕,笑着说,“每一次中断,都非常准时。”
孙立国没有说话,他只是死死地盯着每一行日志后面的,那个微秒级的数字。
12... 8... 15... 11... 18... 25...
这些数字,代表着每一次中断响应和任务切换,所消耗的,额外的时间。
突然!
他的瞳孔,猛地一缩!
他指着屏幕上,两行相隔了十几页的日志。
“看这里!”
众人立刻顺着他的手指看去。
第一行日志:
[ 2.350015] Task D preempted. Task X start.
第二行日志:
[ 2.360088] Task X preempted. Task A start.
“看!”孙立国的手指,因为用力而有些发白,“这一次,从任务X启动,到它被抢占,总共花了多少时间?”
黄建功立刻心算出来。
“10073微秒。”
“是的!”孙立国又翻到另一页。
“再看这里!”
[ 3.110011] Task C preempted. Task D start.
[ 3.120021] Task D preempted. Task X start.
“这一次呢?从任务D启动,到它被抢占,花了多少时间?”
黄建功再次心算。
“10010微秒。”
10073微秒。
10010微秒。
两个数字,清晰地摆在所有人面前。
实验室里,瞬间陷入了死一般的寂静。
所有人都明白了。
孙立国的感觉,是对的。
节拍,真的在“晃”!
虽然每一次中断的“钟声”,都是准时在10毫秒敲响的。
但是,从“钟声”敲响,到内核完成现场的保存、新任务的选择、现场的恢复,再到新任务真正开始执行第一行代码……
这个过程,这个被称为“上下文切换”(Context Switch)的过程,它本身,是需要消耗时间的!
而这个时间,不是恒定的!
当切换的对象,是任务D这种“良民”时,它需要保存的“现场”很简单,所以切换开销小,只花了10微秒。
当切换的对象,是任务X这种“逆贼”时,它正在CPU内部进行着极其复杂的空转,寄存器状态瞬息万变,它需要保存的“现场”要复杂得多,所以,切换的开销,就暴增到了73微秒!
这个几十微秒的差距,对于普通人来说,完全无法察觉。
但对于一个追求极致精确和稳定的操作系统内核来说。
这是一个,隐藏在完美之下的,致命的瑕疵!
“原来……是这样……”黄建功喃喃自语。
他感觉自己的后背,冒出了一层冷汗。
他们考虑了“抢占”,考虑了“时间片”,却忽略了“抢占”这个动作本身,是有成本的。
而且,这个成本,还是浮动的!
这就好像,一个国家的法律,规定了每个人每天工作8小时。
但是,从A的家里,走到B的工厂,这个“通勤时间”,是没有被计算在内的。
而且,A住得近,通勤只要10分钟。
B住得远,通勤要一个小时。
长此以往,整个社会的“公平”,就在这不被计算的“通勤成本”中,被悄无声息地,侵蚀了。
“这个问题……很严重。”钱学敏的脸色,也变得无比凝重。
“现在,任务少,负载低,这个几十微秒的‘抖动’,还不明显。”
“但是,将来我们的系统,要同时运行成百上千个任务。这些微小的‘不公’,会不断地累加,放大。”
“最终,可能会导致某些需要精确时间控制的关键任务,彻底错过它的执行窗口。”
“比如,一颗正在飞行的导弹,它的姿态调整程序,如果因为这种‘抖动’,晚了几十微秒才执行……后果,不堪设想!”
钱学敏的话,让在场的所有人,都倒吸了一口凉气。
刚刚才取得的,足以载入史册的巨大成功。
在这一刻,仿佛又被蒙上了一层,不祥的阴影。
他们爬上了一座高峰,却发现,在更高,更远的地方,还有一座更加险峻,名为“精确”的,雪山之巅。
(https://www.shubada.com/105253/39474559.html)
1秒记住书吧达:www.shubada.com。手机版阅读网址:m.shubada.com