做完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

Oops… STEP 3 Maths Question (1996)

Here’s an interesting and doable STEP question on complex numbers (STEP 3 1996). Unlike most STEP questions, this one is doable: Not that hard to figure out, but still needs some thought. Give it a try!

Knowledge you probably need (But not MUSTs):

  • Solving Trignometry Equation
  • De Moivre’s Theorem
  • Vieta’s
Read the rest

Battleship!

Battleship! is my term project for 15-112 in summer school. It is a modified version of the original board game Battleship. The game is implemented in Python 2.7 with Pygame.

Unlike traditional Battleship, this WILD version allows players to move the ships and scan a small area to reveal the … Read the rest

Computer Science Pre-Release Material Solution (9608/23)

Here is the sample solution to the Computer Science Pre Release Material (9608/23).

Task 1

CS-PreRelease_Task1.py

Task 2

CS-PreRelease_Task2.py

Task 3

CS-PreRelease_Task31.py

CS-PreRelease_Task32.py

CS-PreRelease_Task33.py

CS-PreRelease_Task34.py

CS-PreRelease_Task35.py


Sample Solution for worksheet 1-3 (Bank Interest Rates)

CS-A1-Worksheet1

CS-A1-Worksheet2

CS-A1-Worksheet3Read the rest

Online Ranking System for Hearthstone Competition

The Online Ranking system for SCIE eSports Club finally came online! Now this system will be used to facilitate the HearthStone Ranking Competition.

Contestants can login using their personal account, see their current score and rank, start new challenges and view challenge history. Meanwhile staff can manage the system … Read the rest

New Game: Mini Brawl

Check out my newly made game: Mini Brawl: Ice Golem VS Sci-Fi.

Mini Brawl: Ice Golem VS Sci-fi is a role-playing game in which the player controls the mighty clumpy ice golem to fight against waves of ferocious sci-fi enemies. Unleash powerful frost magic onto these autonomous robots and drones; … Read the rest

第一个VB程序-AverageScore

今天,自己写的第一个VB程序AverageScore终于测试成功了!尽管这是一个非常简单的计算平均数的程序,但是在我的第一个VB程序中,加入了对于各种非法数值的报错,以及友好的UI及报错提示,使得软件更加稳定并且易用。我相信这是一个好的开始,也希望以后能够制作出更加复杂,实用的软件!

 … Read the rest

安卓4.2.2版本root教程

前天终于下定决心将本人的nexus4给root了,谁知这远比苹果的无脑越狱困难许多,在无数纠结后,终于成功了。现在发个教程供大家参考。需要windows vista以上操作系统。适用于4.2.2及4.0以上安卓系统。

Root方法-步骤

电脑–>安装ADB&FastBoot驱动程序

被root设备–>解锁bootloader(部分手机无需解锁)–>刷入第三方recovery(可选)–>Root设备–>大功告成!… Read the rest