从实模式到保护模式

合集下载

内存寻址的三种模式

内存寻址的三种模式

内存寻址的三种模型1. 地址的种类首先明确一下逻辑地址和线性地址这两个概念:1. 逻辑地址2. 线性地址3. 物理地址1.1 逻辑地址:逻辑地址是编译器生成的,我们使用在linux环境下,使用C语言指针时,指针的值就是逻辑地址。

对于每个进程而言,他们都有一样的进程地址空间,类似的逻辑地址,甚至很可能相同。

1.2 线性地址:线性地址是由分段机制将逻辑地址转化而来的,如果没有分段机制作用,那么程序的逻辑地址就是线性地址了。

1.3 物理地址物理地址是CPU在地址总线上发出的电平信号,要得到物理地址,必须要将逻辑地址经过分段,分页等机制转化而来。

2. 三种寻址模型x86体系结构下,使用的较多的内存寻址模型主要有三种:1. 实模式扁平模型real mode flat model2. 实模式分段模型real mode segment model3. 保护模式扁平模型protected mode flat model下面是对这三种模型的描述实模式和保护模式相对,实模式运行于20位地址总线,保护模式则启用了32位地址总线,地址使用的是虚拟地址,引入了描述符表;虽然二者都引入了段这样一个概念,但是实模式的段是64KB固定大小,只有16KB个不同的段,CS,DS等存储的是段的序号(想想为什么?)。

保护模式则引入了GDT和LDT段描述符表的数据结构来定义每个段。

扁平模型和分段模型相对,区别在于程序的线性地址是共享一个地址空间还是需要分成多个段,即为多个程序同时运行在同一个CS,DS的范围内还是每个程序都拥有自己的CS,DS:前者(flat)指令的逻辑地址要形成线性地址,不需要切换CS,DS;后者的逻辑地址,必须要经过段选择子去查找段描述符,切换CS,DS,才能形成线性地址。

3. 实模式扁平模型该模式只有在386及更高的处理器中才能出现!80386的实模式,就是指CPU可用的地址线只有20位,能寻址0~1MB的地址空间。

VxWorks及BSP启动流程与顺序

VxWorks及BSP启动流程与顺序

目录1vxworks映像类型 (1)1.1 可加载的映像类型(vxwoks) (1)2vxworks映像启动顺序 (1)2.1 可加载型vxworks映像启动顺序 (2)2.2 基于ROM的vxworks映像启动顺序 (2)2.3 基于ROM驻留型vxworks映像启动顺序 (3)3BSP基础知识 (4)3.1 BSP的定义 (4)3.2 BSP的功能 (4)3.3 BSP的组成 (4)4BSP的启动 (5)4.1 BSP的启动流程 (5)4.2.1 romInit.s:romInit()函数 (6)4.2.2 bootInit.c:romStart()函数 (14)4.2.3 bootConfig.c分析 (24)4.2.4 sysLib.s:sysInit()函数 (27)4.2.5 usrconfig.c:usrInit()函数 (28)4.2.6 usrconfig.c:usrRoot()函数 (29)5总结 (32)VxWorks及BSP启动流程与顺序———李守轩摘要:本文首先介绍vxworks映像的类型及各类型vxworks映像的启动顺序;然后介绍BSP的启动流程与初始化顺序。

关键词:vxworks映像;BSP启动;代码分析1vxworks映像类型对于vxworks映像的启动情况,从根本上看,在初始化和装载vxworks映像的过程中,处理器所执行的步骤在逻辑上是一样的。

对于有些处理器可能需要增加一些额外的步骤,而另一些处理器可能会省略掉某些步骤。

当构造vxworks映像时,根据需要可以构造不同类型的映像,系统把这些映像划分成以下三种类型。

1.1可加载的映像类型(vxwoks)可加载型映像的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。

而引导代码分为两种:(1)引导代码固化在ROM或FLASH中;(2)引导代码是一个独立的vxworks应用;引导代码通常也是一种vxworks映像,也被称为引导映像。

cpu寄存器

cpu寄存器
TR3, TR4, TR5, TR6 和 TR? 寄存器(测试寄存器)用于某些条件测试。
DS(Data Segment):数据段寄存器;
SS(Stack Segment):堆栈段寄存器;
ES(Extra Segment):附加段寄存器。
当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器 CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。 所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。
(1)通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).
数据寄存器分为:
AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.
(2)如果TF=0,则处于连续工作模式。
SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。
ZF: 零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
AF:下列情况下,辅助进位标志AF的值被置为1,否则其值为0:
(1)、在字操作时,发生低字节向高字节进位或借位时;
(2)、在字节操作时,发生低4位向高4位进位或借位时。

内存管理与保护模式

内存管理与保护模式

内存管理与保护模式本实验讨论x86采用的内存管理模式:从分段实模式到分段保护模式,再到分页虚拟内存管理,并介绍进入保护模式、启动分页机制、以及获取内存大小的基本方法。

1 x86的内存管理内存的分段(segmentation)管理符合程序的逻辑结构,利于程序的保护和动态控制。

分页(paging)则最适合虚拟内存的管理需要。

目前主流操作系统的内存管理采用的是分页方法(如类Unix),也有采用段页式的(如Wiondows)。

