最近在学习有关内核的知识,看到了一本书:orange 一个操作系统的实现,感觉不错,出于兴趣抽点时间研究下吧。不怕慢就怕站,争取每天工作中能抽出半个小时到一个小时的时间来学习学习。
一、系统引导
计算机加电时会启动自检,自检完成后会寻找启动盘,如果是从软盘启动会去寻找软盘的第一个扇区,如果是以0xAA55结束则认为
是引导区。计算机一旦找到了引导区,就会把引导区512B的内容拷贝到内存地址开始处0000:7C00(这个肯定内存的物理地址了,因为这还没有涉及到虚拟存储,自然不会有虚拟地址),然后就将控制权交给这段代码,从地址0000:7C00处开始执行。
二、x86 cpu的保护模式
1、GDT
GDT就是全局描述符表的意思。首先,GDT是在x86架构的cpu中保护模式下的概念,GDT表里面自然存储的均是描述符。
保护模式下的段地址与实模式下的段地址概念完全不同。保护模式下的段地址存储在段寄存器中(16位的),此时的段地址是
GDT表的索引,因此GDT表最多能容纳2的16次方=64K个描述符。
2、描述符
GDT中的每个表项就是描述符(一种固定的数据结构),它提供了段的基址、段的界限、以及段属性(很多)字段。
可见,保护模式下的寻址基于两部分:16位的段寄存器和GDT表,也就是说GDT中的每个描述符都对应了一个段。
3、选择子
选择子存储在段寄存器中,选择子包含三个部分:描述符索引13位,TI 1位,和RPL2位,可见段寄存器中存储的并非仅是
GDT的索引值。
三、实模式到保护模式
x86的cpu一般都是先运行在实模式然后转到保护模式,因此在实模式下,一定要为跳转到保护模式做好准备。
保护模式下的寻址与实模式不同,依赖GDT和段寄存器,实模式下会填充这些结构体的值。
阅读(722) | 评论(0) | 转发(0) |