操作系统设计赛赛后心得
操作系统设计赛赛后心得
26年操作系统设计赛已经结束,连续参加了两届比赛的我,在这其中收获良多,虽然没有拿到自己满意的比赛结果,但是我并不后悔自己付出的这两年精力。感谢老师让我用文字将自己的心得记录下来,又让未来的自己收获一笔不小的“财富”。另外,与其说是操作系统设计赛赛后心得,不如说是献给调试器的那些时光我的经历、所思、所感。以此文档纪念我这段感慨万千的本科科研之旅。
一切的起点
在大一刚入学那会,我们计算机学院的新生们一起参加了吴老师组织的竞赛宣传会,当时加上了吴老师的微信。不过加上微信后,我也没有主动联系吴老师并询问相关竞赛,也是因为偶然的因素,我被吴老师拉进了新建的竞赛兴趣小组群(PS:我时常在未来感慨当年运气好,不然也不会有现在的机缘),在大一寒假开始前,吴老师询问了我是否要参加操作系统比赛,当时并没有想太多,大一的自己只想学东西,于是,我就这样开启了大学的新进程。
在吴老师的带领下,大一寒假我们开始学习Rust和rCore。
学习Rust
最开始学习rust的参考资料是《Rust语言圣经》这本书,我的直系学长腾哥推荐的。由于这本书写的实在是有趣和易懂,这让我学习rust的过程非常的快乐,整个寒假,我时常会在自习室里看的入迷而推迟吃饭时间。里面我一直记到现在的一句话如下:
rust,它安全正是因为它严格,它的严格也鞭策着我们这些开发者,养成严谨、安全的开发习惯,就像我们身边的良师益友。不知道从什么时候开始,很多人开始无脑排斥类似于“良药苦口利于病”的话,直接拍上“PUA”、“画大饼”的标签,可是不经历痛苦,又怎么才能有成长呢。
学习rust 的过程中,吴老师也让我们尝试以周为单位,用GitHub写日志。那个时候我除了学rust,还通过网上教程,学会了使用GitHub。我记得那个时候自己对日志是什么、应该写什么、怎么写一窍不通,还专门上网去学,但是他们教的是怎么写工作日志,自己的没有什么工作吧,哪有那么多可以写的,于是我就在日志里写知识点总结、难点、错题总结。
日志的作用有很多,对于现在的我来说,它最大的作用就是为未来的自己提供帮助。已经写了两年的日志了,总结出的心得就是:日志就是记录相关的一切,不局限于某种方向;最开始日志可以只写给自己看,慢慢的就需要写的可以让别人看懂;不知道怎么写,那就先写流水账,写的过程中会有自己的理解,之后,就多看别人写的好的日志,慢慢的,你就会得心应手。此外,懂得组织好自己的日志,也是一门很了不起的能力,我现在依然很欠缺这种能力 :)
定期开组会
从大二开学开始,我们整个学习小组就维持着两周一次组会的频率,每个同学汇报自己的学习进度。最开始,参加训练营的同学有接近20个人,经过一个寒假,第一次开组会汇报寒假进度时,就只有11位同学了。值得开心的是,这次进度汇报,我是低年级进度第一的人,吴老师也给了各位同学很多的鼓励。
开学后,老师让我们报名开源操作系统训练营,完成里面的rust题,高年级的同学们就做rCore实验。当时做rustlings最让自己头疼的就是做题环境的配置,那是自己第一次配环境,对命令行使用一窍不通,一长串的英文报错也不知是什么意思、怎么解决,那个时候的自己脸皮比较薄,遇到问题也不好意思问老师和学长学姐,只知道自己埋头苦干,一个简单的环境我硬是弄了一个礼拜才弄好,而且弄完也是云里雾里的,不过在这个过程中,我去自学了Linux的常见命令,至少地基还是打的不错。完成rustlings和rCore实验的整个过程,参加组会的人越来越少,低年级就只剩下三位同学。到了后来,吴老师开始安排我们复现陈学长的工作,开始一周一次组会,从大二寒假开始,就只剩我和尹同学了。
第一次独立做任务
大二暑假,我收到了自己的第一项独立任务:从GDB中剥离出解析Dwarf对模块。但是接到这个任务时,我的内心是有些忐忑的,吴老师当时问我能否完成,我的回答是应该没问题,因为我打心里觉得自己可以。
结果下来,真的是一脸懵。
GDB的原理是什么?
怎么使用GDB?Dwarf调试信息又是什么?
为什么要剥离出GDB的这个模块,不是已经有解析调试信息的模块的吗?
于是我带着这些问题,开始一步步摸索,有问题时,我就询问学长。其实那个时候最搞笑的是,学长我给解释了,我也不一定懂,下来还要Google半天,现在回看那些信息,只觉得无比的清晰。


