本文已参与「新人创作礼」活动,一起开启掘金创作之路。
👨🎓作者简介:一位喜欢写作,计科专业大二菜鸟
🏡个人主页: starry陆离
🕒首发日期:2022年7月10日星期日
🌌上期文章:『期末复习』微处理器发展历程与微型计算机结构
📚订阅专栏:『微机原理与接口技术』 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦
『期末复习』8086/Pentium的工作模式
明确一下:8086是16位的微处理器
32位微处理器Pentium有三种工作方式:
-
实地址方式
-
虚拟地址方式(保护方式)
-
*虚拟8086方式
1.Pentium的工作模式
1.1实地址模式(Real Address Mode)
就是古老的MS-DOS的运行环境,是CPU启动的时候的模式(Win95及以后的操作系统只利用了两种模式:保护模式和虚拟8086模式。)
-
应用程序直接访问所有IO地址(包括内存地址)
-
实地址模式是16位微处理器采用的方式。32微处理器向下兼容。
-
逻辑地址是程序员编写程序时使用的地址。采用2个寄存器共同组成20位地址(20根地址线)。
-
物理地址仍然是由段地址左移4位+偏移地址来生成。
-
段地址放在段寄存器中,存储单元地址与段基址之差称为偏移量或者有效地址EA。EA也用16位表示,因此段的最大长度为2^16^ =64K字节。
-
实地址模式下的存储单元地址的20位,最大可寻址范围2 ^20^ =1M
逻辑地址=16位的段码和16位的偏移量
逻辑地址的表示: [段选择码:偏移量]
物理地址=段首地址+偏移量=2^4^×段码+偏移量
例题1: 数据89H放在数据段某存储单元,段码放在DS(数据段寄存器),存储单元地址与段首地址的偏移量放在BX(基址寄存器),DS=5432H,BX=1235H。
例题2:
已知物理地址为FFFF0H,且段内偏移量为A000H,若对应的段地址放在DS中,则DS应为 。
A. F5FF0H B.F5FFH C.5FFF0H D. 5FFFH
1.2虚地址模式(保护模式)Protected Virtual Address Mode
简介:是最常用的方式,适用于多任务环境(也是现在系统常使用的模式)
特点:
- 通过逻辑地址— 线性地址(虚拟地址) — 物理地址的寻找方式来实现存储器的管理,由于逻辑地址很大,既能实现大程序的运行,又可以方便地实现多任务的分配和管理。
- 能实现16位或32位的运算。
- 在保护方式下,可以转入到虚拟8086的方式运行。
逻辑地址
- 逻辑地址指的是机器语言指令中,用来指定一个操作数或是一条指令的地址。
- 逻辑地址的表示:[段选择码:偏移量]
线性地址
- 虚地址方式(保护模式)下,段基址要通过查表间接得到。
- 段选择码的作用就是选择段描述表中的某一描述项(描述符),而在描述项中给出了32位段基址和20位的段界限(给出段的长度)。
- 线性地址=段基址(32位)+(段内)偏移量(32位);表示范围2^32^ 即4G。
虚地址方式下从逻辑地址到线性地址的转换
如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。(这里涉及后面章节的段页两级存储结构管理模式,这句话暂时不懂没关系)
1.3虚拟8086模式
是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。
2.怎么理解分段和分页
线性地址也叫虚拟地址(virtual address),跟逻辑地址类似,也是不真实的地址
物理地址可用以下公式:
-
不启动分页机制:物理地址=线性地址
-
启动分页机制:物理地址=页基址+页内偏移量 = 2^32^ * 页码+页内偏移量
3.三种模式区别总结
实模式:
- 内存寻址方式为:段式寻址,即物理地址=段地址*16 +段内偏移地址
- 可寻址任意地址,所有指令都相当于工作在特权级。
- dos工作在实模式下
保护模式:
-
内存寻址方式为:支持内存分段分页和虚拟内存
-
支持多任务,可依靠硬件用一条指令即可实现任务切换,操作系统工作在最高优先级0上,应用程序则运行在较低优先级 上。
从实模式到保护模式,需要建立GDT、IDT(描述符表)等数据表,然后通过修改控制寄存器CR0的控制位(位0保护方式允许位)来实现。
-
Windows工作在保护模式下。
虚拟8086模式:
- 内存寻址方式:段式寻址,与实模式一样
- 支持多任务和 内存分段分页两级管理
- v86模式主要是为了在保护模式下兼容以前实模式应用,即可支持多任务,但每个任务都是实模式的工作方式。