Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104058
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 11:09
个人简介

摸着石头过河

文章分类

全部博文(30)

文章存档

2015年(2)

2014年(28)

我的朋友

分类: LINUX

2014-10-15 10:34:15

       最近在学习有关内核的知识,看到了一本书: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) |
给主人留下些什么吧!~~