Intel 8086支持不带保护功能的分段内存管理,80286开始引入带保护功能的分段内存管理,80386又引入了支持虚拟内存的分页内存管理,但其分页是建立在分段基础上的。

IA-32和x64处理器,都支持段页式内存管理。

1.1 实模式Intel的16位处理器8086,采用的是分段内存管理,CPU中有CS、DS、SS和ES四个16位段寄存器,作为基地址,分别用于生成代码、数据、堆栈和其他段的物理地址:20位物理地址= 16位段寄存器值*16(或左移4位)+ 16位偏移量寻址空间只有(220=)1MB,最大段长为(216=)64KB。

因为这样的CPU只能生成和访问真实的物理内存地址,所以被称为实地址模式(real-address mode),简称为实模式(real mode)。

不过这种分段方法并不是现代的分段技术,没有提供任何内存保护功能,不能阻止内存的越界访问。

而且8086 CPU也没有提供任何特权分级,谁都可以任意改变CS、DS和SS 寄存器中的值,从而可以执行/访问内存任何地址的指令/数据,完全没有安全可言。

因此在8086 CPU上,是不可能构建现代操作系统的。

1.2 保护模式1982年推出的16位的80286处理器,在x86体系中首次引入了(分段式的)内存保护机制,称之为保护模式(protected mode)。

不过80286的保护模式只支持24位的地址空间(最多只能访问16MB内存)和16位的界限大小(最大段长为216=64KB或216+8=224=16MB),且只能从实模式进入保护模式,而不能从保护模式返回实模式。

VxWorks及BSP启动流程与顺序

VxWorks及BSP启动流程与顺序

目录1vxworks映像类型 (1)1.1 可加载的映像类型(vxwoks) (1)2vxworks映像启动顺序 (1)2.1 可加载型vxworks映像启动顺序 (2)2.2 基于ROM的vxworks映像启动顺序 (2)2.3 基于ROM驻留型vxworks映像启动顺序 (3)3BSP基础知识 (4)3.1 BSP的定义 (4)3.2 BSP的功能 (4)3.3 BSP的组成 (4)4BSP的启动 (5)4.1 BSP的启动流程 (5)4.2.1 romInit.s:romInit()函数 (6)4.2.2 bootInit.c:romStart()函数 (14)4.2.3 bootConfig.c分析 (24)4.2.4 sysLib.s:sysInit()函数 (27)4.2.5 usrconfig.c:usrInit()函数 (28)4.2.6 usrconfig.c:usrRoot()函数 (29)5总结 (32)VxWorks及BSP启动流程与顺序———李守轩摘要:本文首先介绍vxworks映像的类型及各类型vxworks映像的启动顺序;然后介绍BSP的启动流程与初始化顺序。

关键词:vxworks映像;BSP启动;代码分析1vxworks映像类型对于vxworks映像的启动情况,从根本上看,在初始化和装载vxworks映像的过程中,处理器所执行的步骤在逻辑上是一样的。

对于有些处理器可能需要增加一些额外的步骤,而另一些处理器可能会省略掉某些步骤。

当构造vxworks映像时,根据需要可以构造不同类型的映像,系统把这些映像划分成以下三种类型。

1.1可加载的映像类型(vxwoks)可加载型映像的执行需要通过引导代码把它装载到目标机RAM中,然后才开始执行。

而引导代码分为两种:(1)引导代码固化在ROM或FLASH中;(2)引导代码是一个独立的vxworks应用;引导代码通常也是一种vxworks映像,也被称为引导映像。

《x86汇编语言:从实模式到保护模式》检测点和习题答案

《x86汇编语言:从实模式到保护模式》检测点和习题答案

《x86汇编语⾔:从实模式到保护模式》检测点和习题答案检测点1.1:按顺序分别为:13 15 78 255 128 56091检测点1.2:按顺序分别为:1000 1010 1100 1111 11001 1000000 1100100 11111111 1111101000 1111111111111111 100000000000000000000检测点1.3:按顺序分别为:8 10 11 12 13 14 15 16 31 1741 1022 4092 65535检测点1.4:按顺序分别为:8 a c f 19 40 64 ff 3e8 ffff 100000检测点1.5:1.按顺序分别为:11 1010 1100 1111 100000 111111 1011111110 1111111111111111 100111111100000001011101 11111001100111111111110111111112.按顺序分别为:1/1 11/3 0101/5 111/7 1001/9 1011/A 1101/D 1111/F 0/0 10/2 100/4 110/6 1000/8 1100/C 1110/E检测点1.6:1.4092/111111111100 2.27B6100/10011110110110000100000000第1章习题:1.5 C =15D=1111B =12D=1100B =10D=1010B =8H=1000B =11D=1011B =14D=1110B =16D=10000B 2.12 10101 10001111 1000000000 1FF检测点2.1:1.(2) (16) (4) (32) 2. (7) (8) 最⾼位 3. (00) (0F) (8) (00、02、04、06、08、0A、0C、0E) 双字时,是00、04、08、0C检测点2.2:A3D8H检测点2.3:1.8 (AX BX CX DX SI DI BP SP) (AH AL BH BL CH CL DH DL) 2.(A) (C) (D F) 3.(A B C D F)第2章习题:1. 64个 2. 25BC0H~35BBFH检测点3.1:1.(略) 2. (B) (A) (C)第3章习题:1. 00H、35H、40H 2. 49H(即73个字节)检测点4.1:1.(0) (0) (1) (0) (0) (1) 2. (A B C)检测点4.2:1.(略) 2. (略) 3.应在屏幕克上⾓显⽰a、s、m三个字母检测点5.1:1.(0xB8000) (0xB800) (0xF9E) (0x27) (0x48) 2. (E F G H J L) A错误的原因是企图向8位寄存器传送16位字; B错误的原因是向段寄存器传送⽴即数; C错误的原因是通过8位寄存器AL向段寄存器传送; D错误的原因是未指⽰内存操作数的长度; I错误的原因是两个寄存器不匹配; K错误的原因是在两个内存单元之间传送。

ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载

ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载

