登录
  • #申请总结
  • #eecs

【活‌‌‍‍‌‍‍‌‍‍‌‍‍‌‍‍‍‌‌‍‍‍‍‌‍‍‍‍‍‌‌‍动】我在美国上操作系统(Operating System)课程的感受和总结

tianyeblack
8843
10
1)你在国内上过这门课程以及要求的prerequisite courses吗?在国内的时候,学的很烂,还是自己觉得还不错?



上过这门课,但是没有写过什么代码,那时候主要是在钻研UNIXv6,面比较窄

2)从这个问题开始,均针对美国上课。你是在美国的第几个学期上这门课的?你觉得这门课程难度如何?比你想象的难还是容易?难在哪里?或者为毛你觉得很简单?

第二学期,难度中等,量大,跟我感觉差不多。

3)上课做了哪些project或者大作业?能大体说一下情况都是做的啥吗?

两个warmup,三个kernel。warmup没什么特别的,就是复习一下C。Kernel倒是第一次见,我们用的是Brown的weenix(这个应该不少学校用,另一个可能就是UnixXv6,MIT的)。虽然说起来写了process management,virtual file system,virtual memory,但实际上大多是blank filling,因为Brown的PhD们已经帮我们做好了设计(weenix大概就是设计来这么用的)。个人非常喜欢这几个作业,每次写出来,把bug干掉之后都会激动地想要跳舞(没写过什么代码的少见多怪)。这三个基本涵盖了从kernel到user space的关键概念,尤其是virtual memory简直是集大成,前面的代码乱写这里就会各种作死。每个里面基本都有一些system call实现,以及相关kernel数据结构的操作。前者就是按照spec一步一步来,后者就比较微妙了。一开始的PCB和TCB还比较死板,后面的vnode就有点纠结,最后的mmobj尤其是shadow object真是让人欲罢不能。总之,在模拟器上的weenix可以运行helloworld的时候,你就会得到一种人生升华了的感觉。

4)哪个project或者大作业你印象最深刻?你是咋做出来的、或者是如何栽倒的?有啥经验感受想说出来?

当之无愧的Kernel3,virtual memory。其实没有完全做出来,因为最后还是有几个测试过不去,weenix也不能halt cleanly。不过,它能跑helloworld,能生成子进程,能跑好多user space程序,而且写这个的时候我基本上把操作系统从启动到运行以及user程序从装载到运行到结束都给看了一遍,很多地方也是自己写的,这种掌控一切的感觉再好不过。这个作业不仅要求概念清楚,还要花费大量时间验证自己的设计,因为同一个函数可能有不同的设计,也就有不同的影响,然后有很多个这样的函数在一起的时候,就只能不断地尝试。

5)你班里大约有多少人同时上这个课程?有几个TA/Grader帮忙?你觉得你在需要的时候,得到了帮助吗?

100多号人吧,分成三个section。三个TA三个Grader。基本都是在Google Group里面提问或者发邮件问老师,问TA也会有回复,但更多的时候都是同学之间互相学习。

6)你了解班里的分数分布吗?中国学生一般成绩如何,或者做project、大作业情况如何,你了解吗?

考试基本就正态分布,warmup和kernel 1大家几乎都是满分,2稍微多了一些不是满分的,3的话就很少有满分了。中国学生有强有弱,应该分布挺均匀的。印度学生各种逆天吧,每次都有那种kernel满分extra credit满分的,放眼望去Google Group里面各种印度名字,不过有时候他们也是在灌水,但实力真心碉堡。

7)期中或者期末考试是闭卷还是开卷?难度大吗?临时抱佛脚突击有用吗?

闭卷,难度不大,量也不多,主要是考各种概念。抱佛脚的话,也还是等着被虐吧,因为知识点绝对够分散。

8)如果你有机会可以重上这门课程,你在什么方面会做的不同?

再花多一些时间在kernel 3上,虽然有final week的不可抗力,但早点开始也会有所不同。

9)你觉得这门课程有用吗?学到了什么东西?

很有用,更深入了解了C语言,而且现在看到一个操作系统基本就知道是怎么运作了,不像以前一头雾水。最重要的是,发现自己确实喜欢这个领域,决定在这上面走得更远一点。

10)介意说一下你是哪个学校什么专业的吗?介意说一下老师的名字吗?再次提醒,可以设置积分限制

USC的CS general。老师叫Bill Cheng或者William Cheng,很热心回答学生的问题(甚至欢迎我summer的时候去他office hour提问),graduate的OS也就他教,所以没什么选的啦。
10条回复
热度排序

发表回复