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