ASM:《X86汇编语⾔-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载第⼋章是⼀个⾮常重要的章节,讲述的是实模式下对硬件的访问(这⼀节主要讲的是硬盘),还有⽤户程序重定位的问题。

现在整理出来刚好能和保护模式下的⽤户程序定位作⼀个对⽐。

★PART1:⽤户程序的重定位,硬盘的访问1. 分段、段的汇编地址和段内汇编地址NASM编译器使⽤汇编指令“SECTION”或者“SEGMENT”来定义段。

他的⼀般格式是SECTION 段名称或者SEGMENT段名称(段名称不能重复),另外NASM对段没有数量的限制,⼀个程序可以有很多的代码段和数据段。

Intel处理器要求段在内存中的其是物理地址起码是16字节对齐的,⽽NASM 提供了段的修饰符align,使每⼀个段可以16字节对齐或者32字节对齐,⽐如所谓段的汇编地址其实就是段内第⼀个元素(数据,指令)的汇编地址,16字节对齐的意思是所有段⾸的汇编地址都要可以被16整除,如果存在⼀个段要求16字节对齐,⽽这个段的前⼀个段长度不够使当前段不能16字节对齐,那么编译器会⾃动将前⼀个段补0来使这⼀个段满⾜16字节对齐。

NASM编译器提供以下形式section.段名称.start来获得段的汇编地址,⽐如:另外段还可以加⼀个vsart修饰符,因为在NASM编译器中,即使你定义了⼀个段,段的汇编地址就是段内第⼀个元素的汇编地址,但是在引⽤某个标号的时候(包括section.段名称.start),这个标号的汇编地址还是从整个程序的开头开始计算的,⽽不是对段⾸的偏移。

不过再加了vsart=0的时候,段内所有标号的地址都是相对于当前段⾸的偏移了(当然也可以设定为其他数值,标号的偏移值是在这个值的基础上加上与段⾸的偏移地址。

)2. ⽤户程序头部加载⼀个⽤户程序需要⼀个加载器(在实模式下),⽽加载器是不知道⽤户程序⾥⾯具体的结构和功能的,⼀个程序想要运⾏,那么这个程序就要满⾜运⾏环境的⼀些约定俗成的条件,也就是程序哪些部分要怎么写是固定的,现在我们在MBR加载⼀个程序也是⼀样的,只要⽤户程序在某些部分满⾜⼀些条件,我们的加载器就可以识别并加载它。

什么叫实模式,什么叫保护模式

什么叫实模式,什么叫保护模式

什么叫实模式,什么叫保护模式?概念……没背过特点……DOS就是实模式的,现在的Winows、Unix之类东西都是保护模式的。

实模式下只能访问那可怜的1M内存,要想突破这个限制,麻烦得很,你还记得DOS下那一堆什么XMS (扩充内存)、EMS(扩展内存)吧?本来是连续的64M内存,在DOS下访问,还得调用什么中断,好麻烦。

Watcom C++之所以当时有些名气就是占了这个便宜,说集成开发环境,那和BC是没法比,但就因为它提供了DOS4GW支持,可以很方便的是你的程序在DOS访问4G 内存,写32位的程序。

至于保护模式,特性挺多,如线性地址、虚拟内存、权限保护之类的东西都是CPU提供的功能,为开发现代操作系统提供了很多便利。

x86CPU在初始化的时候都是先进入实模式,然后操作系统再切换到保护模式。

详情你找本书看看吧。

有一本《386保护模式编程》你可以看看,写得挺多。

dos下内存是很简单的,指针指向的几乎就是实际的物理地址。

实模式的指针是16bit的,就是直接访问的内存是640k,640k~1M之间的内存是通过中断把页切换到640k里读写完之后又Move到640k以外的。

Dos4GW又提供了别的中断来访问1M~8M以外的内存。

你理解在操作系统限制的时候做这些突破是多么“技巧”的一个年代吧。

其实386已经支持32位指针了,这时又引入了GDT,LDT等概念。

怎么说呢....靠,这样吧,比如你有一大衣柜(GDT),有无数的小抽屉(LDT)。

这个抽屉是你的,那个是你MM的,你MM翻你的抽屉就会发现套套,你翻你MM的抽屉会发现情书...所以要保护!《386保护模式编程》书我看问题的追溯到8086/8088在80866/88时代,地址线只有20条,只能寻址到1M8086采用段式存储管理,每个段最多寻址64k ,原因:指针是16bit的到80286是地址线达到32条,可以寻址到4G的虚拟空间此时提出了保护模式可采用分页式存储管理,以寻址到4G的空间现在的操作系统都是基于80286的保护模式区别与8086提供的实地址方式简介(转)这篇文章将会着重介绍内存寻址的不同方法。

