《自己动手写操作系统》总结(上)

原创 2007年09月23日 20:28:00

 东西比较多,打算分两次来写。

写操作系统有许多的限制,比如要用汇编,要直接操纵硬件等(BIOS中断算是唯一可以小小依靠一下的功能调用,还不能在保护模式下运用)。在使用C语言之前需要为其准备相应的环境,到现在我还没搞清楚到底需要准备些什么环境(书上也没怎么说,或许我没看到)等我知道了,我立刻把它更新进来,或者哪位大侠知道,也望告知 谢谢拉。

计算机通电后,BIOS运行加电自检程序(POST),然后初始化硬件和中断向量表(就是将来我们可以在实模式下调用的函数表),还有BIOS参数(主要是放入内存指定位置,0x400h处)。接着运行基本自引导加载程序(先用loader_1命名,后面还有好几个加载程序)。

loader_1先按照BIOS参数中的启动顺序依次寻找启动盘,如果从软盘启动,则检查软盘的0面0磁道1扇区(硬盘启动现在不说,以后和硬盘结构一起介绍),如果它的最后两个字节为0xAA55,则认定为合法的引导扇区,并把第一扇区的内容转载到内存0000:7c00处,并将控制权交给它(即跳到0000:7c00处运行)。

我们的工作从此开始。我们要按它的要求写一个引导扇区(boot),它的作用就是为将来OS内核的运行准备环境。这些环境要求包括进入保护模式,启动分页机。保护模式的内容非常庞杂,算是真正进入内核前最艰难的部分。

进入保护模式需要设置GDT,GDTR,选择子,关中断,开启A20,最后才跳转进入保护模式。保护模式和实模式主要的区别在寻址,同一个变量,在实模式下的LABEL和在保护模式下的会有不同,这需要了解内存的存放情况才能决定。

还有另外一个重点是特权级。有三个特权级标志CPL,当前特权级,是被存在当前代码段寄存器CS和SS的0、1位上。DPL是段或门的特权级,被存储在段或门的描述符中。RPL则是放在段选择子的0、1位。

特权级的检查是DPL将与CPL、RPL分别进行比较,并会对不同的段或门类型区别对待。感觉很复杂,不多说了,在将保护模式的文档中都会有详细介绍。

看起来要做的工作很多,很难在512字节的范围内完成,所以决定把这些工作放在一个loader.bin中完成,而boot的工作则是把loader.bin放入内存,并交给它运行。这就牵涉到了软盘的读写,通过BIOS调用完成(在实模式下)。

因为将来的内核要用C来写,并且用elf格式编译连接生成(这应该算是一个用C语言的条件,详细的还不清楚……),所以需要了解ELF文件的格式。而loader.bin的还有个任务就是把内核kernal.bin读入内存(同loader.bin),然后按照elf的格式将其重新放置正确。最后将控制权交给内核。

接下来就是内核的工作了,我们下次再说~辛苦啊,那么多内容……

至此,结束

《自己动手写操作系统》 第一章总结

《自己动手写操作系统》 第一章总结俗话说万事开头难,为了督促自己能在假期好好学习,打算认真做一下学习笔记。先记录一下在学习过程中遇到的问题和解决方案:自己动手写操作系统 第一章总结 书籍和工具下载地址...

自己动手写操作系统 第四章总结

自己动手写操作系统 第四章总结 本章主要内容是建立一个功能比较完善的引导扇区也称为 boot sector 首先回顾一下一个操作系统从开机到运行的过程 1.引...
  • XianBT
  • XianBT
  • 2014年05月20日 00:58
  • 914

自己动手写操作系统一书的总结

Orange 总结Orange分为Boot部分,load部分和内核kernel部分:具体内存分布如下图所示:系统启动过程:bios加载boot部分(512byte)于内存7c00h处并跳转到7c00h...

自己动手写操作系统

  • 2017年11月26日 22:34
  • 71.41MB
  • 下载

自己动手写操作系统(含源代码)

  • 2015年08月20日 20:33
  • 43.23MB
  • 下载

自己动手写操作系统之1:bochs初步使用

0x00 前言自己动手写操作系统,自然需要一个承载程序的运行环境,这一章记录我使用bochs遇到的坑,凌晨十二点半才填完坑。这次记录的是使用bochs完整实现一个最简单的操作系统(其实根本不算操作系统...

自己动手写操作系统

  • 2014年02月13日 17:02
  • 292KB
  • 下载

《自己动手写操作系统》bochs配置过程中的问题

这几天配置过程中遇到了许多问题,有些问题在网上找了很久,困扰了这么多天终于解决了,废话少说,说一下我解决的问题,让后来者少走弯路 (1)首先是下载bochs,网址:http://bochs.sou...

自己动手写操作系统光盘

  • 2013年03月16日 01:31
  • 281KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《自己动手写操作系统》总结(上)
举报原因:
原因补充:

(最多只允许输入30个字)