默认冷灰
24号文字
方正启体

第675章 真正的君权!

作者:来财来我们都发财本书字数:K更新时间:
    “一个睡着了的君王,要如何把权力抢回来?”


    黄建功提出的这个问题,像一块巨石,沉甸甸地压在每个人的心头。


    刚刚因为“抢占式”这个新概念而燃起的希望火焰,瞬间又被这盆冷酷的现实冰水,浇得摇摇欲坠。


    是啊。


    这才是问题的核心。


    在单核CPU的简单世界里,在任何一个时刻,都只有一个程序,是真正“活”着的,是真正占有着CPU的。


    当任务A在运行时,它就是此刻唯一的“王”。


    “天枢”内核,无论被设计得多么强大,在那个瞬间,它也和任务B、任务C一样,只是一段被存放在内存里的,冰冷的,没有生命的二进制数据。


    它本身,没有能力去干涉正在运行的任务A。


    这似乎是一个无解的死循环。


    想要“抢占”,内核必须是“活”的。


    但想要内核“活”过来,正在运行的任务A,又必须先“死”掉(放弃CPU)。


    “难道……要加一个CPU?”一个年轻的研究员异想天开地说道,“一个CPU专门跑任务,另一个CPU专门跑内核,用来监视第一个CPU?”


    这个想法立刻被否决了。


    “不行!”周老摇了摇头,“‘盘古之心’是我们倾尽所有才造出来的,再造一个,短期内绝无可能。而且,双核系统的复杂性,比我们现在遇到的问题,要高出好几个数量级!”


    实验室再次陷入了沉默。


    所有人都绞尽脑汁,试图从软件层面,找到一条可以“让睡着的君王自己醒来”的路径。


    “有没有可能,在编译环节做手脚?”孙立国提出一个想法,“我们用‘鲁班神斧’编译所有应用程序时,强制在每几行代码后面,都自动插入一条`system_yield()`调用?这样,就算程序自己写了死循环,也会被我们强制插入的代码给打断。”


    这个思路很巧妙,立刻引起了大家的讨论。


    “这……好像可行!”


    “这样一来,所有程序,都变得‘可控’了!”


    但钱学敏很快就指出了其中的问题。


    “这个方法,治标不治本。”她的声音很冷静,“第一,它会极大地降低程序的运行效率。本来一条简单的加法,可能会被我们强行插入的几十条内核调用指令拖慢上百倍。”


    “第二,也是最致命的。如果有人绕过了我们的‘鲁班神斧’,直接用机器码写了一个恶性程序呢?我们对它,就毫无办法了。我们的系统,依然是不安全的。”


    “我们需要的,是一种更底层的,更强制的,不受上层应用程序代码影响的……君权!”


    钱学敏的话,让众人再次冷静下来。


    他们意识到,任何试图从软件层面解决这个问题的方案,都有其局限性。


    因为软件,管不了正在运行软件的CPU本身。


    “君权……君权……”黄建功在黑板前踱来踱去,嘴里反复念叨着这个词。


    他的大脑在飞速运转。


    既然软件的道路走不通。


    那么……


    他的脚步猛地一顿,目光豁然转向了实验室的另一角。


    那里,是周老带领的“硬件协同组”的工作区域。


    “答案……一定在软件之外!”


    黄建功的声音,如同洪钟大吕,在每个人耳边响起。


    “当一个程序在运行时,唯一能打断它的,只有比它更高维度的力量!”


    “那就是……硬件!”


    “我们需要一个外力!一个不依赖于CPU当前正在执行什么指令的,独立的,可以从外部,强行中断CPU执行流程的……硬件信号!”


    硬件中断!


    这个计算机体系结构中最基本,也最重要的概念之一,如同闪电般,照亮了所有人的思维。


    他们之前所有的思考,都局限在CPU内部的指令流转上。


    他们忘了,CPU,并不是一个封闭的王国。


    它有无数的“城门”(中断引脚),可以接收来自外部世界(其他硬件设备)的信号。


    当一个中断信号传来时,CPU会立刻停下手中正在做的一切工作,不管那是一个死循环还是一个正常计算,它都会强制性地,跳转到内存中一个预先设定好的地址去执行。


    那个地址,就是“中断服务程序”的入口。


    “我明白了!”孙立国激动地一拍大腿,“我们只要把‘天枢’内核的一部分,注册成这个‘中断服务程序’。那么,当中断信号一来,CPU就会自动把控制权,交还给我们的内核!”


    “这样一来,‘睡着的君王’,就被强行‘唤醒’了!”


    “醒来之后,他就可以从容地,剥夺那个被打断的臣子的权力,然后决定,下一个该让谁上台!”


    思路,彻底通了!


    从“协同式”到“抢占式”的理论鸿沟,在“硬件中断”这个概念的桥梁下,被彻底填平。


    整个实验室,再次爆发出劫后余生般的巨大喜悦。


    这一次的喜悦,比之前任何一次都更加踏实,更加厚!


    因为他们知道,这一次,他们找到的是真正的,通往操作系统圣殿的,康庄大道!


    “好!好!好!”聂老总连说三个好字,他激动地走上前,紧紧握住黄建功的手,“需要什么样的硬件信号?怎么实现?立刻拿出方案来!”


    黄建功的目光,再次投向了周老。


    全场的目光,也都聚焦在了这位白发苍苍的硬件泰斗身上。


    现在,皮球,踢到了硬件组的脚下。


    他们需要找到,或者说,创造出那个能“唤醒君王”的,神圣的信号。


    黄建功走到周老面前,神情无比郑重。


    “周老,我们需要一个,可以周期性地,产生中断信号的设备。”


    “比如,每隔10毫秒,就发一个信号。每隔10毫秒,就发一个信号。”


    “这个信号,就像是时间的脉搏,一下,一下,匀速地,永不停歇地跳动。”


    “每一次跳动,都是君王行使权力的号角!都是内核重掌乾坤的时刻!”


    “我们把这个固定的时间间隔,称为……”


    黄建功转过身,在黑板上写下。


    “‘时间片’(Time Slice)!”


    “而那个能产生周期性脉搏的硬件,我们叫它……”


    “‘可编程间隔定时器’(Programmable Interval Timer,简称PIT)!”


    “周老。”黄建功看着他,一字一句地问道,“我们的‘盘古之心’,或者说,老师留下的那份‘创世圣经’里,有这个东西吗?”


    周老的脸色,在众人期待的目光中,一点一点地,变得凝重起来。
(←快捷键) <<上一章 投推荐票 回目录 标记书签 下一章>> (快捷键→)