在实模式下。都知道是用段地址加上偏移地址。这里直接上保护模式。(没有考虑分页机制)

1.首先在保护模式为了兼容实模式的分段机制。也使用的分段处理。引入全局描述符表(GDT)用来登记地址,也就是不像实模式下地址可以也随便指。保护模式下要想访问哪个地址(看能否可以访问),你得先登记。因此起到了保护作用。

2.描述符表得保存在内存中,同时要有寄存器去访问,这里也就增加了个全局描述符表寄存器(GDTR),高 32 位指向描述符表的线性地址。(如果没有分页机制就是物理地址)。前 16 位表是描述符(简单讲就是描述符这地址的一些特性,占 8 字节,也就是最多 8192 个描述符, 只有2的 16 次方空间,也就是GDT最大 64kb)。

3.全局描述符表可以随便放哪,但是 cpu 开始起动还是实模式,因此 还是只能访问 1MB。在这1MB里可以随便放。同时进入保护模式时可以再改表的地方。

4.描述符是占 8 字节也就是 64 位。表示一些限制。

/内存的访问/

1.实模式与保护模式的切换开关是一个叫 CR0 的寄存器。(第一位 0 或 1)

2.在 32 位的寄存器或更高位运行在实模式下时,用前 16 位表示段地址。在这里要指出的是,在 8086 (寄存器 20 位)下的寻址是段地址*16 加偏移地址,而32 位 cpu 的寄存器都是 32 位或更高位的 cpu 中,他是当你传 16 位段地址时(后面 16 位补 0),他自动*16,也就是段地址直接是前 20 位,后面的 12 位全为 0。所以向下兼容 。

3.不管在什么模式下只要是在 32 位(更高位也是) cpu 中这些 cs ds ip 等这些原来的16 位的段寄存器(又增加了几个)不是保存段地址了,是段选择子。同时也改名了,把这些寄存器叫作段选择器。(初始化地址后同时看标志位如果运行在实模式(8086模式)下,按 32 位前 20 位表示段地址,最大内存是 2 的 20 次方,高12 位全为 0。 运行在保护模式下32 位全部派上用场)。

4.32 位处理器的真正段寄存器(这里没说 32 位的段寄存器是多少位,也就是在以前 16 位的段寄存器就是简单的用来保存段地址的寄存器,而32 位的段寄存器没那么简单具体情况我也没明白)是前面的用 16 位cs ds ip 等段选择器,和后面一部分组成。

5.传到段选择器中的是段选择子(16 位)

6.真正的段地址=(描述符在表中的偏移地址(偏移地址是索引号*8)+表基地址)中表示的那个地址   ( 表的基地址在 GDTR 中取 ,再然后把真正段地址放在高速缓存器,图中第三步)

7.真正的地址 = 段(基)地址+偏移地址。

8.不仅是数据。指令也是如此。

9.最后主要不同 如果向下兼容的是 20 位 那么 32 位寄存器只用的前 20 位后 12 位全 0(不一定是 0,反正没用到)同理兼容 16 位的只用到 16 位。

分段与分页可以看: http://blog.csdn.net/rosetta/article/details/8933200

