欢迎光临散文网 会员登陆 & 注册

操作系统开发教程#02

2023-04-16 22:00 作者:DiannaoJun  | 我要投稿

在上一篇文章中,我们已经基本了解了什么是操作系统以及操作系统需要拥有什么。那么今天就让我们正式切入正题——操作系统的开发。

大家有没有想过,被安装在软盘(为了教学方便,前期示例以软盘为载体,这里也可以是其他什么介质)上的操作系统在电脑上电后是如何开始运行的呢?

大体步骤是这样的:

1.        电脑上电后开始执行ROM里的BIOS(Basic Input/Output System,基本输入/输出系统)程序,对你的电脑进行初始化。

2.        BIOS将装有操作系统的磁盘的第一个扇区装入0x7c00【1】的位置

3.        CPU跳转到0x7c00的位置开始执行IPL【2】

4.        然后你的操作系统就跑起来了

那么,我们现在知道我们需要做什么了——写一个IPL程序并放在磁盘镜像的第一个扇区里:

样例代码如下【3】:





【1】:关于为什么是这个位置。我们知道0x8000-0x0400=0x7c00,即32KB-1KB的位置。由于最初的DOS设计内存为32KB,而这里为高端未使用的1KB,故而就将这里的1KB分成两个512B,一个(0x7c00的位置)用来存放引导扇区(这里一个扇区512B),另一个(0x7e00的位置)用来存放执行IPL程序所产生的数据(变量等)。

【2】:Initial Program Loader的缩写,即“初始程序装入程序”。

【3】:本栏目汇编语言编译器使用NASM version 2.15.05,C语言编译器采用gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04),make使用GNU Make 4.3,ld使用GNU ld (GNU Binutils for Ubuntu) 2.38,编译环境使用Ubuntu22.04LTS






操作系统开发教程#02的评论 (共 条)

分享到微博请遵守国家法律