“操作系统与Linux内核导读(北京航空航天大学)”实验报告

操作系统的引导

实验报告

实验过程

  1. 编写bootsect.s: 图片描述

  2. 编译 图片描述

  3. 去除头部描述符并且运行 图片描述

  4. 创建setup.s 图片描述

  5. 修改bootsect.s 图片描述

  6. 修改build.c配置: 图片描述

  7. 运行 图片描述

  8. 扩展 更改setup.s显示参数: 图片描述

查看实际配置: 图片描述

可以看到head和cylinders参数显示正确

实验问题解答

x86计算机启动过程中被硬件强制,软件所执行多此一举的步骤:

1)x86计算机启动后,执行BIOS的代码,由于BIOS的访问地址有限,所以需要把操作系统开始的引导程序读到0x7c00处,在执行的的过程中再把其移到内存中相对靠后的位置,以便加载系统主模块,这是“多此一举”的。

解决方案:在保证系统可靠性的前提下尽量扩大bios可访问的内存范围。

2)x86CPU启动时为了向下兼容16位计算机使用实模式:纯16位五保户执行环境。而80286或以上的CPU通过A20 GATE来控制A20地址线。80386及后续系列为了和8086体系兼容仍然使用A20地址线,所以为了兼容以前的程序,不得不保留实模式,如果访问100000H-10FFEFH之间的内存,系统将实际访问这块内存。进入实模式多此一举,可以直接进入保护模式。

解决方案:不向下兼容,直接进入32位的保护模式,因为现今主流计算机都已经是32位或者64位了,没有继续兼容16位计算机的必要。

最新评论
暂无评论~