## 问题
有同学反馈在刚开始学操作系统时,很难开头。感觉比较茫然。代码文档很少,汇编看不懂,C语言的宏也不知说的是什么,等等。
由于背景和知识基础的不同,每个同学遇到的问题也很不一样的。
== 向老师的建议==
1)对于基础知识不够的,建议先解决你看不懂的那一行,不能从头学。例如,嵌入汇编是刚入门时感觉很困难的事。实际上,它只是采用了AT&T的汇编格式,寄存器的表示方法有变,语义是完全一样的。新加的内容仅是,C变量与嵌入汇编寄存器的映射关系。搞清楚这个,就行了。而这在网上有很简洁的描述,基本上在两页纸以内。
2)内核代码文档太少的问题,不要在开始时直接深入到细节。建议可以不求细节,先把程序的大致结构搞清楚。好在函数是一个很好的划分单位,知道一个函数的大致功能,就可以了。再有一条是,建议先找关键代码,找到关键代码,前后的准备和完善就可以先忽略了。有了大致的了解,再找有兴趣的地方进行深入分析。提醒一下,要想把整个系统的所有细节都搞清楚是要用大量的时间才行的。
[NOTICE] 如果确实看不懂源代码,且没有注释,可以在piazza中列出你看不懂的代码,助教和老师会尽力补充注释。
3)学习工具使用有利于帮助同学加快学习速度。
其他还有许多问题,我在这里开个头,希望大家在这里提自己遇到的初学者问题,同时共享自己的解决方法,也许对别人也是一个很好的参考。
接向老师的话头
==== 陈老师建议 ====
分清学习过程的先后顺序和难易程度比较关键,一般按照由易到难的顺序和知识点的依赖关系(老师基本上是按照依赖关系来讲的)来学习比较好一些。对于大部分同学,具体顺序建议如下:
a. 看原理/实验的视频(如果容易犯困或注意力不集中,建议看一小节(5~15分钟不等)后,做练习)
b. 顺手完成每小节视频的练习(难度 *),如果觉得练习不够,可尝试 os_exercise上的基本练习(不属于spoc的, 难度 **),
c. 总结一下,看看自己有啥不清楚的,如果觉得视频可以理解了(但其实不一定真正懂了),看看spoc中的必做和不是必做的题目(难度不等,*~*****),挑一些感兴趣自己做做。
d. 对于不理解的或者有问题,直接上piazza上提问。(老师和助教会随时关注大家的问题)
e. 一定要在spoc实体课前,完成对视频的观看,并尽量完成a~d,这样更充分地带着理解和一些问题进入spoc实体课
f. 在spoc实体课上,老师会出一些有一定难度(***以上,对等于考试题目的中等以上难度)的题给大家讨论,分析和解答,可充分利用这段时间提问,讨论,或者独立完成老师的问题。
g. 上完spoc实体课,如果是到了lab环节,抓紧做lab。对于不理解的或者有问题,直接上piazza,或在spoc实体课上提问。
h. 自己分析原理和实验的联系与差距,体会抽象和具体的知识点,真正做到理论联系实际。
对于lab, 用工具读代码和debug对完成实验很重要,多加各种调试信息便于自己理解写的代码。