80386读书笔记之保护虚拟地址存储方式(—)

// 主题:80386读书笔记

// 作者:kevinjz2010@gmail.com

// 版权:kevinjz原创

// 平台:80386

// 发布日期:2011-07-24

// 最后修改:2011-08-14

// 注意事项:欢迎转载,但不得在转载的时候擅自修改、删除文章的任何部分

//-------------------------------------------------------------------------------------------------


总概:

1、段机制以及分页机制实质上是驻留在存储器中的各种表格,叫做段表与页表,其中规定了各自的转换函数(规则)。

2、段表和页表都只能有操作系统来修改。

3、操作系统为每个任务都维护一个不同的转换表格集,可以使每个任务具有不同的虚拟空间地址(一种保护机制)。

4、虚拟地址转化过程:

16bit选择子:32bit偏移量 通过 段机制 = 32bit线性地址

开启分页功能:32bit线性地址 通过 分页机制 = 32bit物理地址

禁用分页机制:32bit线性地址 = 32bit物理地址

5、两种保护方式:

通过给每个任务分配不同的虚拟地址空间,使任务之间完全隔离;

任务内的保护(特权级别),保护操作系统存储器段及特别的处理器寄存器不能被应用程序访问;

6、每个任务各有一组独立的映射表,即具有不同的的地址转换函数。当CPU切换任务是,需要切换新任务的转换表。

7、全局地址空间

8、局部地址空间

9、操作系统可以为不同任务赋予局部地址空间中相同的虚拟地址,但由于每个任务具有不同的局部地址空间,使得不同任务对同意虚拟地址的访问会转换为不同的物理地址。

10、在一个内务内,定义有四种执行特权级别,0~3,0为最高级。

11、当前特权级:CPL;请求特权级:RPL;

一、存储管理机制详解之段机制

1、段:段机制把虚拟存储器组织成大小可变的容量单位的集合。

2、段的三个参数:

段基址:规定段的起始线性地址,32bit

段的界限:长度20bit,当粒度G=0时,界限以1字节为单位,范围为1字节~1M字节;粒度G=1时,界限以4K字节为单位,范围为4K~4G。

段的属性:

段的扩展方向(注意堆栈段的特殊性)、

存在位P,值为1时表示该描述符有效,可以用于地址转换,否则无效;

描述符类型位DT,值为1是表示该段为一个存储段,值为0是表示该段均为一个系统段或门;

 以上三个参数存储在段的描述符中,在虚拟地址-线性地址的转换过程中要对段描述符进行访问。

3、段描述符存储在存储器的段描述符表中,其实段描述符的一个数组。

4、虚拟地址分为相等的两部分,一半由GDT进行映射,一半由LDT进行映射。一共包含214个段,每个段最大可以为4G。

5、全局描述符表(GDT):系统中只有一个GDT表,由GDTR进行寻址。GDT中包含有各种全局段的描述符,其中包括了存放LDT的段的描述符、TSS的描述符。

6、局部描述符表(LDT):包含由各单个任务私有的描述符。LDT表有多个,具体视任务数量而定,并且所有存放LDT段的描述符都在GDT中。对于一个由两个任务共享的段,可以在各自的LDT中包含同一个描述符表表。当前任务的用的LDT所在段的选择子存放于LDTR中。

7、段选择子:虚拟地址两个部分中的段部分,段选择子标识一个段,可以将其视为段的名字。段选择长度为16bit,

bit15~bit3:索引index,确定描述符在指定描述符表中的位置,其值为描述符在描述符表中的偏移

bit2:TI,值为0表示段描述符在GDT中,值为1表示描述符表LDT中。

Bit1~bit0:RPL(请求特权级),表示主调程序想以什么特权级访问段。

8、当index=0而且TI=0,表示空选择子,是在GDT中的第0个表项,是一个假想的描述符。该描述符永远不会被处理。

9、使用RPL时,与所访问段的特权级相比较的不再是CPL,而是CPL与RPL中较外层的特权级。

10、CPL存放在CS寄存器中的RPL字段中,每当一个代码段选择子装入CS寄存器时,处理器自动吧CPL存储到CS的RPL字段。

11、存储段的描述符格式:

一共8个字节,假定最低字节地址为m,在最右边,最高字节地址为m+7,在最左边。

描述符属性字节:m+5、m+6。其中,

m+6的bit7为G,粒度;

m+6的bit6为D,兼容位,80386的软件此处总为1

m+6的bit5为AVL,软件可利用;

m+5的bit7为P位,存在位;

m+5的bit6~bit5为DPL位,描述符特权级,定义相关段的特权级;

m+5的bit4为DT位,在存储段中其值为1;

m+5的bit3~bit0为TYPE位,类型字段,定义段描述符的类型;如读写等

基址的23bit-0bit在m+2、m+3、m+4中,bit31~bit24在m+7中;

界限的bit15~bit0在m、m+1中,bit19~bit16在m+6的低四位中。

12、系统段:格式与存储段基本一致,但DT位值为0,D不用;

13、门:门的描述符包含48位的全指针以及16位的属性。

指针的选择子:16bit,位于m+2以及m+3中;

指针的偏移分两个部分存放,低16bit位于m、m+1中;

属性字段存放在m+4、m+5中:  

14、描述符投影寄存器:每个段寄存器都有一组与之相联系的描述符投影寄存器,其中容纳有段寄存器中的选择子所确定的段的描述符信息。作用是不必每次读取段时都要去译码了,可以直接读取投影机村其中的内容。要保持投影寄存器中的内容实时更新。

15、总结

虚拟地址转换为线性地址,是通过给出的选择子,确定段描述符表中的的段描述符,从而确定段基址,然后加上给出的偏移即完成转换,其中段描述符中确定了段的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值