光标死盯着。报错信息跟倒水似的往下淌。我手悬在键盘上,半天,就半天,敲不下去一个回车。大三那阵子,冬天冷得刺骨。头一回翻开《操作系统原理实验》。封面还没捂热,目录?扫都没扫。心里直打鼓。这书哪讲究什么起承转合啊?冷冰冰的实验步骤,C语言内核调用的一长串,再加上周苏老师排好的25个练习。就这些。读它?做好掉层皮的心理准备吧。

但你说邪门不邪门?这种死板劲儿,反倒成了根绳子。拽着你,一步,一步,往下走。

记得“进程描述与控制”那道题。照猫画虎敲并发代码。课上听周苏老师扯临界区、信号量、互斥同步,讲得是真顺溜。行云流水?落地就跑。好家伙,终端里不是段错误直接崩盘,就是两头进程死锁。CPU飙到100%。风扇转得跟直升机似的。主机卡得连鼠标都拖不动。对逻辑。翻书。一行行扒。心里憋屈,直想骂娘。干脆合上。去厨房灌了口凉白开。端着杯子回来,突然咂摸出点味儿。操作系统,核心真不是“控制”。是“让路”。不跟你较劲非要一把梭哈。把时间切片。轮流喂。该让就让它。该歇就歇。你以为你在调度机器?错。是机器在教你怎么认怂。

顺着思路往下翻。到“存储管理”那几页。我愣了。页面置换算法,说穿了就一句:不常用的数据,赶紧踢去磁盘。腾地儿给眼前的紧要差事。听着干巴巴的术语。搁生活里,不就是成年人被迫练出来的“断舍离”吗?内存就那点G。脑子也就装那么多事。老抓着陈年旧账不撒手?过期的情绪舍不得扔?新活儿根本挤不进来。但话说回来。这算法看着高效,换页开销其实不小。频繁读写磁盘,照样卡。生活不也这样?硬做减法痛快。可偶尔翻翻旧账,理理旧情绪,说不定也能攒出点底牌。非得时刻追求最优解?未必。慢半拍。反而能喘口气。

周苏老师出题,步子确实小。每个练习甩两三步。不急着把标准答案喂到嘴边。这调调不紧不慢。反倒让人心里有谱。不用指望一口吞下整个内核。盯着眼前那几行代码就行。看它怎么伸手要内存。怎么切换上下文。一步步捋。哪儿卡壳?立马现原形。书上的指引列得清楚。环境怎么搭?工具备齐?预期结果啥样?一步不落。可真到自己搭环境。坑全冒出来了。内核版本差个0.1。报错能淹死人。漏引个头文件。编译直接干耗。起初烦得想摔键盘。琢磨琢磨。算了。不能全怪书。也怨不着自己。书上理论光鲜。手里实践带刺。操作系统本来就跟突发中断、软件异常打交道。它塞给我们的,大概就是怎么在乱成一锅粥时,自己理出头绪。技术这东西?从来不是按图索骥。边踩坑。边长记性。

敲完最后一行。合上电脑。外头天都快擦亮了。屏幕一暗。反照出我那张快散架的脸。咱们的活法,跟后台跑的进程有啥区别?在不同活儿间切来切去。抠内存。抠带宽。偶尔撞车争资源。偶尔硬着头皮做垃圾回收。只要没彻底死机。慢慢调度。总能把自己那点事儿跑完。窗外城市照样在转。红绿灯没声儿指挥车流。服务器闷头吞吐成千上万的请求。系统还在转。这就成。