第十章 编译器狂魔
  方泽比左城想像中瘦。
  一米八几的个子,体重估计不到一百三,颧骨突出,眼窝微陷,整个人像是被代码抽乾了水分。但他的眼睛很亮——那种长期高强度思考的人才有的亮度,安静时像两颗灭了的灯泡,一旦聊到技术,瞬间就能亮起来。
  周四晚上,校门口的烧烤摊。张磊做东,点了一桌子串。
  方泽坐在左城对面,面前的啤酒没怎么动,倒是把烤馒头蘸著辣椒酱吃了三个。
  “张磊说你们搞了个工作室,在论坛上接技术单子?“方泽的声音不大,语速偏慢,像是每句话出口前都在脑子里编译过一遍。
  “对,小打小闹。“左城没急著推销,先递了个话头过去,“我在论坛上看了你那个微內核项目,有个地方想请教——你的任务调度器用了优先级继承来解决反转问题,但我注意到你没用常规的优先级天花板协议,而是自己设计了一套动態继承链。为什么?“
  方泽的眼睛亮了。
  “优先级天花板协议太粗暴了。“他放下馒头,手指开始在桌面上比划,“它直接把低优先级任务的优先级拉到最高,確实能防反转,但会造成不必要的抢占延迟——高优先级任务在等待期间,其他中间优先级的任务全被压住了,系统吞吐量直接掉。“
  “所以你用动態继承链来做精確控制。“
  “对。只继承直接依赖链上的优先级,不波及无关任务。这样反转问题解决了,吞吐量也没有明显损失。“方泽说到这里顿了一下,看了左城一眼,“你能看出这个设计差异,说明你读代码读得很细。你是搞嵌入式的?“
  “不算是,信號处理方向。但嵌入式的东西一直在关注。“
  “信號处理?“方泽想了想,“那你应该知道实时信號採集对作业系统调度的要求有多苛刻——中断响应延迟超过五微秒,採样数据就可能丟帧。我那个微內核的中断响应目前能做到三微秒以內,但我觉得还有压缩空间。“
  “三微秒已经很强了。“左城说的是实话。商用实时作业系统的中断响应通常在五到十微秒,方泽一个人手搓的微內核做到三微秒,已经是专业级別的水准。
  两个人从调度器聊到內存管理,又从內存管理聊到中断向量表的优化。张磊和刘伟完全插不上话,只能默默吃串,偶尔交换一个“听不懂但感觉很厉害“的眼神。
  聊了將近四十分钟,左城对方泽的技术水平有了清晰的判断——这个人在嵌入式系统方面的理解深度,已经不输很多工作三五年的工程师了。而且他不是死磕技术的书呆子,架构设计的品味很好,知道什么地方该精细、什么地方该取捨。