高手揭密开发简单“操作系统”全过程

高手揭密开发简单“操作系统”全过程,第1张

高手揭密开发简单“操作系统”全过程,第2张

【什么?]

在很多文章中,写一个引导程序被称为开发最简单的操作系统。其实这是很片面的,引导程序不是操作系统,虽然这个程序可以在PC上运行。所谓引导程序,直观来说就是系统上电启动时,BIOS执行的第一个程序。

引导程序要发挥作用并被机器识别,必须放在一个特殊的位置,这个位置就是磁盘的第一个扇区(0面0-磁道1扇区,注意:没有扇区0),包含引导程序的扇区称为引导扇区。

一个有效的引导扇区(1)通常包含512个字节(当然一个扇区通常有512个字节),而(2)由两个字节的数据结尾来标记,比如0xAA55。(注意:前缀0x表示这是一个十六进制数)。

也就是说,如果把boot sector看成一个字符数组的BootSector[](因为一个字符即char正好是一个字节),那么这个数组有512个元素,如果用C语言声明就是
char boot sector[512];

那么,一个有效的引导扇区必须以0xAA55结尾,即
boot sector[510]= 0x 55;
boot sector[511]= 0x aa;

除了结束标志必须满足上述要求外,虽然中间还有510字节的空,但是执行代码可以少于510字节,剩下的空可以用无意义的字符填充(一般是0x0)。

[流程]

PC通过BIOS启动机器。当PC开机后,BIOS启动相应的程序完成机器的自检,然后寻找可启动的驱动程序,也就是通常所说的启动盘。你可以在BIOS中设置从哪个磁盘启动,但是你总是要检查硬盘,所以当BIOS检查之前的引导设备时,如果没有找到引导程序,就会开始检查主硬盘,也就是c盘。如果此时在c盘上找到有效的引导扇区,引导扇区的内容(总共512字节)将被加载到存储器0x0000:07C00中。此时,BIOS将控制权交给这个引导程序。

然后,接下来,引导程序通常会简单执行一些指令,比如输出一段文字,显示一个启动界面等。,但最重要的是,引导程序会启动一个更大的程序,然后给它权限,也就是我们通常所说的操作系统内核。另外,目前对于操作系统的定义有很多,但笔者认同如下:

从形式上来说,操作系统是一个从计算机开始运行到结束的程序。而这通常就是我们所说的操作系统内核。在功能上,操作系统:管理和维护所有硬件、软件和数据资源,并为上层应用程序或服务提供抽象接口。在某种程度上,第二个中的定义更接近于虚拟机。(八卦一会儿_

[如何]

现在,知道了这些基本概念,如何制作这样的引导扇区呢?这个过程非常简单,

(1)首先按要求写一个合法的引导程序(一般用汇编,机器码也可以,呵呵);
(2)然后被汇编器编译成二进制文件,比如NASM;
(3)最后,将这个二进制文件写入目标磁盘的第一个扇区。

跟我一起做:-P]

以上很简单吧?好了,现在我们写一个吧!

第一步:写代码。

;文件名:boot . ASM
;代码如下。请注意“;”通常用于装配。来表示评论内容
;这个代码请参考自己写操作系统(Yu Yuan)

;初始化函数
org 07c 00h;告诉编译器加载这个程序
;转到内存0x0000:07C00
movax,cs
movds,ax
moves,ax
call print str;调用屏幕打印函数
jmp $;无限循环

PrintStr:;屏幕功能
mov ax,HelloWorld将字符串复制到ax
mov bp,ax;Es:bp = string address
mov cx,24;Cx =字符串长度
mov ax,01301hah = 13,al = 01h
mov bx,000ch页码为0(bh = 0),黑底红字(bl = 0ch,高亮显示)
mov dl,0
int 10h;10h中断
ret

HelloWorld: db“欢迎来到李氏OS * _ *”;string的负值
乘以510-($-$)db 0;用0x0填充剩余的空空间以生成
;的二进制代码只有512个字节。

dw 0x aa 55;结束标志
;整个节目结束了!很短,不是吗?

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 高手揭密开发简单“操作系统”全过程

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情