操作系统内核如何实现编写和内核还有引导程序的关系

本文介绍了操作系统内核的加载过程,分为BIOS运行、引导任务运行和内核运行三个阶段。详细讲解了引导程序的代码,包括加载内核、开启分段机制进入保护模式。通过GDT、段选择子、段描述符等概念,阐述了32位保护模式下地址转换和内存管理的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目是起的简陋一点 但是不影响我们的操作 长话短说 自己看代码 加了注释了
今天我们讲讲如何实现内核 还有内核的意义 我们的扇区0的引导扇区的程序又是干嘛的
一 加载内核
第 1 阶段:BIOS 运行阶段,在这个阶段主要对系统中的硬件进行初始化,并创建实模式下的中断系
统,最后将 cpu 在第 2 阶段运行的可执行文件 bootsect.bin 加载到物理内存,并跳转运行可执行文件 bootsect.bin;
第 2 阶段:引导任务运行阶段,在这个阶段中 cpu 在实模式下运行可执行文件是 bootsect.bin。因为
引导任务的可执行文件 bootsect.bin 的大小不能超过 512B,所以在引导任务运行阶段无法做太多工作。因
此本阶段的主要工作是:将 cpu 在第 3 阶段运行的可执行文件 kernel.bin 加载到物理内存(如图 1.3所示),并开启分段机制进入保护模式后,跳转运行可执行文件kernel.bin
第 3 阶段:内核运行阶段,在这个阶段中 cpu 运行操作系统的核心代码——内核。

这里几个例子
1.引导程序
.code16
BOOTSEG = 0x7c0#在实模式下给cs段进行赋值16位的逻辑段
KERNELLEN = 1#加载一个扇区521B
ljmp $BOOTSEG, $go#自动跳转到执行引导程序的起始地址
go:
movw %cs, %ax #代码段和数据段共享一个bin程序
movw %ax, %ds
movb $0x42, %ah#把磁盘中的数据加载到物理内存
movb $0x80, %dl #主机中第一个硬盘号默认为0x80号
movw $parameters, %si#传参ds:ip指向参数的地址
int $0x13 #调用13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值