今天开始,我将为大家在公众号持续更新一个新的专题
《操作系统原理解析与ucore》
,而这个专题的开启也标志着我们的公众号也将要进入正轨,做真正的技术分享。我知道这将会是一条艰难的路,但是我会尽我所能,给大家分享能让大家真正学到东西、有所收获的内容。我的小伙伴也会分享一些其他领域的内容,同时也欢迎大家分享自己的学习心得和学习建议。
决定更新这个专题有以下几个原因:
1、我本人在研究生阶段的研究方向为操作系统方向,因此在操作系统基本原理和实现的学习上必须不遗余力,打好根基。尽管之前我已经学习过操作系统以及ucore但是毕竟是为了应付考试,舍弃了其中相当一部分的内容。而现在,os成为了我的方向,我便必须要直面挑战了。弄懂ucore的全部核心代码并且能够将其深入浅出的解析出来对我来说必然是一个重大的挑战,但是如果我可以做到,那么我必然能够获益匪浅。
2、我的公众号目前的关注主体主要为考研er,而对各位来说,无论是迎战408还是912亦或者是其他cs高校的专业课,操作系统都是必须要迈过去的坎。与实实在在的“计算机组成原理”、完全存在于抽象中的”数据结构”不同,操作系统是抽象与具体的结合产物,因此,操作系统本身的存在就显得更加飘忽不定、难以理解,很多人对于操作系统的认识都是一种很模糊的感知,甚至只是对几个诸如“银行家算法”、“PV操作”等孤立知识点的强行记忆,却缺乏一种整体化的感知,更遑论实现。在越来越飘忽不定的计算机命题趋势下,这种浅层次的孤立理解显然难以在以后的考试中取得优秀的成绩,因此,实实在在的理解操作系统究竟是什么,如何具体工作就至关重要。而对于计算机科学来说,代码是最精确、最实实在在的东西,当你真正能够理解代码的时候,你就准确把握了问题本身。
3、选择ucore是因为ucore是我比较熟悉的东西,主体编程语言也是大家都比较熟悉的C语言。如果大家能够在我的解析下深刻理解了ucore本身,那么便可以发挥自己的能力,对ucore进行扩充,而这就可以解决考研党们普遍存在的没有项目的窘境。要知道,操作系统项目在当今环境下是具有极高的含金量的,本人也正是凭借对ucore的扩展在清华计算机系学硕的面试中取得了一个不错的分数最终得以录取。
4、CSer乐园不仅仅是cs考研党的乐园,更应该是所有喜爱计算机这个领域的同道们的乐园。所以我也希望通过这个专题,结识更多对操作系统有兴趣的朋友,一起互相借鉴学习,扬长避短,共同进步!
下面我就谈谈如果你要学习操作系统、研究操作系统必须分清的最根本的东西:
第一,是要分清视界与实际内容的区别。
何为视界,何为实际内容?先举一个生活中的例子吧。比方说你是一个企业的总公司的老板,你的电脑上存储着企业所有员工的名单,你的一切调配都可以通过在电脑上修改表格来实现,表格对你来说就是视界,而由于你的级别足够高,你对视界的修改也会对应到现实中的具体操作,所以你看到的视界实际上是现实内容的一种对应。
同样的道理,操作系统作为整个计算机系统的“大老板”
,它可以观测到计算机上所有进程、内存、文件等的视界,例如进程控制块、文件控制块等,操作系统从视界中获取信息,然后命令
硬件进行实际的操作,最后再根据操作的内容修改视界,这就是操作系统管理计算机的逻辑。
所以os源码充斥着数据结构的修改+内联汇编,便是这种视界
与实际
操作交替的逻辑
。
第二,是要分清哪些工作属于软件功能,哪些工作属于硬件功能。
我们学习的操作系统,从本质上来说还是一种软件,因此硬件系统对我们来说更多的是一种黑盒子的功能,我们必须对这一点有很清晰的认识。例如中断的实现,系统根据 IDTR(一个特定寄存器)中存储的地址寻找到IDT(中断描述符表)的初始地址,再根据触发中断的类型(例如时钟中断)给出特定的中断号(每一种中断类型对应的中断号是硬件决定的而不是软件),利用该中断号便可以在IDT中找到对应的中断描述符从而进行中断服务例程了。在这个过程中,IDT如何填写,中断服务例程如何实现,则是我们需要编写的软件功能。分清软件和硬件,是正确认识操作系统的一个根本要求。
操作系统中还有很多我们需要去掌握,去认识的东西,现在的我甚至我的老师也不敢说全盘掌握。但是我希望能够在学习与分享的过程当中,与大家一起去享受剖析知识、深入本质的乐趣,这无论对于我还是对于大家来说可能都是一个不小的挑战,但是正是因为有挑战,我们的努力才更有意义,不是吗?
操作系统原理_操作系统原理解析与ucore(开篇介绍)
最新推荐文章于 2024-03-25 22:41:44 发布