x86下的实模式、保护模式和虚拟8086模式
阅读数:238 评论数: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模式,还属于保护模式。
相关推荐
一、概念
1、u-boot本质上就是一个单片机程序,所以对应不同的硬件设计和cpu,u-boot必须按需修改。
2、u-boot用来引导启动操作系统。
3、文档地址:https://u-boot.re
一、CPU的设计规范
设计一款CPU,要遵循CPU设计规范,也就是指令集。目前的指令集主要有两种,一种是x86架构,一种是ARM架构,当然非主流的还有MIPS指令集、RISC-V指令集,二者基于RIS