自己动手写操作系统-启动顺序之前三

首先会加载BIOS,当你打开你的计算机电源后,首先是会加电自检功能,检查电脑是否良好计算机,通常完整的POST自检将包括对CPU,640K基本内存,1M以上的扩展内存,ROM,主板,CMOS存储器,串并口,显示卡,软硬盘子系统及键盘进行测试,其次初始化,包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当电脑启动时会读取这些参数,并和实际硬件设置进行比较。最后是引导,功能是引导DOS或其他操作系统。BIOS先从软盘或硬盘的开始扇区读取引导记录

在BIOS将系统的控制权交给硬盘或软盘第一个扇区之后,开始读取MBR,硬盘的0磁道的第一个扇区称为MBR,它的大小是512字节,而这个区域可以分为两个部分。第一部分为pre-boot区(预启动区),占446字节;第二部分是Partition table区(分区表),占66个字节,该区相当于一个小程序,作用是判断哪个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码。一个正确的Boot Sector要以0xAA55结束。一旦BISO发现了Boot Sector,就会将这512字节的内容加载到内存为0000:7c00处,然后将控制权彻底交给这段引导程序。

Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

而第一章的操作系统只有20行,通过NASM编译后得到一个boot.bin文件,该文件通过Tools工具里的floppywrite将其写入一个软盘,当然这个软盘可以是虚拟的,你你可以装一个virtualpc,选择默认安装就可以,然后新建一个Virtual Disk Wizard,接下来一步是要选择floopy disk。具体的安装可以参照第二章,比较详细。floppywrite你要修改下 FloppyWriterDlg.cpp文件中的一段代码HANDLE hDevice = CreateFile( "D:\\Mytest\\自己动手写操作系统(含源代码)\\光盘附带源代码\\Tinix\\chapter1\\A.vfd", 
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, 
NULL,
OPEN_EXISTING,
0,
NULL);

"D:\\Mytest\\自己动手写操作系统(含源代码)\\光盘附带源代码\\Tinix\\chapter1\\A.vfd"这个是你的新建软盘的地址,这样才能写入成功,当然如果写入img,那就不用改代码,它可以选择路径的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值