从零打造自己的操作系统可能么?-第二章 内存寻址导学

学东西要追根溯源,因为树叶的东西太过繁多,而且不小心会被树叶带走。计算机的鼻祖到底是谁?图灵还是冯诺依曼,他们都是大神,但是,且慢,仔细考查一下,思维的源头在哪里?原来,图灵只是做了一个思维实验,整出一个图灵机来,图灵机真的是一台机器么,别被字面的意思所欺骗,其实,图灵机只是一种通用自动机器模型。它的理念是,“有一个二端无限沿伸的纸带作为存储装置,输入,输出和状态转移函数是一个机器的三要素,这三要素组合并变形可成为一切机器的原型,可解决一切图灵机能解决的问题“。

图灵机听起来是纸上谈兵,但它却是当代冯.诺依曼计算机体系的理论鼻祖。它带来的“数据连续存储和选择读取思想”是目前我们使用的几乎所有机器运行背后的灵魂。计算机体系结构中的核心问题之一就是如何有效地进行内存寻址,因为所有运算的前提都是先要从内存中取得数据,所以内存寻址技术从某种程度上代表了计算机技术。

按照面向对象的思想,如果说图灵机是一个类的话,那么冯.诺依曼的计算机体系则是一个对象, 这就把我们从思维的捆绑中解放出来,也就是,你可以造出自己的计算机,请看 在《我的世界》里从零打造一台计算机有多难?复旦本科生大神花费了一年心血 (https://www.codercto.com/a/79391.html)。

那么,为什么第二章要讲内存寻址,你能不能从零打造一个自己的操作系统,这一章讲的段机制和分页机制到底与写一个操作系统有什么关系?本来分段和分页是内存管理相关的内容,但是,当你想写一个操作系统时,必须考虑操作系统的启动,如果是在x86的体系架构下来开发,那么段机制,页机制,你绕不过去,怎么办?

第一讲内存寻址概述,让你追根溯源到4位机,然后一步一步演变到32位,乃至64位,回顾历史不仅仅是为了展望未来,更看出技术的演变都是被需求所推动,这其中,要有所悟,而不仅仅看到的是数字的变化和阶段的演变。从实模式到保护模式,这中间的跨度这么大,设计人员是颇费心思的,也需要自己去领悟。

第二讲段机制,同样要追根溯源,为什么要引入段机制?这就要从程序的编译、链接和装载说起(详细内容参考“程序员的自我修养”),如果没有时间看,可以看浅墨写的编译链接哪点事(http://0xffffff.org/2013/04/05/16-complier-and-linker-1/)和编译链接哪点事(http://0xffffff.org/2013/04/17/17-complier-and-linker-2/)

如果想对保护模式有较为详细的了解,请看浅墨写的四篇系列文章:

保护模式汇编系列之一 – 初探保护模式(http://0xffffff.org/2013/10/22/21-x86-asm-1/)

保护模式汇编系列之二 – 中断和异常处理(http://0xffffff.org/2013/10/23/22-x86-asm-2/)

保护模式汇编系列之三 – 段页式内存管理(一)(http://0xffffff.org/2013/10/24/23-x86-asm-3/)

保护模式汇编系列之四 – 段页式内存管理(二)(http://0xffffff.org/2013/10/25/24-x86-asm-4/)

有了这些基础后,是否就可以着手操作系统的打造了,是的,更详细的文档,参见:

x86架构操作系统内核的实现(http://wiki.0xffffff.org/)。

实现一个操作系统可不是一朝一夕的,如果你觉得自己的实力还不够,那就先不着急,把这些文档保存起来,慢慢消化。如果你想马上动手,那么,先行动起来,因为,毕竟,心动不如行动。