从实模式到保护模式中断技术的教学认识

从实模式到保护模式中断技术的教学认识

长江 大学计算机科 学学 院 李
LI Pe ng

( Co l l e g e o f Co mp u t e r S c i e n c e ,YANGTZ E Un i v e r s i t y,J i n g z h o u Hu b e i 4 3 4 0 2 3 ,Ch i n a)
在 《 微 机 原 理 及 应 用 》 课 程 中 , 中 断 机 制 和 中 断 技 术 是 很 重 要 的 内容 ,它 是 微 机 系 统 的 主 要 组 成 部 分 之 一 。 随 着 计 算 机 技 术 的 不 断 发 展 ,尤 其 是 计 算 机 运 行 的速 度 越 来 越 高 ,对 计 算 机 的 性 能 要 求 也 随 之 愈 来 愈 高 , 不仅要求 外设 与C P U 并行操作 ,而且要求计算 机 能够随时通 过中断方 式发现错误 ,计算机 出现异常时 能够 及时 处理 故障等 。在实模式 下 和 保 护 模 式 下 分 别 转 到 中 断 服 务 程 序 入 口 地 址 的 方 式 区 别 很 大 , 工 作 在 保 护 模 式 下 的 微 型计算机 ,其中断 的功能越来越 强, 中断 系统越来越 复杂,组 成中断系统 的中断技术 成 为 了计 算机 系 统 中 十 分 重 要 的 技 术 ,它 是 《 微 机 原 理 及 应 用 》 课 程 教 学 中 的 重 点 ,也 是难 点 。 1 . 实 模 式 下 中 断 系统 的要 点 3 2 位机 在 实模 式 下 的 中断机 制与 8 0 8 6 的中断机制完 全兼容 。8 0 8 6 有一 个简单而灵 活 的 中断 系 统 ,每 个 中 断 都 有 一 个 中 断 类 型 码 , 以供 C P U 进行识别 ,8 0 8 6 最 多能处理2 5 6 种 不 同 的 中 断 类 型 。 中 断 可 以 由C P U 以 外 的 硬 件 设 备 驱 动 , 也 可 由 软 件 中 断指 令 启 动 。在 某 些 情 况 下 , 也 可 由C P U自身 启 动 。8 0 8 6 的 中 断源可分 为两类 ,即外部 中断和 内部 中断, 外部中 断分为可屏蔽 中断 I N T R 和 非 屏 蔽 中 断 N M I , 可屏 蔽 中 断 请 求 线 I N T R 通 常 由 中 断 控 制 器8 2 C 5 9 A 驱动 , N M I 的优 先 级 比 I N T R 高 。 内部 中 断 是 通 过 软 件 调 用 的 不 可 屏 蔽 中断 , 包 括 溢 出 、单 步 等 陷 阱 中 断 和 I R T T i 指 令 中断 等 8 0 8 6 的 中 断 系 统 以位 于 内存 0 段 内偏 移 地 址从0  ̄0 3 F F H 区域 的 中断 向 量 表 为 基 础 , 中 断 向量 表 中最 多 可 以存 放 2 5 6 个 中断 向量 , 中 断 向量 是 指 中断 服 务 程 序 的 首 地 址 ,包 括 1 6 位 的代 码 段 值 和 1 6 位 的偏 移 地 址 值 ,共 有 4 个 字 节 。 每 个 中 断类 型 码 对 应 一 个 中断 向 量 , C P U 通 过 中 断 类 型 码 找 到 对 应 的 一 个 中 断 向 量 ,于 是 ,执 行 相 应 的 中断 服 务程 序 。 2 . 保护模式下中断 系统的 中断过程 保 护 模 式 下 为 每 一 个 中断 和 异 常 都 分 配 了一个唯一 的识别码 ,称 为中断类 型码 ,微 处理器 用分配给 每个异常 或者 中断的类型码 作 为 访 问 中断 描 述 符 表 ( I 【 r r ) 的 索 引 , 以确 定 中断 或 异 常 处理 程 序 的首 地 址 所 在 的表 项 。 保 护 模 式下 ,仍 然 根 据 2 5 6 个 中 断类 型 码 ,从 中断描述 符表 I D T 和全 局描述 符表 G D T ( 或 局 部 描 述 符表 L D T ) 中经 两 级 查 找 后 ,形 成3 2 位 的 中 断 服 务 程 序 的 首 地 址 ,保 护 模 式 下 进入 中断服 务程 序 的过程 如 图1 所 示 , 以 中 断 类 型 码 乘 以8 作为访 问I D T 的偏 移 地 址 , 读取相应 的中断f q / 陷 阱 门描 述 符 ( 表项) , 门 描 述符给 出了1 6 位 的段 值 ( 选择符) 和 中断 服 务程序 的偏移 地址 ( 偏移 量) , 其 中3 2 位偏移

微机原理与接口技术课后习题参考答案

微机原理与接口技术课后习题参考答案

微机原理与接口技术》李华贵主编课后习题参考答案第1章(1.6 习题)1.简述名词的概念:微处理器、微型计算机、微型计算机系统。

