作者wenli978 (文礼)
看板C_and_CPP
标题Re: [问题] 如何学习OS
时间Mon Apr 22 09:07:25 2019
看到和我当年有相同问题手痒回一下...
先说结论:工作很多年後,作业系统真的很难精通(遮脸)
恐龙书内容是把目前主流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
----
感觉还是没有回答到原Po问题的核心...o-_-)=O)。O。)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.110.223.221
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1555895247.A.30F.html
1F:推 ggBird: 去看linux0.11,简单该有的都有 04/22 09:14
2F:→ qazkevin: 请问不读恐龙书直接看jserv影片会不会没基础看不懂!? 04/22 09:36
3F:→ wenli978: J大的影片很详细了...反过来把恐龙当参考本应该可以 04/22 11:10
4F:→ cphe: 原原po干嘛每篇推文都在问,自己去看看不就知道 04/23 08:19
5F:→ cphe: jserv的教学讲座从来就不是从基础开始,他的C语言讲座也是如 04/23 08:20
6F:→ cphe: 此 04/23 08:20
7F:推 qazkevin: 回cphe大,已开始看了,感谢! 04/23 09:18
8F:→ cphe: 还是要看你想学OS的出发点,如果是考试恐龙书还是基本 04/23 14:00
9F:→ cphe: 如果你已经接触linux kernel好阵子,再去看jserv比较有感 04/23 14:00