x86下的实模式、保护模式和虚拟8086模式

阅读数:169 评论数:0

跳转到新版页面

分类

硬件/嵌入式

正文

实模式

虚地址到实地址转换,段寄存器左移四位与偏移相加,得到物理地址,寻址空间1MB。

80286之前,处理器的内部数据总线、外部数据总线及位宽都是16位,但地址总线(物理引脚)为20位。因此它的可访问物理地址空间为 1MB(2^20字节)。

但是,由于其数据总线及位宽都是16位,最大只能代表有64KB的空间,小于地址总线能代表的1MB空间。为了解决这个问题,设计人员通过用16位的段寄存器内容左移4位,并和16位的段内偏移相加组成的20位代表1MB空间:物理地址 = (段寄存器内容 << 4) + 段内偏移。

通过这种方式能表示的内存地址最大范围即为:0xfff << 4 + 0xffff = 0x10 ffef。已大于1MB,为使地址正常访问,对已得地址对1MB取模,此方法称为 wrap-around。

现代处理器地址总线数已远超20,但是为了向下兼容,系统刚加电时依旧使用实模式。

保护模式

实模式带来了一些问题,主要是物理地址可见带来的无法保证地址空间的安全性问题:不区分系统程序及用户程序,用户可随意更改处于物理内存的敏感数据,极易导致系统崩溃。因此引入保护模式。

虚地址到实地址转换经过MMU,也就是分段和分页机制,寻址空间4GB。另外,保护有两层含义,一是保护操作系统不被随意访问和破坏,另外,保护应用程序在各自的地址空间不被随意破坏。

虚拟8086模式

虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。

 




相关推荐

Intel提供了CPU的技术手册(EDS),地址如下: <a href="https://www.intel.cn/content/www/cn/

1、位和字节的顺序 Intel 64和IA-32处理器是小端模式(最低有效字节存储在低地址位置)。 <img src="http://1024s.top/mbst

一、概念 1、u-boot本质上就是一个单片机程序,所以对应不同的硬件设计和cpu,u-boot必须按需修改。 2、u-boot用来引导启动操作系统。 3、文档地址:https://u-boot.re

一、CPU的设计规范 设计一款CPU,要遵循CPU设计规范,也就是指令集。目前的指令集主要有两种,一种是x86架构,一种是ARM架构,当然非主流的还有MIPS指令集、RISC-V指令集,二者基于RIS