答:(1)微处理器:微处理器(Microprocessor)简称或MP,或CPU。

CPU是采用大规模和超大规模集成电路技术将算术逻辑部件ALU (Arithmetic Logic Unit )、控制部件CU (Co ntrol Un it )和寄存器组R (Registers)等三个基本部分以及内部总线集成在一块半导体芯片上构成的电子器件。

(2)微型计算机:微型计算机(Microcomputer )是指以微处理器为核心,配上由大规模集成电路制作的存储器、输入/输出接口电路及系统总线等所组成的计算机,简称微机。

(3)微型计算机系统:微型计算机系统由硬件与软件两大部分组成,分别称为硬件(Hardware)系统与软件(Software)系统。

其中,硬件(Hardware)系统由CPU、内存储器、各类I/O接口、相应的I/O设备以及连接各部件的地址总线、数据总线、控制总线等组成。

软件(Software)系统:计算机软件(Software)是指为运行、维护、管理、应用计算机所编制的程序及程序运行所需要的数据文档资料的总和。

一般把软件划分为系统软件和应用软件。

其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。

而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。

2.简述名词的概念:指令寄存器、地址寄存器、标志寄存器。

答:(1)指令寄存器:指令寄存器(Instruction Register,IR)用来保存计算机当前正在执行或即将执行的指令。

当一条指令被执行时,首先,CPU从内存取出指令的操作码,并存入IR中,以便指令译码器进行译码分析。

(2)地址寄存器:地址寄存器(Address Register,AR)被动地接受IP传送给它的地址值(二进制地址),AR的作用是保持IP送来的地址,并且以并行方式连接输出到CPU的地址引脚上,以便CPU访问指定的内存单元。

IntelCPU的保护模式来龙去脉

IntelCPU的保护模式来龙去脉

IntelCPU的保护模式来龙去脉1为什么要使⽤cpu的保护模式呢? 经常有不懂的⼈会问我这个问题,第⼀次我也被问住了,只是在看cpu是如何实现的,可却从来没有真正的跳出来思考过,cpu的保护模式带给我们什么好处?答:我⾮常总结的说⼀下。

保护模式主要⽬的保护多任务之间代码访问的完全隔离(使⽤虚拟地址),单任务的⽤户代码和系统代码的访问格式(使⽤cpu的privilege环)。

当然虚拟地址也给内存管理带来了其他的好处,更细节的看下⾯的⽂章转载。

2 为什么⼀定要从实模式切换到保护模式,⽽不是开机就是保护模式? 最主要的原因是:兼容以前的软件,不兼容以前的软件就会失去市场,所以intel处理器发展到今天回如此的复杂。

+++++++++++++++++++++++++++++++++++++++++++++++++++已经⽐较了解intel cpu保护模式的⼈,会觉得下⾯这篇⽂章写得确实不错。

Intel CPU的保护模式简介(⼀)保护模式x86有三种⼯作⽅式:实模式,保护模式和虚拟x86模式。

尽管实⽅式下x86的功能要⼤⼤超过其先前的处理器(8086/8088,80186,80286),但只有在保护⽅式下, x86才能真正发挥更⼤的作⽤。

在保护⽅式下,全部32条地址线有效,可寻址⾼达4G字节的物理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件⽀持,⽽且为实现虚拟存储器提供了硬件⽀持;⽀持多任务,能够快速地进⾏任务切换和保护任务环境;4个特权级和完善的特权检查机制,既能实现资源共享⼜能保证代码和数据的安全和保密及任务的隔离;⽀持虚拟8086⽅式,便于执⾏8086程序。

(1)存储管理机制为了对存储器中的程序及数据实现保护和共享提供硬件⽀持,为了对实现虚拟存储器提供硬件⽀持,在保护⽅式下, x86不仅采⽤扩充的存储器分段管理机制,⽽且提供可选的存储器分页管理机制。

《x86汇编语言:从实模式到保护模式》勘误表

《x86汇编语言:从实模式到保护模式》勘误表

1,第42页,检测点4.2,第1题。

本程序有误,正确的内容是:(由网易邮箱读者'小小鸟'、QQ读者'闪耀'、'流星梦'和'二玉'发现)mov ax,0xb800mov ds,axmov byte [0x00],'a'mov byte [0x02],'s'mov byte [0x04],'m'jmp $times 510-($-$$) db 0db 0x55,0xaa2,第52页,第24行,正确的内容是:(由QQ读者'闪耀'发现)mov ax,[0x02] ;按字操作3,第53页,第4行,正确的内容是:(由QQ读者'tome'发现)mov [0x02],bl4,第65、80、94、129、138页中,需要更正和明确loop指令、短转移指令jmp short、相对近转移指令jmp near和相对近调用指令call near的操作数计算方法和执行过程。

(由网易邮箱读者'小小鸟'、QQ读者'艾小羊'提出)首先,这些指令的操作数都是相对于目标位置处的偏移量。

但需要指出的是,偏移量的计算方法取决于实际的编译器,书中所说的“用目标位置处的汇编地址减去当前指令的汇编地址,再减去当前指令的长度”,不应算错。

其次,处理器的执行过程严格地说,是非IA-32架构的组成部分。

