做完PintOS后的回顾

Pintos Code Snippet

终于,在漫长的,无聊的Debug之后,我和我的组员终于完成了PintOS的最后一个部分,完成了这个自己写的操作系统。现在回想起来,这个项目的工作量要远比想象中的大,implementation也比预想中有很多难点。现在终于写完了,望着自己的操作系统通过一个又一个的test,并且能够运行所有简单的C程序,感觉上这门课还是蛮值得的,不仅让我对操作系统背后的原理有了深刻的理解,而且也加强了我的各种写码能力。

PintOS是一个来自Stanford的教学性OS(操作系统)框架,包含一些最基本的OS功能来让学生自己完善操作系统的各种重要部件。在Berkeley这门课叫做CS162 Operating System,要在一个学期的时间里完成Pintos的四个核心部分,也是现代OS的核心组件:

  • User program
  • Memory
  • File system
  • Process Scheduling

其中除了Memory支持是自己写以外,剩下三个部分都是4人的Group Project。对于每个部分要提前规划Design Doc,然后四人分工合作实现计划的功能。

很多时候我们是每人负责一个部分,最后整合。最初这种strategy并没有什么问题,我们可以高效的完成各个组件,但是到了比较复杂的,相互关联的系统,比如文件系统,这个策略就带来了很多麻烦。比如说如果一个别人负责的模块有潜在的bug,导致你的部分无法正常运行,那么你要花很多时间才能找到问题所在。我们在这上面我们浪费了很多时间检查别人的code,而其实这些问题如果是一起解决的话则会高效很多。

C语言非常不好写,主要原因是没有很多主流语言的各种pre-compile的检查,导致很容易出现各种page fault,memory leak和implicit bug。因为debug message的匮乏,所以很多时候只能通过极其不好用的gdb工具debug。每次写C都感觉很心累,因为你要手动handle所有的error case,然后要为所有需要的buffer手动分配空间。操作系统需要管理各种硬件资源以及内存资源为各种程序提供支持,所以必须使用C这种底层的语言,现在想想虽然写起来痛苦,但是手动考虑各个步骤也让我对整个计算机系统背后的工作有了深刻的了解,花费的时间也是非常值得。… Read the rest

网站重做计划

时光荏苒,自从上次更新网站已有4年时间,期间我一直疏于搭理。直到最近我再次打开我这老掉牙的博客,才回想起上次更新还是我高中的时候,而现在四年过去我竟已大三,好似大学生涯也就要结束了。终于,我决定重新开始运作这个博客,分享一些我觉得有意思的事上来。不得不说我大学这三年至少技术上有所长进,也做了很多很多特别有意义的事,都错过了记录的机会,不过至少从现在开始我会试着记录下来未来有趣的事。

之前的网站无论是设计还是内容现在看都算老掉牙了,为了与时俱进,趁着现在疫情隔离,我来重建一下网站。现在计划是要做一个单独的个人主页作为我的portfolio,全英文放在markwu.me上面,然后将这个blog单独分开放在markwu.blog就是现在这个域名,并且内容会是中文。以后会增加更新的频率,会争取做到每月active,既能给读者分享又能提高我的幼儿园中文写作能力,算是对自己的一个小要求。

同时技术上我将这个网站转到了新建的美国vps上,之前用的日本vps一是在美国访问有些延迟,二是年久失修我早已忘记我四年前捣鼓的种种,来方便以后的维护。唯一可能的问题就是国内的访问速度,这个我只能希望美国西海岸的线路能够在国内给力些方便在国内的朋友们。至于我的profolio网站我目前在犹豫是用成熟的建站网站还是我自己做然后上我的vps,最近要把这事解决了。当然这期间我也会继续改善这个blog,比如内容标签等统一改回中文,然后选一个能看的主题等等。… Read the rest

发布日期:
分类:本站 标签: