看到和我当年有相同问题手痒回一下...
先说结论:工作很多年后,作业系统真的很难精通(遮脸)
恐龙书内容是把目前主流OS会用到的观念都塞进去
但事实上,业界会碰到去改大型OS Source code的机会很少
除非你是Linux Kernel开发人员,或者在微软视窗部门上班
大部分工作上需求是把大型OS拿来使用而已
像Android、Linux、Windows、UNIX之类的
会摸到很下层部份最多就是系统程式
还有就是编译OS的时候,学着去调一下OS参数编给自己的机器用
像Linux这种大型OS的Source Code真要从头看到尾这辈子应该看不完
(板上有全部看完看懂的大老让我膜拜一下)
另外一种OS是RTOS这种较小型的,很多嵌入式系统用到
这一类OS Source Code不会太多,基本上都看的完
但这种OS不会把恐龙本里面所有的功能都用上
大部分会少File System Manager
极端一点的还会少掉Memory management
甚至有部份人士会认为这种东西不能叫作业系统
相对来说,这种OS就有很大的机会要去改里面的code
以我的经验来说,都是改code时才回头去看以前还给老师的恐龙本
才知道当初恐龙本讲的某个概念实作出来原来是长这样
然后才理解为什么作业系统在这种机器上面要这样实作这种功能
(硬件功能支援度、硬件资源、硬件速度都会影响)
说这么多回到原问题:
学恐龙本里面OS的观念要做啥...
如果要考研究所,就要把各种概念的优缺点都能明确的分析出来
作业系统提到的各种观念,大部分都不会有Best Solution
要能明确知道某个概念,哪种机制,用在哪种场合上会比较好
(比方task管理有好几种模式,要能知道各种的优缺点)
因恐龙本是OS实做功能上抽象化出来的
所以有时候看图说故事比较快懂
如果有不懂的地方多用Google找找看有没有图解
或者找一套有Source Code的OS来看那段功能
(前文提到的MINIX是一个很好的范例)
或者要硬K Linux的某部份功能Code也可以
(以前老师是推荐我们去K Linux的内存管理那部份)
重点还是要花很多精力去Trace Code
从目前code中学习,会感觉踏实很多
总之计算机工程这门学问,做中学很重要 XD