20220709.No.5121
从零打造自己的操作系统可能么?
学东西要追根溯源,因为树叶的东西太过繁多,而且不小心会被树叶带走。计算机的鼻祖到底是谁?图灵还是冯诺依曼,他们都是大神,但是,且慢,仔细考查一下,思维的源头在哪里?原来,图灵只是做了一个思维实验,整出一个图灵机来,图灵机真的是一台机器么,别被字面的意思所欺骗,其实,图灵机只是一种通用自动机器模型。它的理念是,“有一个二端无限沿伸的纸带作为存储装置,输入,输出和状态转移函数是一个机器的三要素,这三要素组合并变形可成为一切机器的原型,可解决一切图灵机能解决的问”。
图灵机听起来是纸上谈兵,但它却是当代冯.诺依曼计算机体系的理论鼻祖。它带来的“数据连续存储和选择读取思想”是目前我们使用的几乎所有机器运行背后的灵魂。计算机体系结构中的核心问题之一就是如何有效地进行内存寻址,因为所有运算的前提都是先要从内存中取得数据,所以内存寻址技术从某种程度上代表了计算机技术。按照面向对象的思想,如果说图灵机是一个类的话,那么冯.诺依曼的计算机体系则是一个对象, 这就把我们从思维的捆绑中解放出来,也就是,你可以造出自己的计算机,请看 《我的世界》里从零打造一台计算机有多难?复旦本科生大神花费了一年心血 https://www.codercto.com/a/79391.html
第二章
那么,为什么第二章要讲内存寻址?你能不能从零打造一个自己的操作系统?这一章讲的段机制和分页机制到底与写一个操作系统有什么关系?
本来分段和分页是内存管理相关的内容,但是,当你想写一个操作系统时,必须考虑操作系统的启动,如果是在x86的体系架构下来开发,那么段机制,页机制,你绕不过去,怎么办?
欲穷千里目,更上一层楼
第一讲
内存寻址概述,让你追根溯源到4位机,然后一步一步演变到32位,乃至64位,回顾历史不仅仅是为了展望未来,更看出技术的演变是被需求所推动,这其中,要有所悟,而不仅仅看到的是数字的变化和阶段的演变。从实模式到保护模式,这中间的跨度这么大,设计人员是颇费心思的,也需要自己去领悟。
第二讲
段机制,同样要追根溯源,为什么要引入段机制?这就要从程序的编译、链接和装载说起(详细内容请参考 《程序员的自我修养》https://baike.baidu.com/item/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB/20800937?fr=aladdin),如果没有时间看,可以看浅墨写的《编译链接那点事<上>》https://www.0xffffff.org/2013/04/05/16-complier-and-linker-1/和 《编译链接哪些事<下>》https://www.0xffffff.org/2013/04/17/17-complier-and-linker-2/
如果想对保护模式有较为详细的了解,请看浅墨写的四篇系列文章:
《保护模式汇编系列之一 - 初探保护模式》https://www.0xffffff.org/2013/10/22/21-x86-asm-1/
《保护模式汇编系列之二 - 中断和异常处理》https://www.0xffffff.org/2013/10/23/22-x86-asm-2/
《保护模式汇编系列之三 - 段页式内存管理(一)》https://www.0xffffff.org/2013/10/24/23-x86-asm-3/
《保护模式汇编系列之四 - 段页式内存管理(二)》https://www.0xffffff.org/2013/10/25/24-x86-asm-4/
有了这些基础后,是否就可以着手操作系统的打造了?
是 的 !
更详细的文档,参见:
《x86架构操作系统内核的实现》
https://wiki.0xffffff.org/
老师寄语
实现一个操作系统可不是一朝一夕的,如果你觉得自己的实力还不够,那就先不着急,把这些文档保存起来,慢慢消化。如果你想马上动手,那么,先行动起来,毕竟,心动不如行动。 --陈老师
更多学习资源
Linux内核之旅网站http://kerneltravel.net/