操作系统编写详解

这篇博客详细介绍了操作系统的引导过程,从BIOS加载MBR到进入保护模式的转变。作者通过讲解GDT(全局描述符表)的作用,阐述了如何在64位环境下进行段描述符的管理和切换,最后演示了如何编写一个简单的引导记录。
摘要由CSDN通过智能技术生成

最近阅读了一大堆介绍操作系统的书,终于也小有所成,感觉写操作系统是件很简单的事

写操作系统,就不得不从引导开始

电脑在按下开关之后经过一连串的Reset...CPU就会运行BIOS(这个就不多说了),在POST(加电自检,Power On Self Test)后,BIOS就会按CMOS里的引导设备顺序为序(eg:硬盘,软盘,USB Device,LAN...)开始读每个设备的引导扇区(0面0磁道1扇区,简单来说就是第一扇区),假如找到一个以(0x)55 AA结尾,且大小为512B(字节)的执行码,就会将它当成MBR(Master Boot Record,主引导记录)加载到内存的0000:7c00处,并跳转到0000:7c00处开始执行,最后将控制权交给它,这时候操作系统将开始运行

所以一般的操作系统一般都会有Boot.s||Boot.asm一个汇编码文件(Linux为Boot.s,GAS(GNU Assembler,GNU汇编器)编译)这就是MBR,一般来说会编译成Bin(Binary,二进制文件),也有编译成Com(Command,区别于www.XXXX.com,事实上后者是HTML)的

由于是加载到0000:7c00,所以Boot.asm第一句一般为

ORG 7c00h

ORG 0x7c00

(h和0x都表示16进制)它告诉编译器加载到7c00处

过来

       Mov ax,cs
       Mov ds,ax

初始一下

过来就要进入保护模式了(现如今的操作系统都用保护模式了,这应该是启动时完成的第一个工作,为了增强性能,详情自行Google)

首先是GDT(全局描述符表,Global Descriptor Table)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值