// 主题: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、总结

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

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

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

    // 主题:80386读书笔记 // 作者:kevinjz2010@gmail.com // 版权:kevinjz原创 // 平台:80386 // 发布日期:2011-07-25 // 最后修改:2 ...

  2. 《自己动手写操作系统》读书笔记——初识保护模式

    <自己动手写操作系统>读书笔记--初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三 ...

  3. 英特尔IA-32读书笔记2

    #读书笔记 ##2保护模式内存管理 ##2.1内存管理概览 IA-32体系结构的内存管理功能分为两部分:分段和分页.分段提供了一种隔离单个代码.数据和堆栈模块的机制,以便多个程序(或任务)可以在同一处 ...

  4. 《一个操作系统的实现》读书笔记连载ing……

    从昨天起深陷<一个操作系统的实现>这个书不能自拔,这本书可以说再次燃起了我小时候想写操作系统的美好愿望,所以说愿望总是美好的,还进入了大学开始真正去学计算机才发现似乎写操作系统是和我没什么 ...

  5. 读书笔记思维导图用什么软件做

    阅读是每一位有基础文化的人都能掌握的技能,通过阅读书籍,人们可以源源不断获取崭新的知识与技能.在如今社会,读书的重要性愈加突出,一位读书万卷的人,不论在哪一个方面,都远比不爱读书的人更受人敬仰,也更容 ...

  6. 《鲁滨逊漂流记》读书笔记精华分享

    如今读书笔记的表达方式已经不像以往那样只有纯文字的,在信息化的时代,更多的人会选择用思维导图做读书笔记,相比传统的方式,MindMaster思维导图来做读书笔记更加方便与直观. <鲁滨孙漂流记& ...

  7. 《深入浅出DPDK》读书笔记(十六):DPDK应用篇(基于DPDK的存储软件优化:SPDK)

    Table of Contents 基于DPDK的存储软件优化 180.基于以太网的存储系统 181.以太网存储系统的优化 SPDK介绍 182.SPDK介绍 (1)兼容性 (2)性能 183.用户态 ...

  8. 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16...

    一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...

  9. 任务切换——《x86汇编语言:从实模式到保护模式》读书笔记38

    任务切换--<x86汇编语言:从实模式到保护模式>读书笔记38 本文及后面的几篇博文是原书第15章的学习笔记. 本章依然使用第13章的主引导程序. 1. 协同式多任务与抢占式多任务 有两种 ...

最新文章

  1. LeetCode简单题之统计匹配检索规则的物品数量
  2. html语言星号,如何使HTML代码,输入的东西星号显示出来
  3. 如何正确对待vb脚本里的session
  4. python列表的嵌套_Python中关于列表嵌套列表的处理
  5. SQL Server 2005 在只有MDF文件的情况下恢复(丢失日志文件)
  6. python 文本框_重置Python中的文本框
  7. python xpath定位不到_Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)...
  8. 12月12日习题答案大剖析!再接再厉
  9. 利用SpringCloud搭建一个最简单的微服务框架
  10. 访问一下互联网中的IPV6主机
  11. 51nod-1422:沙拉酱前缀
  12. vivado2018.3添加IP库
  13. 美来临公司商业模式分析,公司是不昨的
  14. 计算机教师继续教育心得,教师继续教育培训个人心得体会
  15. 设置表格表头字体_Excel双栏和三栏斜线表头制作技巧
  16. cocosCreator关闭多点触摸的问题
  17. 解决:Adobe Flash Player已不再受支持
  18. 神武3 服务器维护公告,《神武3》手游本周更新后的调整内容抢先知
  19. 最简单的h264/h265/svac和g711封装成ps流符合gb28181过检码流要求
  20. which语句c语言例子,用which引导的定语从句讲解和句子举例

热门文章

  1. ubuntu shell脚本弹窗小工具yad
  2. YAD2K中test_yolo报错PermissionError: [Errno 13] Permission denied: 'images\\out'
  3. 【字符串】leet459.重复的子字符串(C/C++/Java/Python/Js)
  4. IntentFilter
  5. ubuntu搜狗输入法字体太小,繁体字 怎么办
  6. 电力系统优化调度matlab,[转载]水电站中长期优化调度的粒子群算法MATLAB源码
  7. serface rt 应用软件分享 --持续更新
  8. OLE技术专题——第二讲:复合文件
  9. iBatis对SQL语句的解析。
  10. 迅雷快鸟家庭宽带提速的原理是什么?