怎样写一个简单的操作系统(3)
时间:2026-01-15
时间:2026-01-15
怎样写一个简单的操作系统
作系统。然后大部分的计算机会跳转到硬盘驱动器并开始执行主引导区(MBR)的代码,主引导区是指一个硬盘驱动器最开始的512个字节的部分。有些计算机会尝试在一个软盘(启动扇区)或者CD – ROM上找到可执行代码。
计算机具体会去哪里寻找引导程序,依赖于引导顺序 - 你可以在BIOS的选项屏幕上明确的指定它。BIOS从选中的媒介(译注:硬盘,软盘,CD - ROM)中加载512字节到内存中,然后开始执行它。这就是(传说中的)引导程序,这个小程序然后加载操作系统内核或一个更大一些的引导程序(例如,Linux系统下的GRUB / LILO)。为了告诉操作系统它是一个引导扇区,512字节的引导程序在最后面有两个特殊的数字作标记,我们稍后将介绍它。
在计算机启动、引导的时候,有一个有趣的地方。在以前,基本上所有的计算机都配有一个软盘驱动器,因此BIOS配置的是从软盘驱动器启动,然而,现在的大部分的个人电脑都没有软盘驱动器,而是配备了一个CD – ROM,为了满足这种需要,专门开发了一个hack(译注:a hack直译不知道怎么翻译,大概就是类似外挂一样的意思,干预引导程序,呵呵)程序。当计算机从CD - ROM启动的时候,它可以模拟一个软盘出来,BIOS将从CD – ROM驱动器上面读取一个数据块并加载,然后执行它,就好像它是一个软盘一样。这对于操作系统开发者来说是非常(译注:原文用了incredibly,表示非常非常有用的,呃)有用的,因为我们可以只制作一个引导我们的操作系统的软盘,但是依然可以引导只有CD – ROM设备的机器。(相对来说,软盘是比较容易使用和操作的,而CD - ROM的文件系统则显然要复杂得多)。
因此总的来说,启动过程如下:
1、 打开电源,计算机启动然后开始执行BIOS代码。
2、 BIOS程序寻找软盘或硬盘驱动器等多种媒介(译注:可以在BIOS中设
定寻找顺序)。
3、 BIOS将从指定的媒介中加载512字节的引导扇区,然后开始执行它。 4、 引导扇区然后再去加载操作系统本身,或者更加复杂的引导程序。
对于Mike OS,我们写了一个512字节的引导程序,并将它制作成一个软盘映像文件(虚拟软盘)。对于只有CD – ROM的驱动器,我们可以把该映像文件拷贝到CD上。不过无论使用哪种方式,BIOS都将正常加载它,就好像它是一个软盘一样,并开始执行它。之后我们就可以控制整个系统了!
汇编入门
现代操作系统大部分都是使用C或者C++编写,因为这对于可移植性和代码维护来说是至关重要的,但是这不是免费的午餐,在处理上就增加了一个更加复杂的层次。编写您的第一个操作系统,建议您最好是使用汇编语言,在Mike OS中也是使用的汇编语言,虽然汇编语言显得冗余和不可移植,但是您不用去担心编译器和链接器,这是它的优点。另外,此外,你需要一点汇编代码去启动任何操作系统。
汇编语言(或俗称的“汇编”)是表示CPU执行指令的一种文本化方式。例如,一条表示在CPU中移动数据的指令用二进制表示可能11001001 01101110,