书嘛,总得挑几本硬骨头啃。这本,勉强算个中上。拆快递的时候我还挺期待,结果封面灰扑扑的,跟老家仓库门板似的。一翻开,好家伙,满纸章节号加术语。进程调度。信号量。死锁。内核态,用户态。单个看都认识,搁一块儿,嚯,直接焊成钢板了。我往椅子背上一靠,死盯第38页那张状态转换图。十分钟。脑子跟进了水一样嗡嗡响。不是看教材。真不是。那感觉,像在给甲骨文拓片,还得猜字。概念塞得太满,你不自己敲一遍代码,气儿都喘不匀。

能让我老老实实把屁股坐热的,全靠第三篇的实验。头两章的理论,铺垫得真够呛。像搭脚手架,看着高,摸不着地。直到你敲下命令,看 Linux 2.4.20 内核怎么转起来。那些飘在空中的词,啪,落地了。第一次写进程同步。fork() 一敲。父子进程跟分家兄弟似的,各干各的。挂断点。盯终端。PID 蹦出来,交错,干等,退出。到这一步,书上那句“同步是为了避免资源竞争”,才算活了。不再是考点。是屏幕上肉眼能看见的时间差。操作系统教啥?根本不是怎么驯服机器。是教你怎么给一锅乱码的指令排队。拿 2.4.20 练手,现在看是有点脱节。老古董嘛。但那种底层逻辑的笨拙感,真比现在那些封装完美的 API 管用。底细,就是这么摸出来的。

翻到“多线程与网络 TCP 通信”那节,外头天都泛白了。书里把三次握手掰开揉碎讲。我直接合上书。趿拉着拖鞋去厨房,灌了杯凉水。琢磨一下。人和人搭上线,不也这套路?先发包。对方确认。再回信。中间容不得瞎猜,更不能玩消失。以前总觉得沟通靠默契。扯淡。靠谱的交情,全赖明确的协议。TCP 不管你多急。它只管发 SYN,死等 ACK。平时那些鸡同鸭讲的误会,多半是有人想直接甩数据。连个握手都懒得做。这比喻听着挺美?真拿 TCP 的死板规矩去套人情世故,早被拉黑了。代码是代码。日子是日子。别搅和。

胡明庆写改内核那段,语气倒挺实在。他说那跟开颅手术差不多。每一刀下去,必须清楚会动哪块内存,哪条中断线。我手指头停在那儿了。平时老骂电脑卡、软件慢。真去扒拉背后的调度逻辑?没几个人干。操作系统说白了,就是个极度抠门的管家。不替你拍板先跑哪个程序。只管把时间片切匀。排好队。在底层死守平衡。这规矩不声不响,反倒踏实。但未必全是好事。现在资源卷成什么样了?这种“抠门”,真能把多线程程序逼出性能瓶颈。只是咱们普通用户,懒得深究罢了。

说真的,书里有些实验的调试步骤,写得真挺省纸。真撞上段错误。光靠那几句提示,能把人逼得想砸键盘。但就是这种“踩坑”的糙劲儿,让这书有了人味儿。它没忽悠你。没跟你扯看完就能当架构师。就是老老实实把路标钉地上:这儿调了文件系统接口。那儿碰了设备驱动。再往下,网络通信的大杂烩。你耐着性子,一步步踩过去。泥潭自己就干了。现在谁还愿意看这种不讨好的书?能硬啃下来的。多半是跟自己较劲。

终端里还躺着上次跑实验甩出来的日志。光标一明一灭。跟喘气似的。我早不琢磨怎么一口气啃完内核源码了。反正有些事,得等时间片轮转。有些交情,得熬过三次握手。有些卡住的状态。就等着信号量来解阻塞。系统有自己的节拍。代码跑不通时急得跳脚。跑通了,也就那样。生活,大概差不了太多。

电脑一合。屋里静得能听见主机箱风扇的嗡嗡声。屏幕黑下去前。最后定格的,还是那行 exit(0)。进程跑完了。生活里的线程,这才刚挂后台。慢慢跑呢。得。不矫情了。明天还得接着跟那些看不懂的报错死磕。