Chinaunix首页 | 论坛 | 博客
  • 博客访问: 676336
  • 博文数量: 156
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1201
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-05 20:08
文章分类

全部博文(156)

文章存档

2010年(13)

2008年(39)

2007年(104)

我的朋友

分类:

2007-05-05 20:46:27

很早就看内核,可是始终看不进去,就是有了这个拦路虎!
 
保护模式
 
作什么用那?
保护模式是80386的cpu以后才有的,为了兼容以前的80286 8086 cpu的实模式。
实模式只有20位的地址线,最大寻址的内存就是1M,80386具有了32位的地址线,配合保护模式里的段保护机制,可以寻址62TB,但保护模式具体是怎么实现的那?
 
首先要说386以后的cpu有32位的地址线,为了兼容以前的cpu,多了几个空际寄存器,cr0-cr4,cr0具有开启保护模式的PE位,只有PE=1的时候,才可以打开保护模式,但cr0不能直接操作,只有通过通用寄存器才可以对其操作。保护模式还可以保护进程的安全,为了实现就有了段保护机制,也就是GDT,LDT,IDT,及描述符的概念。(这就得请各位看官参看一些资料了)
 
CPU中有一个高速的寄存器用来保存GDT表在内存中的位置以及GDT表的大小:GDT的大小用16位来表示,GDT的物理地址用32位来表示(以保证GDT能在4G内存的任意位置),因此GDT高速寄存器(GDTR)占48位,已经不能用一个32位的寄存器来表示了,因此要在内存中表示出GDTR内容,书上说这叫“伪描述符”,GDTR由下面的指令装载:
lgdt [__GDTR]

未完持续......

阅读(1166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~