因此,除了结果是确定的,各步骤的先后次序取决于处理器的设计。

历史上,指令的执行过程有不同的解释和说法。

但本书对这些指令执行过程的解释比较模糊和武断。

为严谨起见,再统一描述如下:在以上指令的编译阶段,编译器用目标位置处的汇编地址减去当前指令的下一条指令的汇编地址,结果做为操作数;处理器在执行一条指令时,指令指针寄存器IP会自动指向下一条指令。

因此,当以上指令执行时,IP的内容就是下一条指令的偏移地址。

(软考嵌入式系统设计师)之存储管理复习笔记

(软考嵌入式系统设计师)之存储管理复习笔记

嵌入式系统设计师考试复习笔记之存储管理篇引言2007年下半年通过了嵌入式系统设计师的考试,一大堆的复习资料都不知道扔那里好,卖掉又有点可惜,送人又没人要。

与其让当时的复习笔记沉沦书架底部,还不如整理一下让大家评论评论。

2008年11月的考试也快到了,如果能帮到有需要的人,那我真是乐坏了。

看看06和07年的题目,在存储管理方面的题目蛮多的,应该是一个重要考点。

无论是概念、理论、分析和计算都相当容易出题。

在我当时的复习笔记中这方面算最多了。

这里就先拿这个点说说吧,其他的以后有时间再写了。

1、存储器系统的层次架构计算机系统的存储器被组织城一个金字塔的层次结构。

自上而下为:CPU内部寄存器、芯片内部高速缓存(cache)、芯片外部高速缓存(SRAM、SDRAM、DRAM)、主存储器(FLASH、EEPROM)、外部存储器(磁盘、光盘、CF卡、SD卡)和远程二级存储器(分布式文件系统、WEB服务器),6个层次的结构。

上述设备从上而下,依次速度更慢、容量更大、访问频率更小,造价更便宜。

2、高速缓存(cache)工作原理(参照教程126页,博客画不了图):主要利用了程序的局部性特点。

地址映象是指把主存地址空间映象到cache的地址空间。

地址变换是指当程序或数据已经装入到cache后,在实际运行过程中,把主存地址如何编程cache空间的地址。

常用的地址映象和地址变换的方式有:(教程127页)直接映象和变换:速度快,造价低,但有局限性,不能充分利用cache的好处。

组相联地址映象和变换:速度稍慢但是命中率高。

全相联地址映象和变换:可以任意映射。

常用的cache替换算法:轮转法和随机替换算法。

高速缓存的分类:统一cache和独立的数据/指令cache写通cache和写回cache读操作分配cache和写操作分配cache3、存储管理单元(MMU)MMU在CPU和物理内存之间进行地址转换,将地址从逻辑空间映射到物理空间,这个过程称为内存映射。

保护模式汇编入门

保护模式汇编入门

保护模式汇编入门1.引言1.1 概述概述保护模式汇编是一种计算机编程语言,用于在计算机系统的保护模式下编写程序。

保护模式是一种操作系统提供的模式,它能够提供更高的系统资源访问权限和更强大的功能,相比实模式和其他模式,保护模式具有更大的内存地址空间和更多的指令集。

随着计算机技术的发展,保护模式汇编已经成为了程序员必备的工具之一。

它不仅可以用于编写高效的操作系统内核,还可以用于编写底层设备驱动程序和系统工具。

在保护模式汇编中,可以直接访问内存和硬件设备,并且能够利用专门的指令和特性来提高程序的性能和效率。

保护模式汇编的学习曲线较为陡峭,需要对计算机系统的底层原理有一定的了解。

首先,需要熟悉汇编语言的语法和特性,包括寄存器、指令、标志位等的使用。

其次,需要了解保护模式的特点和限制,比如段机制、特权级和中断处理等。

最后,需要学习如何通过汇编语言来编写具体的程序,包括如何访问内存、处理中断和异常等。

在本文中,我们将介绍保护模式汇编的基本概念和特点。

首先,我们将详细解释什么是保护模式汇编,以及它与其他模式的区别。

然后,我们将介绍保护模式汇编的特点,包括扩展的内存地址空间、多任务处理和特权级机制。

最后,我们将总结保护模式汇编的重要性,并展望它的未来发展。

通过本文的学习,读者将能够了解保护模式汇编的基本知识,并能够开始编写简单的保护模式汇编程序。

1.2 文章结构文章结构部分的内容可以包括以下内容:在本文中,我们将按照以下结构来进行讲解和介绍保护模式汇编的相关知识:1. 引言:首先,我们将通过一个概述来引入本文的主题,简要介绍保护模式汇编的基本概念和其在计算机系统中的重要性。

接着,我们会说明本文的结构和目的,为读者提供一个整体的导读。

2. 正文:在正文部分,我们将详细介绍保护模式汇编的基本概念和特点。

首先,我们会解释什么是保护模式汇编,并对其与实模式汇编的区别进行对比。

然后,我们将深入探讨保护模式汇编的特点,如分段机制、特权级和中断处理等方面的内容。

CPU的实模式和保护模式简介

CPU的实模式和保护模式简介

16位微处理器8086寄存器组成8086/8088包括:4个16位的数据寄存器,2个16位的指针寄存器,2个16位变址寄存器,分成四组。

