实模式/保护模式
## 实模式和保护模式
### 实模式
时间短,一般无法感知
CPU复位(reset)或加电(power
on)的时候就是实模式启动,这个时候处理器是以实模式工作,不能实现权限分级,也不能访问20位以上的地址线,也就是只能访问1M内存(2^18bits, 18位地址线)
之后一般就是加载OS模块,进入保护模式
8086地址线是20位,寄存器是16位,采用:物理地址= 段地址<<4
+ 偏移
从8086发展来的32位处理器地址线扩展到32位,有4GB寻址空间
在保护模式下,系统计算地址的时候是按照对1MB求模进行——Wrap-Around技术
### 保护模式
#### 起源
最开始的程序寻址是:段+偏移,这样的好处是程序员指定的地址就是物理地址,物理地址对程序员可见
这样带来的问题是:
1. 无法支持多任务
2. 程序的安全性无法得到保证
在windows的旧版本中,电脑时不时死机/蓝屏,这其实就是因为内存被破坏导致的。
因为在实模式中,将物理内存看成分段的区域,程序代码和数据位于不区域,系统程序和用户程序区别对待,而指针是任意的,如果用户程序指针指向了系统程序或其他用户程序区域,并改变了区域的数据,就会造成破坏,导致程序/系统崩溃
在保护模式下,全部32条地址线有效,4G寻址空间,存储器分段管理机制和分页管理机制等,不仅为存储器共享和保护提供了硬件支持,而且为实现虚存提供硬件支持。支持多任务,能快速进行任务切换和保护任务环境。
保护模式出现的原因是:**保护进程地址空间**,这样产生了一个结果——两种模式下的程序寻址方式发生了变化
#### 保护模式下的寻址方式和工作原理
地址同样是段+偏移,但是段的概念发生根本变化
段变成了一个索引,指向一个数据结构——全局描述符GDT(或是LDT),它定义了段的起始地址,界限、属性等。
GDT作用是提供段氏存储机制
在实模式中:段地址并非真正的物理地址,<<4+offset
在保护模式中,段地址是32位线性地址,如果未开启分页功能,该线性地址就是物理的地址
From PPT:
l 实模式就是用基地址+偏移量就可以直接拿到物理地址的模式
n 缺点:不安全
l 保护模式:不能直接拿到物理地址的模式
n 需要地址转换
n 从80386开始,是现代OS主要模式