“女娲”计划,正式启动。
“人工智能与算法研究院”那栋刚刚完成内部装修的大楼,从此,便成为了整个“双龙中心”里,最神秘,也最安静的地方。
尤其是,位于三楼的,那间挂着【“补天”行动-RTOS内核攻关组】门牌的,核心实验室。
这里,气氛庄重得,如同古老的寺庙。
陈浩,这位来自中科大少年班的,年仅十九岁的天才组长,正站在一面巨大的白板前。白板上,密密麻麻地,抄录着一段,只有几十行,却充满了各种“MOV”、“INT”、“JMP”指令的,晦涩难懂的X86汇编代码。
“……同志们,我们来看这里。”
陈浩指着其中一行代码“INT 0x21”,表情,是前所未有的严肃。
“根据总工给的‘地图’和我们这几天的破译,这行指令,就是整个Linux内核,与DOS系统进行交互的‘总入口’!所有的系统调用,都必须通过这个‘中断门’。所以,我们未来要做的‘抢占式’调度,就必须,从这里,截断它!”
台下,坐着四个,同样年轻,但眼中却闪烁着智慧光芒的核心组成员。
他们在听着,在记录,在思考。
这,就是他们独创的,“代码讲经”式的学习方法。
那份,由李晓宇提供的,“魔改版”Linux 0.01内核源代码,就是他们的“圣经”。
他们将这份“圣经”,分解为“进程调度”、“内存管理”、“中断处理”、“文件系统”等数个章节。
每人,负责一个章节。
任务,就是用一周的时间,不借助任何外部资料,只凭借自己的智慧和那份“地图”,去逐行逐句地,“翻译”和“理解”自己所负责的那部分“天书”。
然后,在每周的“讲经大会”上,轮流上台,将自己一周的参悟心得,分享给所有人。
这种方法,虽然原始,甚至有些笨拙。
但对于攻克“操作系统内核”这个,在90年代,对中国工程师来说,几乎是神话般存在的,庞然大物,却又是唯一且最有效的办法!
然而,神话,之所以是神话,就是因为它总会在最关键的地方,设下一道凡人无法逾越的门槛。
在一次,关于最核心的,“进程调度(schedule)”函数的“讲经”中,整个“补天”小组,陷入了前所未有的,巨大的困境。
“……想不通!完全想不通!”
陈浩烦躁地,在白板上,画着代表进程切换的流程图,“按照代码的逻辑,这个schedule函数,只有在当前进程,主动放弃CPU,或者时间片耗尽时,才会被调用。这……这是一种‘协作式’的多任务,而不是总工所说的,可以强制剥夺CPU使用权的,‘抢占式’啊!”
“是啊!如果一个进程,自己写了个死循环,不主动退出,那整个系统,不就直接卡死了吗?这怎么能用到工业控制上?”
“问题到底出在哪里?”
激烈的争论,持续了整整一个下午,但所有人都百思不得其解。
他们感觉,自己仿佛走进了一个由代码构成的逻辑上的死胡同。
就在众人,都一筹莫展士气低落之时。
实验室的门,被轻轻推开了。
李晓宇,端着一杯茶,如同散步般,走了进来。
他没有说话,只是静静地听了一会儿他们的争论。
然后,他走到白板前在那张被陈浩画得充满了各种问号的流程图中央。
用红色的笔,轻飘飘地,只写下了两个字。
“时钟。”
说完,他便转身,如同一个,事了拂衣去的,绝世高人,再次,悄然离开。
“时钟?”
陈浩呆呆地,看着白板上那两个,无比简单的字,喃喃自-语。
他大脑中,那根紧绷的弦,仿佛被什么东西,猛地,拨动了一下!
时钟……中断!
时钟中断!
“我……我明白了……”
一道如同创世闪电般的光芒,瞬间,劈开了他脑海中所有的迷雾!
他猛地,冲回电脑前,双手,如同幻影般,在键盘上飞舞,迅速地,翻到了那段,关于“中断处理”的汇编代码!
“你们看!”他的声音,因为极致的兴奋,而剧烈颤抖,“我们都忽略了!这里!‘INT 0x20’!这是……这是PC主板上,那颗8253定时芯片,每隔18.2毫秒,就会,雷打不动地强制性地向CPU发出的一次‘时钟中断’信号!”
“而这个中断的处理程序,在每次执行完计数之后,它的最后一步,就是……”
“JMP schedule!”
“它……它会强制性地,去调用一次我们那个百思不得其解的‘进程调度函数’!”
“天啊……”
陈浩,激动得,几乎要哭了出来!
“这……这就是‘抢占’的,灵魂!这就是,上帝的,心跳啊!”
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!