通用寄存器中,这些寄存器除完成规定的专门用途外,均可用于传送和暂存数据,可以保存算术逻辑运算的操作和运算结果。

段寄存器能在8086 中实现1M物理空间寻址,并可与8080 CPU进行兼容。

段寄存器都是16位的,分别称为代码段(Code Segment)寄存器CS、数据段(Data Segment)寄存器DS、堆栈段(Stack Segment)寄存器SS,附加段寄存器。

标志寄存器在8086中有一个16位用于反映处理器的状态和运算结果的某些特征。

(其中只有9位有定义)这些标志位分为两类:其一是运算结果标志,主要用于反映处理器的状态和运算结果特征。

(例如:进位标志、零标志、符号标志、溢出标志等)其二是状态控制标志,它控制着处理器的操作。

要通过专门的指令才能使状态控制标志发生变化。

(例如:方向标志、中断允许标志、追踪标志)内存的寻址(实模式)8086 CPU有20根地址线,可直接寻址的物理地址空间为1M。

尽管8086/8088内部的ALU 每次最多进行16位运算,但存放存储单元地址偏移的指针寄存器都是16位的,所以8080/8086通过内存分段和使用段寄存器的方法来有效地实现寻址1M的空间。

存储单元的逻辑地址由段值和偏移两部分组成,用如下形式表示:段值:偏移所以根据逻辑地址可以方便地得到存储单元的物理地址,计算公式如下:物理地址(20位) = 段值*16+偏移段值通过段寄存器的值来取得,偏移可由指令指针的IP或其他可作为内存指针使用的寄存器给出。

偏移还可以直接用16位数给出。

指令中不使用物理地址,而使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。

32位微处理器1985年,真正的32位微处理器80386DX诞生,为32位软件的开发提供了广阔的舞台。

CPU的发展历程

CPU的发展历程

CPU的发展历程作为一台计算机的核心——CPU ,它的发展经历了一个漫长而又艰辛的研发过程。

这不仅代表着科技的进步,同时也是一个时代智慧与合作的结晶,从冯。

诺依曼研发的第一台计算机起,CPU的研发就成为一个紧锣密鼓的项目。

他经历的很多时代,以下将一一介绍它的发展历程。

一、X86时代的CPUCPU的溯源可以一直去到1971年。

在那一年,当时还处在发展阶段的INTEL公司推出了世界上第一台微处理器4004。

这不但是第一个用于计算器的4位微处理器,也是第一款个人有能力买得起的电脑处理器!4004含有2300个晶体管,功能相当有限,而且速度还很慢,被当时的蓝色巨人IBM以及大部分商业用户不屑一顾,但是它毕竟是划时代的产品,从此以后,INTEL便与微处理器结下了不解之缘。

可以这么说,CPU的历史发展历程其实也就是 INTEL公司X86系列CPU的发展历程,我们就通过它来展开我们的“CPU 历史之旅”。

1978年,Intel公司再次领导潮流,首次生产出16位的微处理器,并命名为i8086,同时还生产出与之相配合的数学协处理器 i8087,这两种芯片使用相互兼容的指令集,但在i8087指令集中增加了一些专门用于对数、指数和三角函数等数学计算指令。

由于这些指令集应用于 i8086和i8087,所以人们也这些指令集统一称之为X86指令集。

虽然以后Intel又陆续生产出第二代、第三代等更先进和更快的新型CPU,但都仍然兼容原来的X86指令,而且Intel在后续CPU的命名上沿用了原先的X86序列,直到后来因商标注册问题,才放弃了继续用阿拉伯数字命名。

至于在后来发展壮大的其他公司,例如AMD和Cyrix等,在486以前(包括486)的CPU都是按Intel的命名方式为自己的X86系列CPU命名,但到了586时代,市场竞争越来越厉害了,由于商标注册问题,它们已经无法继续使用与Intel的X86系列相同或相似的命名,只好另外为自己的586、 686兼容CPU命名了。

实模式和保护模式的区别

实模式和保护模式的区别

实模式和保护模式的区别实模式和保护模式的区别2009-08-31 20:19 551人阅读评论(1) 收藏举报从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。

只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式(所以存在一个启动时的模式转换问题)。

实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。

在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间;扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持;支持多任务,能够快速地进行任务切换和保护任务环境;4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离;支持虚拟8086方式,便于执行8086程序。

1.虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。

它不是一个真正的CPU模式,还属于保护模式。

2.保护模式同实模式的根本区别是进程内存受保护与否。

可寻址空间的区别只是这一原因的果。

实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。

这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。

为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。

这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。

至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的虚拟地址范围内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行库。

CPU的工作模式

CPU的工作模式

Intel CPU 和ARM CPU 的运行模式摘要: 本文介绍了Intel CPU的三种运行模式:实模式、保护模式,虚拟实模式,同时还介绍了ARM处理器的工作模式:用户模式和特权模式,并且分析比较了两种CPU的这些运行模式的作用及适用场合,以便对这些运行模式有更深入的了解。

CPU作为计算机和各种电子设备的大脑,对计算机和电子设备起着至关重要的作用,它主要用来解释指令和处理数据,是计算机和电子设备能够实现各种各样的功能的基础。

CPU运行模式指的是各种工作环境,以及对芯片的指令和能力的影响。

