第684章 时间的成本!
“我们必须,消除这种‘抖动’!”
黄建功的声音,斩钉截铁。
他不能容忍,他们亲手创造的这个“天枢”内核,带着这样一枚如同定时炸弹般的瑕疵,走出实验室。
一个不可靠的,不精确的操作系统,比没有操作系统,更加危险!
“怎么消除?”一个年轻的研究员,满脸困惑地问道,“上下文切换的开销,是物理存在的。我们总不能让CPU在切换任务的时候,不保存寄存器吧?”
“是啊,而且这个开销,还是动态变化的。我们怎么可能把它变成一个恒定的值?”
实验室里,刚刚才平息下去的紧张气氛,再次弥漫开来。
这个问题,比之前遇到的任何一个,都更加底层,更加棘手。
它触及到了软件与硬件交互的,最核心的区域。
众人议论纷纷,提出了各种各样的想法。
“我们能不能,从软件层面,去优化上下文切换的代码?把每一条指令都抠到极致,让它的执行时间,尽可能的短?”
“可以,但最多只能缩小开销,无法让它‘恒定’。只要任务的复杂性不同,开销就必然不同。”
“那……我们能不能,反过来,从硬件层面想办法?让‘盘古之心’增加一些专门用于快速保存和恢复现场的硬件指令?”
这个想法,立刻被周老否决了。
“不行!修改CPU的指令集,等于要重新设计整个CPU!这个工程量,比我们现在做的所有工作加起来,还要大十倍!我们等不起!”
所有的路,似乎都被堵死了。
他们好像面对着一个物理规律上的,无解的难题。
黄建功在黑板前,烦躁地来回踱步。
他的大脑,在飞速地运转。
消除“抖动”……
让切换开销“恒定”……
做不到。
既然做不到,那我们……能不能换一个思路?
他的脚步,猛地一顿。
一道全新的,甚至有些离经叛道的闪电,划过了他的脑海。
“如果……”
他缓缓地转过身,目光扫过每一个愁眉不展的专家。
“如果我们,承认这个‘成本’的存在呢?我们不试图去消除它,而是……去‘管理’它?”
“管理成本?”钱学敏的眼睛,瞬间亮了。
“对!”黄建功的思路,越来越清晰,他的语速也越来越快。
“我们为什么会觉得‘不公平’?是因为我们只给了每个任务10毫秒的‘工作时间’,却没有把它们的‘通勤时间’,算进去!”
他拿起粉笔,在黑板上,画了两个小人,A和B。
“现在,我们改变规则!”
“我们不再给每个任务,一个固定的‘时间片’。”
“我们给每个任务,一个固定的‘总预算’!比如说,也是10毫秒!”
“这个‘总预算’,包含了它的‘工作时间’,和它上一次的‘通勤时间’!”
他在黑板上写下了一个公式:
工作时间 = 总预算 - 上下文切换开销
“每一次,当内核准备调度一个新任务时,它首先,要‘测量’出,这一次上下文切换,到底花了多少时间。”
“比如,这一次切换,花了73微秒。那么,内核就从10000微秒的总预算里,减去73微秒。”
“然后,它告诉即将运行的任务:‘你的工作时间,不是10000微秒了,而是9927微秒!’”
“内核会设置一个新的,更短的定时器中断。时间一到,就立刻剥夺它的权力!”
“这样一来!”
黄建功的声音,陡然拔高,充满了难以抑制的兴奋。
“无论每个任务的‘通勤成本’是多少,或高或低,我们都从它的总预算里,精确地扣除!”
“最终,保证了每一个任务,真正拿在手里的,纯粹的‘CPU工作时间’,是绝对公平的!”
“我们,用软件的‘精算’,抹平了硬件的‘不公’!”
“轰——”
当黄建功阐述完这个天才般的构想时。
整个实验室,先是死一般的寂静。
随即,所有人都像看妖怪一样,看着黄建功。
他们的脸上,写满了震撼,不解,以及……狂热的崇拜!
这个思路,太……太不可思议了!
它完全跳出了之前“消除抖动”的思维定式。
它承认了物理世界的不完美,然后用一种更加高维的,充满了数学和控制论思想的智慧,在软件层面,重建了一个完美的,公平的虚拟世界!
这已经不是简单的编程了。
这是在制定法则!
这是在扮演上帝!
“我的天……”孙立国张大了嘴巴,喃喃自语,“动态调整时间片……这……这简直是神来之笔!”
“用软件的确定性,去对抗硬件的随机性……”钱学敏也在低声重复着这句话,她的眼中,异彩连连,闪烁着棋逢对手的,极致的兴奋。
这个构想,彻底打开了她脑中的一扇新的大门。
然而,兴奋过后,一个新的,更加现实的问题,摆在了所有人面前。
钱学敏抬起头,看着黄建功,她的表情,前所未有的严肃。
“建功,这个想法很伟大。”
“但是,它也带来了一个巨大的难题。”
“我们……要如何‘测量’那个上下文切换的开销?”
“CPU内部,并没有一个现成的秒表,可以让我们去掐算这个时间。”
“我们要如何,在微秒级别,去精确地度量……时间的成本?”
(https://www.shubada.com/105253/39474558.html)
1秒记住书吧达:www.shubada.com。手机版阅读网址:m.shubada.com