实模式/保护模式

Posted xt-xutao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实模式/保护模式相关的知识,希望对你有一定的参考价值。

 

## 实模式和保护模式

### 实模式
时间短,一般无法感知

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主要模式

 

以上是关于实模式/保护模式的主要内容,如果未能解决你的问题,请参考以下文章

实模式/保护模式

Linux进程5——实模式和保护模式

实模式与保护模式

什么是linux 保护模式

X86保护模式入门简介

13 从保护模式返回实模式