CPU运行模式控制处理器如何查看和管理系统存储器以及使用它的任务。

Intel的CPU占领了大部分的PC市场,而ARM处理器则大量存在于手机和各种嵌入式设备中。

对这两种CPU的运行模式进行分析能让我们对CPU 的运行模式更加深入的理解。

绝大部分PC的CPU都是Intel公司的CPU,Intel的CPU经过多年的发展,已经当初的一种运行模式发展成了现在的三种运行模式,分别是:实模式、保护模式,虚拟实模式。

下面对这三种模式进行详细介绍。

实模式Intel的8086到80186处理器都只有一种运行模式,这就是实模式。

在这个模式下,CPU用20根地址线进行内存寻址,所以在这个模式下CPU只能访问从00000h--FFFFFh的地址范围的内存,即1M大小的内存。

同时使用16根数据线,使用l6位内部寄存器运行16位指令。

由于使用的是16根数据线,为了能够支持使用20位的地址来访问1M的内存,于是就对内存的使用引入了分段机制。

为了支持分段机制,CPU设臵了四个16位的段寄存器:CS、DS、SS、ES,分别是代码段,数据段,堆栈段和其他段,对应于地址总线中的高16位。

寻址时,将段寄存器中的值向左移四位再加上段内偏移量就得到了物理地址。

这样就实现了16位内存地址到20位物理地址的转换,这种方式叫做“映射”。

由于其偏移量只能用16位来表示,所以其支持的段的大小只有64K字节。

从实模式到保护模式

从实模式到保护模式

全局描述符表:GDT
• 各个段描述符的集中地。 • 段描述符表现在是存放在内存中,那CPU是如何 知道它在哪里呢?所以,Intel公司设计了一个全 局描述符表寄存器,专门用来存放段描述符表的 首地址,以便找到内存中段描述符表。这时,段 描述符表地址被存到GDTR寄存器x:yyyyyyyy
实模式
• 不支持硬件上的多任务切换. • 不支持特权级,可以执行所有特权指 令。 • DOS操作系统运行于实模式下,而 Windows/Linux操作系统运行于保护模 式下。
• CPU完全按照8086的实际寻址方法访问从 00000h--FFFFFh(1MB大小)的地址范围 的内存。
保护模式
从实模式到保护模式
• 从80386开始,Intel的CPU具有3种运 行模式: 实模式 保护模式 虚拟8086模式
实模式
• 在实模式下,80X86等同于一个16位 的8086微处理器。 • 采用类似于8086的体系结构,其寻 址机制、中断处理机制均和8086相 同. • 只使用低20位地址线,只能寻址1M 字节的物理地址空间.
• 通常所说的保护模式是指80386处理器及 以后的处理器所实现的运行模式。 • CPU提供了段式和页式内存管理功能,支 持多任务和特权级。 • 物理寻址空间高达4GB(80386/80486)
xxxx:yyyyyyyy
选择子:selector
• 段选择子,也就是数组的索引,即要找的 那个段描述符相对于数组首地址。也就是 需要找的段在全局描述表中的偏移位置。

寄存器分类——精选推荐

寄存器分类——精选推荐

寄存器分类0008086有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。

(1)通用寄存器有8个,又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。

数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。

他们的特点是,这4个16位的寄存器可以分为高8位:AH,BH,CH,DH.以及低八位:AL,BL,CL,DL。

这2组8位寄存器可以分别寻址,并单独使用。

另一组是指针寄存器和变址寄存器,包括:SP(StackPointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(BasePointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(SourceIndex):源变址寄存器可用来存放相对于DS段之源变址指针;DI(DestinationIndex):目的变址寄存器,可用来存放相对于ES段之目的变址指针。

这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。

(2)指令指针IP(InstructionPointer)指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实模式
• 不支持硬件上的多任务切换. • 不支持特权级,可以执行所有特权指 令。 • DOS操作系统运行于实模式下,而 Windows/Linux操作系统运行于保护模 式下。
• CPU完全按照8086的实际寻址方法访问从 00000h--FFFFFh(1MB大小)的地址范围 的内存。
保护模式
• 通常所说的保护模式是指80386处理器及 以后的处理器所实现的运行模式。 • CPU提供了段式和页式内存管理功能,支 持多任务和特权级。 • 物理寻址空间高达4GB(80386/80486)
xxxx:yyyyyyyy
选引,即要找的 那个段描述符相对于数组首地址。也就是 需要找的段在全局描述表中的偏移位置。
从实模式到保护模式
• 从80386开始,Intel的CPU具有3种运 行模式: 实模式 保护模式 虚拟8086模式
实模式
• 在实模式下,80X86等同于一个16位 的8086微处理器。 • 采用类似于8086的体系结构,其寻 址机制、中断处理机制均和8086相 同. • 只使用低20位地址线,只能寻址1M 字节的物理地址空间.
全局描述符表:GDT
• 各个段描述符的集中地。 • 段描述符表现在是存放在内存中,那CPU是如何 知道它在哪里呢?所以,Intel公司设计了一个全 局描述符表寄存器,专门用来存放段描述符表的 首地址,以便找到内存中段描述符表。这时,段 描述符表地址被存到GDTR寄存器中了。
段描述符(64位)
xxxx:yyyyyyyy
相关文档
最新文档