Makeyouros
这次jojo有一个大胆的想法 开发一个操作系统😄
那就是自己写一个操作系统,哈哈哈哈哈哈 是不是很大胆呢,但是其实只是一个很简单的功能很单一的一个小玩具 下面就开始吧,jojo预计是30天内完成。所以最好是分为30days.
Day1s
计算机结构到汇编程序
首先我们是从0开始写一个操作系统
那么在我们的手里面有的只是一个二进制或者是16进制的编辑器
并且在编写的过程中调试运行很麻烦所以我们需要安装自己的虚拟机
因为我们是要写一个软盘的格式的操作系统,所以我们的操作系统的大小是1475560字节。BIOS在读取软盘第一个扇区的时候,磁盘内不同地方有不同的含义
软盘格式FAT12。
如果计算机的开机设置位从软盘启动,计算机开机会驱动软盘的磁头0读取0柱面1扇区的内容到内存0x7c00到0X7DFF处,并且检查扇区最后两个字节的内容
如果将一个好的软盘的磁头0对应的0柱面1扇区内含有一段(让显存)显示“Hello world”的机器指令,且将扇区最后2个字节的内容为55AAH。设置计算机开机时从软盘启动后就能够显示“Hello World”。
当然我们肯定是不会用二进制或者16进制来写对吧。。
所以我们要用高级语言,那就是 汇编
高级不。。
或者提供其他的思路来参考
就是二进制的编辑器
Binary editor 是一种直接对二进制数进行编辑的软件
但是二进制代码就不展示了
看着很头疼
那么这就是我们的软盘映像文件了。和上文一样,同样是需要1475560字节 1440*1024字节
之后我们将这个文件写进软盘里面
在tolset的文件,将这个文件复制到任何一个位置里面
之后我们打开这个文件夹,讲里面铣床一个文件夹,然后将前文制作的第一个映像文件复制进来,以及 两个.bat格式的文件也要复制进来
然后再新建一个文本文档,叫做run.bat
然后我们edit 加入上面的代码************* 然后是install.bat 还是输入代码************
原理
然后我们来考虑一下我们究竟做了什么
电脑的处理中心是CPU,也就是中央处理单元,我们平时做的事情,其实只是和CPU交换电信号而已,而且电信号只有ON和OFF,CPU有自己的指令集,也就是说,其实就是我们和CPU交换的只有一些电信号的集合,也就是二进制的数
但是本质上,CPU处理的都是电信号
我们编写的程序最终都是要转化为机器语言,这些机器语言就是以电信号的形式发送给CPU的。
软盘的原理其实异曲同工,简单来讲,就是把二进制的01转换为磁极的N和S,所以我么只用01就能写出映像文件。
那么就改讲到我们的二进制的数了,我们可以很方便的输入二进制数,并且保存为文件。
但是二进制数实在是太长了,很不方便我们的编辑,于是我们使用16进制来保存
4位二进制对应一位的16进制的数字
扩展一下,就是8机制的数就是3位二进制的数扩展来的
FAT12格式,用windows格式话出来的软盘就是这种格式
软盘的第一个扇区叫做启动区,计算机读写软盘的时候是以512字节节为一个单位进行读写,也就是一个软盘是由2800个扇区,为什么我们需要一个启动扇区呢,因为我们会在这个扇区的最后两个字节的内容
如果最后两个字节不是55AA,那么计算机会认为这张盘上没有所需的启动程序
IPL 启动区只有512个字节,
那么我们的软盘上明明就有操作系统,那么IPL为啥会放在磁盘上面呢,则个被称为bootstrap方式。 ##总结 那我们就将一个简单的程序做到了软盘上面了😄