其他
何处觅得活水来如果说人生是用90%的平淡时间等待那10%的精彩,那么上周末在桃花源度过的50多个小时便是我今年一直期待着的那份精彩。从桃花源返回有几天了,但是我的心似乎还留在那里,思绪还常常转移到那里。有时是回想起几天前看到的真实景象,有时是设想离开那里后它变得如何,连日的春雨过后,山谷中的溪水是不是又大了一些?那里的桃花是否还在盛开?(一)这次的桃花源之行,是从今年春节就开始准备的(有一种爱叫桃花源)。上周日我带着一大箱《软件简史》预览本从上海出发,开始了这次朝圣之旅。在南京停留几日后,周四(2023年3月16日)19:25,我乘坐的D3197从南京南站准时发车,桃花源之行真正开始。我去过庐山多次,但以前大多是从上海出发(也有一次从珠海出发),唯有这次从南京出发,走的路线明显不同,路上经过芜湖、潜山、安庆这些我向往很久但还未曾去过的一些小城。安庆曾经是安徽的省会,说小城可能不合适。车过安庆时,我透着车窗瞭望了一下夜幕下的城市,的确有一些“大”城市的特征。周四22:20,D3197准时到达庐山站。2013年第一次游庐山就是到的庐山站,说起来刚好10年了。那次同行的主要是Intel的同事。下了车后,我才意识到,虽然名字没有变,现在的庐山站和10年前的庐山站已经完全不同。更准确的说,新的庐山站还没有完全建好,东西两个出口只投入使用一个,而且使用的是与我希望相反的西出口。考虑到桃花源的山路比较窄,晚上上山不方便,我事先便在山下订了个酒店。根据地图订在了庐山站附近。但没有想到的是,可以选的酒店都是在高铁站的东出口附近。酒店标的距离也是按东出口算的。而事实上,东出口还没有建好。所以当我走出高铁大厅,打开高德,确认了一下位置后,本来可以步行到酒店的想法成为泡影。有黑车司机上来搭话,被我拒绝。在高德里下单后,有司机很快接单,2分钟后上车。车子开了大约10分钟,从高铁的西出口绕道了东出口附近的酒店。这个小波折证明了那句经典的话:“纸上得来终觉浅,绝知此事要躬行。”换到这个时代,这句话便是:“网上得来终觉浅,绝知此事要躬行。”到了酒店后,我听到窗外的雨声,雨比之前大了。周五一早六点多,我便自然醒了,看窗外,仍有些阴天,但是雨已经停了,地面被雨水洗的干干净净。早上七点多,我出宾馆买水果,准备带上山,课间休息时给大家吃。此时,与我相同目的地的格友们也开始忙碌,特别是选在在九江站乘坐接站车的。九江站的计划接站时间是8:00。上午8:21,九江站的格友集齐,接站中巴出发。上午9:11左右,小巴到达庐山站附近接这里的格友们,但是却没想到发生了两个维也纳酒店的“乌龙”事件。在一个维也纳酒店门口始终少一人的情况下,才发现少的人在另一个维也纳酒店。上午9:40,终于接到了最后一位格友,中巴开始沿着庐山西面的环山公路向桃花源景区前进。上午10:30,中巴到了桃花源景区大门。与我2017年夏季来时相比,景区大门有了比较大的变化,建设的更好了。因为桃花源景区内部道路狭窄,不允许7座以上车辆进入,所以我们不得不下车,改换景区里的车辆。开车的司机很健谈,一边开车,一边给大家介绍庐山和桃花源的历史。车子缘溪而上,路两边春花盛开,一派早春的景色。大约20多分钟后,车子已经开到了桃花源深处,经过我上次曾写代码的大樟树时,我和大家说,我曾在这里写代码,大家都笑了。大约11:00,车子停在了我们即将上课的谦竹居下面。沿着一段斜坡,走进一个小院,里面便是我们本次研习班的大本营,前两批到的小伙伴已经等在里面了。谦竹居至此,本次研习班的所有现场参会者(19人)全部到齐,出发地如下:东莞:1;珠海:2;成都:4;长沙:2;武汉:3;上海:2;南京:1;北京:1;福建:1;合肥:1;杭州:1。(二)这次研习班的主题是LINUX内核,第一讲的题目是《LINUX内核大局观》。这个内容我每年都讲很多次。但是每一次都讲的不一样。改变的目标是追求新颖,把代码讲活,不要陈词滥调。这一次,在桃花源深处,我又换了一种讲法,几句简单的开场后,便让大家直接打开课前准备好的6.1.16源代码。6.1.16是版本6的第一个长期支持版本(LTS),刚好在研习班的前几天发布。可以想见,这个版本将是未来10年中的一个重要版本,所以在庐山讲这个版本,至少可以让大家对这个版本有个深刻的印象。每次讲arch目录时,我都会结合着CPU厂商的历史和发展潮流来讲,在IT巨头们“群雄逐鹿”的故事中,让大家感受到CPU领域的激烈竞争,认识到在Linux的arch目录中有一套代码意味着什么。提高学习效果的另一个关键是互动。在这个内容时,有人问了一个非常好的问题,为什么arm架构的32位和64位分两个目录,而x86是一个目录。这个看似简单的问题,其实非常耐人寻味。里面也有着安腾64和x64的故事。简单说,AMD当年推出x64就是打着“兼容”这张牌而把安腾64搬下马的,既然无缝兼容,也就不需要分为两个目录,一个x86目录就够了。而arm64是著名的armv8引入的,arm借此机会丢掉了以前的很多包袱,硬件方面大修大改,软件方面也另起炉灶,开了一个新的目录,迎接新的时代。如果从这个意义上看,arm的两个目录代表着锐意进取,而x86的单一目录代表着固步自封……(三)把大局观部分讲的差不多就到了午饭时间。午饭过后略作休息后,13:30下午的课开始。我没有按讲义的顺序讲,跳过很多内容,直接跳到挥码枪一讲,带着大家上手内核调试。与以前使用虚拟机做内核调试不同,这次研习班为每一位参加者准备了一套GDK8和一个挥码枪(基于CoreSight技术的硬件调试器)。我做了简单示范后,很多格友都在两分钟内成功将内核中断到调试器。成功的满脸喜悦,没成功的则非常投入地操作着。NT内核之父大卫·卡特勒在分享他的人生经验时曾说他是个喜欢“hands