PS:在这里我特别鸣谢陈学长,在自己做项目的过程中,我从他那里学到了很多,他从不吝啬,总是细心解答我的疑问,对我帮助良多。那个时候觉得学长特别的博学,怎么什么问题都能解决,不知道他以前下了多少功夫才学会这些知识掌握这些技能,在他的影响下,我受到了特别大的激励,一直以来,我都想成为和学长一样厉害的人。
最后,我成功完成了模块的剥离。整个过程中,我很多次怀疑自己,时常觉得自己真的能够解决这些问题吗,我真的适合做科研吗,并且想过很多次放弃,但是我又不甘心,不甘心遇到困难就逃避,这也确实是自己第一次有了想放弃的想法,不过幸好自己坚持下来了,经过这次任务,我对自己有了更大的信心,我觉得没有什么困难是花时间解决不了的(但前提是不要一根筋陷进问题里去),在后面一些困难时刻,因为这个想法,我每次都能度过难关,并且成长到下一个阶段。我明白人在成长到新的阶段之前,一定是会经历痛苦的,现在的自己已经不怕任何困难,因为最后我总能解决并且获得不小的收获。
参加25年大赛
比赛的初赛时间定在我们的期末周,我在一边复习专业课的同时,准备初赛的材料。因为自己的能力不足,写出来的参赛文档逻辑不通、文笔青涩,当时吴老师指导我一字一句的改文档,老师是一个很精益求精、负责的人,但是同时他心思也很细腻和温柔,要求我们进步的同时,也会很照顾和鼓励我们,我真的很感谢他,不管是他在忙碌的工作之余花时间细致的教我写文档,甚至在决赛期间,熬夜一遍又一遍的带我过PPT,顺逻辑,还是在我压力大、情绪低落时给予认可和帮助,正是因为两年来的培养,我才有了今天的能力。
初赛的时候,我们因为时间原因,材料并没有准备齐全,演示视频和PPT都没有做,文档也做的不是很好,最终的成绩在现在看来也确实在意料之中,但是当时自己确实觉得很意外,心里确实有不小的落差。
来到决赛时期,那个时候是大二的暑假,我后期每天为了写文档、做PPT,经常熬夜到凌晨三、四点,去武汉参加比赛的第一天,我向吴老师和向老师做了第一次汇报,确实很糟糕,吴老师对此是不满意的,然后给我们梳理PPT的大致逻辑,让我们下去再改。
一直让我觉得印象深刻的一件事是,当时是答辩的前一天,我和董同学花了很多心思去改PPT,觉得应该没什么问题了,晚上准备给老师汇报完最后一遍,好好睡一觉然后背答辩稿子的(睡好了记忆会好一些,免得紧张😂),结果PPT还是有很多问题,又需要熬夜改PPT,大概是因为连续熬了好几天,再加之我的答辩稿还没背,我的情绪一下崩溃了,眼泪啪嗒啪嗒的流,然后大家都开始安慰自己(现在想起来还是超级无敌感动😭😭)。最后问题梳理清楚后,我和董同学就下来自己改PPT了。但是情绪一直控制不住,于是我一边改PPT,一边流泪。最搞笑的是,后面董同学的爸爸看她这么晚还没睡觉,打电话过来,她一接上电话,眼泪也止不住的流了出来,后面我们两个人在酒店里一起痛哭流涕😭,每次回忆,心里没有痛苦,只有慰籍,因为那段时间的陪伴,我和董同学建立了深厚的友谊,我时常怀念那段时光。
那次的答辩我自己是比较满意的,整体上没有什么大问题,原本我们的目标是一等奖,但是因为初赛的成绩不好,觉得再怎么二等奖应该没问题,结果最后却是三等奖,当时确实比较伤心,这个比赛的成绩对我来说没有那么重要,伤心的点更多在于,感觉很对不起吴老师、学长还有董同学的付出。但是伤心归伤心,项目还是要继续下去的。
大三 我又成长了!
由于每位同学都有了各自的规划,这个项目渐渐的只剩下了我一个人,虽然整个过程中来来回回也有人加入,但是通常都不会待很久,我也从以前那个什么都不会的新人,变成了项目组里的老人。
因为调试器这个项目在陈学长的工作下已经有了发展方向,所以整个大三,我就埋头完成工作,工作的内容就是为了实现目标,设计方案、实现方案、伴随着解决各种各样的问题。在此期间,我完成了两项大的工作,调试器对StarryOS的适配、实现Rust异步操作系统的跟踪调试,每一项工作中,我都遇到过一次大的瓶颈,正如前面所说,在“坚持就会成功”的心态下,我成功度过了瓶颈,并进阶。此外,我的学习能力、检索能力、逻辑能力、解决复杂工程问题的能力都得到了极大的提升,这些能力也给我的生活提供了良多帮助。
在这期间,值得一提的是,我写文档的能力因为大幅提升,我一度有些飘,26年的初赛文档写出来时,我是比较满意的,准备写好后给吴老师看,其实在写文档的时候,我就知道老师大概会提出哪些问题,但是我自我安慰,觉得应该不会这么严苛、问题不是很明显……如果老师提出来,后面再改就是。
于是我拿着写好的初赛文档给吴老师看,老师指出我提前预想到的很多问题,最开始我是不完全认可老师提出的一些问题的,因为我觉得老师要求太高,但是下来后我对文档做了进一步梳理,老师指出来的问题很多都太过明显,我之前存在一些逃避心理,就这样,我对写文档这件事有了进一步的认识和掌握。
到了决赛的时候,团队成员按照我梳理的讲述逻辑完成了PPT的大纲,我自己梳理的讲述逻辑看起来总是觉得有些别扭,但又不知道往哪个方向改,吴老师看后,一句话就讲清楚了所有工作的逻辑关系,我当时醍醐灌顶,想自己什么时候也能拥有这样的能力。

