26 号考研班放假一天,恰好又是星期三,正好可以到图书馆借点书看看。因为最近 学校大范围的“装修”,图书馆已经限时开放了,开放的时间为周一、周三,又只限 于早上,在大部分的时间里都与上课冲突,心里唯有无奈而已。
庆幸赶上了这一天,两边都不误,却忽视了图书馆里面的变化,某些编号的书架竟 然无法找到,天知道我想找的书被藏在了哪里。有些楼层的变化还挺大的,或许是 我很久没来图书馆了。逛了几圈,没有找到合适的书籍,只好作罢,盘算着时间还 够,应该赶得上买车票。
也许是我那天运气真的很差,排队买票已经排到了倒数第三,前面的服务员小窗一 关,算是结束了半天的工作,然后宣布 30 分钟后才继续卖票。仔细看了一下窗上 的小牌,才发现这个窗口到中午 11:30 就结束了,其他的窗口却不一样,有的没有 标明时间,有的标为 12:00,只好换了另外一个,重新开始,心里那个郁闷……
好在我的“锲而不舍”,最终还是换来了“沉甸甸”的车票,不过硬卧真不便宜,把我 两个学期的补助吃掉了大半。考研班 8 月 3 号早上结束,下午就动身回家,真是 一刻都等不及。
前段时间由于受到台风的影响,南方普遍大雨,合肥也没有例外。刮风下雨折腾了 好几天,弄得天气挺凉爽的,我们捡了个便宜,在人满为患的大教室里并没有挥汗 如雨的感觉,当然也没有传来像刚开课时由于天气太热而让老师中暑的坏消息,很 是希望这样的天气能够持续到结课。可惜好景不长,昨天天气预报还报着 24 小时 内有雷阵雨,我也盼来了半个晚上的凉风,可是今天一大早就迎来了阳光普照,抬 头一看竟是万里无云,心都凉了。是祸躲不了。
买了车票后心里就不安定,老想着家那边的事情,其实这个东西不用急,抄完了笔 记,就该是收获回家的季节了。
考研班一直在上,但这个课程没有工作日之分,几乎每天都有课,有时一天两节, 仔细一算,几乎没有连续 24 小时的空闲时间。虽然如此,但是放假这种念头在我 的脑海里一直没有停止过。这可是一个放假的时段,庆幸 HFUTBBS 的电影 ftp 上 有免费帐号,嘿嘿,刚好趁这段时间看电影看个够,算是比较堕落了。
时光如流水,要懂得珍惜这种时光,:)
虽然球踢得很不漂亮的英格兰早早会了家,虽然意志力坚强的德国仍无法抵挡意大 利的前进脚步,虽然我最喜爱的两支球队都无缘今晚最盛大的演出,可是今晚是毕 竟是决赛,一直踌躇着要不要走出校门到外面看球,因为可怜的寝室 12:00 之后就 断网了。
今天工大考研数学强化班终于开课了,宣布我的暑假生活正式入了轨。这几天最恐 怖的事情,是网络的课程设计报告一直不断返回要求做改动,又是增加封面又是修 改撰写时间,连封装好的都得重新拆开装订过,现在才发现早早回家的好处,可以 避免这些恼人的琐事,早点进入慵懒的假期,可是既然选择呆在这里,代理班长频 繁的“传讯”是少不了的。
这几天室友将写好的类似“飞鸽传书”的 JAVA 软件拿过来“测试”,平常飞鸽在寝室 内可以轻松达到 10M/s,可是他的“飞鸽”在这里大概达到只能 4M/s。听他说今晚在 实验室的测试,那边竟然也可以达到 10M/s,反正我是不懂了。用 swing 写的界面 不错,中文支持也好,同时还支持多重文件夹传输,这样寝室内部可以正式脱离必 要时使用 samba 来传输的传统了。
有强人在,可以偷空问他网络传输方面的东东。现在一直后悔网络的课程设计选择 了 RSA 加密解密,其实质只是对 gmp 大数库的使用,而有关网络传输的工作一直 都没有接触过,这怎么能说是网络的课程设计呢!?
算了,也许漫长的暑假我会有时间再接触这些东西,今晚属于世界杯。
考完了期末的最后一科邓论,本以为一切结束,后来才发现接下来要完成的写课程 设计报告的任务如此艰巨,花了我整整一天的时间才将三个课程设计报告搞定,为 此也忙到了晚上 10 点多才结束。
网络和编译原理的还好写,只是格式太烦人,网络的课程设计报告有模板,相对要 简单些,可是编译原理的就不一样了,老师只给了我们一页纸的格式要求,这一页 纸,得反反复复看好几遍才看得懂。
而操作系统的课程设计报告格式要求只有几行,但是将源代码打印那一行让人很不 爽,如果是几百行的代码打印出来还好了,可是 1000 多行的代码打印出来就非常 多了,而且打印出来估计也没人看,只是充数而已,还不如直接将源代码发过去好 一些。决定只是精选一些代码就可以了,要不然报告里面就全是代码了。
这是一个纯模拟性质的磁盘文件系统,大三下的课程设计题目,当时选这个题目是 因为很想仔细了解一下 UNIX 对空闲磁盘以及文件的管理。
得益于室友的一本 Maurice J.Bash 的 The Design of The UNIX Operating System,对课程设计的编程变得简单了一些。我觉得其对 UNIX 的描述超过了我在 图书馆里找到的其他有关书籍,虽然它初版于上个世纪八十年代中期。
发觉刚开始最难的是模型的建立,磁盘块的大小以及 super block 里包含哪些信息 最为重要,接下来的对空闲磁盘块的管理和 inode 的申请都相对简单,底层的模拟 似乎都很好建立,但是到了文件系统的管理这一层,就有点头大了,inode 里的三 次间接寻址,很是麻烦,不过还是搞定,只是这个东西无法实地验证了。
而到了对目录的管理,文件的建立、删除、移动以及链接等等都建立在对目录、目 录项的管理上,又更为麻烦,由于自己没有想出很好的办法,没有建立函数抽象而 是直接硬干,在这个过程中发现了先写注释说明再动手实现可以减少出错的几率, 目标、过程明确也就容易编程实现,只是后来经常遇到突然出现了某个点子,修改 了代码却忘了修改对函数的注释说明。
代码已经编写完成,不过有些 bug,主要是在文件系统的实现上,没有做边界检查, 当一个文件申请了文件系统无法满足的空间时,文件系统会出错,虽然它没有崩溃。 这个 bug 是验收时老师找到的,也就注定了这个程序无法得到很好的分数,不过 无所谓,能过就行了。
程序放在了 cs#SmallUnixFilesystem 里,有什么问题或建议可以联系我, EmailMe 吧。