自己编写操作系统1--概述

打算做这件事很久了,一直拖到今天才开工,事情真的多,又到了过年期间,不得不做一些生活琐事,唉,比较难集中精力了,只有深夜才有思路迸发,今天中午整理一下。

所谓的编写操作系统,就是想办法制作一张“含有操作系统的,能够自动启动的磁盘”。

1.在Windows(或其他)操作系统上编写源代码
2.用C语言编译器编译源代码,生成机器语言文件
3.对机器语言文件进行加工,生成软盘映像文件
4.将映像文件写入磁盘,作成含操作系统的启动盘

以前的软盘 的 总 容量 是 1440KB, 所以 作为 备份 数据 的 映像 文件 也 恰好 是 1440KB。

实现上自底向上,底层采用NASM汇编+C实现,初期在VM上调试,后期以虚拟软盘镜像的形式部署到机器上

我们现在在使用16进制手动编写一个软盘格式的文件。一个软盘的大小就是1474560字节,这也是为什么我们操作系统的大小要是1474560字节。BIOS读软盘第一个扇区时,磁盘内不同地方的内容有不同的含义,详细含义见汇编代码注释,在这里引用github上面的汇编注释,
点我查看
其大概意思为,软盘的格式为FAT12如果将计算机的开机设置为从软盘启动,计算机开机会驱动软盘的磁头0读其0柱面1扇区的内容到内存0x7c00(人为设定)~ 0x7dff处,并检查扇区最后两2字节内容,如果为55AAH,则从0x7c00开始执行这段程序。
如果将一个好的软盘的磁头0对应的0柱面1扇区内含有一段(让显存)显示“Hello world”的机器指令,且将扇区最后2个字节的内容为55AAH。设置计算机开机时从软盘启动后就能够显示“Hello World”。
这就是这一段代码的基本原理.。

原文地址:https://www.cnblogs.com/AmosAlbert/p/12832220.html