孤独又dream的26届决赛
这次比赛整体来说,我的最大感受是孤独吧。另外两位同学也是临时加入进来的,交流的时间很少,他们更多的时间花在了知识学习和复现工作上。决赛时,两位同学都有自己的事情,于是我一个去南开大学参加了比赛,这次没有连续几日的熬夜改材料,也没有和队友抱头痛哭,我轻松了很多,成长了很多,但是我还是更喜欢上次参赛的时光😭(不过好在这次有弟弟陪着我)。
说完感受,接下来讲讲问题吧。答辩完的那一天,心中五味杂陈的,由于这次除去8min的答辩视频播放,还有22min的问答时间,所以老师们问了很多问题,并且很杂,有些问题我回答的并不是很好:
你们项目对标的工具是什么呀?你们有调研过其他的类似的调试器吗?
你一直在说协程,我想问你,进程和你这里说的协程区别在哪里,你举个例子说明
……
那天晚上,我躺在酒店的床上,反思着一个又一个问题,想着怎样回答才好,为什么没有回答上来。
第二天吴老师问我怎么样,我说:二等奖?(PS:因为我觉得这次不管是初赛成绩、决赛材料的准备、项目的完整度都要好于上次,而上次,我们与二等奖就差一个名次,这次应该二等奖没什么问题吧,不过我对自己的答辩表现还是没底)
颁奖典礼的前一天,吴老师给我发了条信息:“在南开?一会聊两句”,我起床看到这句话,心理有了中不好的预感,为什么要突然见面聊两句,难道是没拿奖,老师想安慰我?emmm,我也不知道,但是因为时间问题,我和吴老师直到颁奖典礼开始前才见上面,在此之前我心理一直都空落落的。果不其然,见面后,吴老师告诉我是三等奖,悬着的心终于死了🥹,老师还安慰我是竞争太大,幸好我还比较乐观哈哈哈,也没有伤心太久。
另外还发生了一件比较 dream的事情。因为赶时间颁奖典礼我没有参加,吴老师在场,在典礼上现场公布成绩时,我们队伍是优胜奖:
结果过了几天,赛事组公布的名单中,我们又成了三等奖,好像是因为典礼上成绩有误,弄错了,不过幸好有奖,要是没拿奖那可真是太令人伤心了。
大四的我又该何去何从?
参加完比赛,第一次组会上,向老师让我讲讲未来的打算、赛后感受、有哪些成长,这些问题我私下自己心里有想过,但是突然被问到,脑子里有些乱。我想老师当时可能觉得我会不会因为连续两次的赛场失意,而放弃后续的工作,于是我马上说明了自己的态度,并讲了一些自己的心得。在这里,我将它写下来,也算是给两年的成长一个完整的总结。
我并不会因为比赛结果而否认自己的能力并放弃做这个项目。或许大二的自己确实想要在比赛中获得一个很好的成绩,但在这整个过程中,我收获的一切,都要比“一等奖”、“二等奖”这个成绩带给我的要重要的多,正是每一次瓶颈的跨越,让我看到了自己的坚韧、优秀,让我不会因为一次失败而否认自己。但是,比赛失意总是有原因的,我会从中反思并精进自己,只要能把以前的自己比下去,就是成功。
那这次比赛,我意识到的最大的问题就是我从头到尾都没有去研究过我们做的东西有其他人做吗?我们之间的差异是什么?为什么就能说我们做的东西相比于别人的好呢?我一直在低头赶路,从没有花时间研究一下我们的课题现在最新的相关成果有哪些。我在想,因为互联网和AI,让我能够快速的学习新的东西,并进入某个领域,我变得浮躁,一上手就总想着实现一个东西,却没花时间研究过这个工作是否已经有人做过。
因为这段科研经历,我有了更加清晰的目标。我想成长为能够统筹复杂系统设计与落地的技术领导者,既懂系统的基础知识,也懂架构的全局设计,更懂技术背后的价值。未来,我也会奔着这个目标不断前进。
最后也感谢向老师这期间对我的指导与肯定,经过这一年的交流,我感受到他是一位极其优秀的教育者。如果不是向老师,也不会有这篇文章。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)