教你设计一个简单的系统 自己写操作系统难吗( 三 )


经过跋山涉水 , 我再回头来看 , 很容易就发现了为什么操作系统很难学 。
操作系统需要你有大量的知识储备 , 但是现在大多的课程、学习资料 , 往往都是根据目前已有的一些操作系统 , 做局部解读 。所以 , 我们学的时候 , 前后的知识是无法串联在一起的 。结果就会越看越迷惑 , 不去查吧 , 看不懂 , 再去搜索又加重了学习负担 , 最后只能遗憾放弃 。
那怎样学习操作系统才是最高效的呢?理论基础是要补充的 , 但相对来说 , 实践更为重要 。我认为 , 千里之行还得始于足下 。
所以 , 通过这个专栏 , 我会带你从无到有实现一个自己的操作系统 。
我会使用大量的插图代码和风趣幽默的段子 , 来帮助你更好地理解操作系统内核的本质 。同时在介绍每个内核组件实现时 , 都会先给你说明白为什么 , 带着你基于设计理解去动手实现;然后 , 再给你详细描述Linux内核对应的实现 , 做前后对比 。这样既能让你边学边练 , 又能帮你从“上帝视角”审视Linux内核 。
我们课程怎么安排的?
操作系统作为计算机王国的权力中枢 , 我们的课程就是讲解如何实现它 。
为此 , 我们将从了解计算机王国的资源开始 , 如CPU、MMU、内存和Cache 。其次要为这个权力中枢设计基本法 , 即各种同步机制 , 如信号量与自旋锁 。接着进行夺权 , 从固件程序的手中抢过计算机并进行初始化 , 其中包含初始化CPU、内存、中断、显示等 。
然后 , 开始建设中枢的各级部门 , 它们分别是内存管理部门、进程管理部门、I/O管理部门、文件管理部门、通信管理部门 。最后将这些部门组合在一起 , 就形成了计算机王国的权力中枢——操作系统 。
我们的课程就是按照上述逻辑 , 依次为你讲解这些部门的实现过程和细节 。每节课都配有可以工作的代码 , 让你能跟着课程一步步实现 。你也可以直接使用我提供的代码一步步调试 , 直到最终实现一个基于x86平台的64位多进程的操作系统——Cosmos 。
你能获得什么?
走这样一条“明路” , 一步一个脚印 , 最终你会到达这样一个目的地:拥有一个属于自己的操作系统内核 , 同时收获对Linux内核更深入的理解 。
学完这门课 , 你会明显提升操作系统架构设计能力 , 并且可以学会系统级别的软件编程技巧 。我相信 , 这对你拓展技术深度和广度是大有裨益的 。之后你在日常开发中遇到问题的时候 , 就可以尝试用更多维度的能力去解决问题了 。
同时 , 由于操作系统内核是有核心竞争力的高技术含量软件 , 这能给你职业生涯的成长带来长远的帮助 。如今 , 在任何一家中大型互联网公司都使用大量的Linux服务器 。

猜你喜欢