cpu 保存模式的内存访问向下兼容原理相关推荐

  1. x64架构CPU各工作模式及内存访问

    一.背景知识 AMD和Intel的x64架构相关名称由来 由于IA-64(英特尔安腾)是Intel当初设计的不兼容IA-32处理器的一个全新架构,所以传统的32位程序无法在这个架构里运行,所以推出后卖 ...

  2. 深入理解计算机系统-之-内存寻址(二)--存储保护机制(CPU实模式与保护模式)

    cpu的保护模式由来 分段机制 8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-8.同时,8086的诞生也是处理器内存寻址技术的第一次飞跃. 对于一 ...

  3. 【OS学习笔记】十五 保护模式三:保护模式下的内存访问机制

    上一篇文章学习了段描述符与段描述符各个标志位的含义:段描述符 本篇文章学习如何进入保护模式,并学习如何在保护模式下进行内存访问. 1.如何进入保护模式 假设我们已经用汇编语言将段描述符安装到GDT中( ...

  4. 详谈RDMA(远程直接内存访问)技术原理和三种实现方式

    目录 远程直接内存访问(即RDMA) InfiniBand技术简介 iWARP 技术简介 RoCE技术简介 远程直接内存访问(即RDMA) 导读:远程直接内存访问(即RDMA)是一种直接内存访问技术, ...

  5. cuda合并访问的要求_【CUDA 基础】4.3 内存访问模式

    Abstract: 本文介绍内存的访问过程,也就是从应用发起请求到硬件实现的完整操作过程,这里是优化内存瓶颈的关键之处,也是CUDA程序优化的基础.Keywords: 内存访问模式,对齐,合并,缓存, ...

  6. 【Java 虚拟机原理】Dalvik 虚拟机 ( 简介 | CPU 指令集 | Dalvik 虚拟机内存 )

    文章目录 一.Dalvik 虚拟机简介 二.CPU 指令集 三.Dalvik 虚拟机内存 一.Dalvik 虚拟机简介 Android 5.05.05.0 之前使用的是 Dalvik 虚拟机 , 5. ...

  7. JVM内存模型、原理、垃圾回收、调优

    JVM内存模型.原理.垃圾回收.调优,这Java语言的基础,作为Java从业人员是必须要掌握的,另外这也是面试经常会问到的知识. ----------------------------------- ...

  8. 内存的工作原理和时序介绍

    内存的工作原理及时序介绍 内存是PC配件中结构最简单的,但在BIOS中却是最难调的,很多玩家超频都卡在内存上.并且,内存的原理.结构与时序多年不会改变,无论将来内存技术如何进步,相信这篇文章的存在价值 ...

  9. qemu-kvm内存虚拟化的原理及其流程

    1.内存虚拟化技术实现原理        内存虚拟化其实就是关于如何做Guest虚机到host宿主机物理内存之间的各种地址转换,KVM经历了三代的内存虚拟化技术,大大加快了内存的访问速率. 先看看虚拟 ...

最新文章

  1. WINCE6.0下开始菜单的“挂起(suspend)”是否可见及阻止系统进入睡眠模式
  2. TX Text Control文字处理教程
  3. 绑定dictionary 给定关键字不再字典中_VBA数组与字典解决方案第51讲:字典嵌套及二级下拉菜单的制作...
  4. DB2 SQL 递归实现多行合并
  5. PIT,JUnit 5和Gradle –仅需额外的一行配置
  6. linux ubuntu 软件安装的三种方式
  7. 【CodeForces - 580D】Kefa and Dishes (状压dp)
  8. Go语言_array,slice,map
  9. chrome老版本_技术周刊 2019-08-06:Chrome 又隐藏了 www
  10. Vuforia AR引擎开发技术博客学习汇总
  11. SmartSens在ISSCC 2019 图像传感器技术领域报告会作开场报告,收录论文抢先披露
  12. JAVA毕设项目汽车租赁管理系统(java+VUE+Mybatis+Maven+Mysql)
  13. C#读取系统注册表信息
  14. IMDB评出来的100部最难看的电影排行榜
  15. 厉害了,我的谷歌小弟
  16. 电子计算机上gt键的功能,请问计算器里的GT键是做什么用的
  17. mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能
  18. .jfif图片怎么在Photoshop中打开
  19. SpringBoot上传图片问题
  20. 网易视频云:HBase优化实战

热门文章

  1. linux服务器时间不同步解决方法
  2. BOM函数之history对象
  3. Linux Shell 操作命令 ls
  4. 聊聊spring-boot-starter-data-redis的配置变更
  5. java特性,健壮性,程序设计风格及文档
  6. python定时下载FTP指定文件
  7. 具体解释Android中AsyncTask的使用
  8. IAAS云计算产品畅想-云主机产品内涵
  9. 计算机三级信息管理技术考试大纲
  10. Nginx限制连接数和下载速度