书吧达 > 四合院开局四八,八岁带妹逃荒 > 第683章 完美!

第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