下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1:实模式:寻址采用和8086相同的16位段和偏移虽,最大寻址空间1MB.最大分段64KB。可以使用 32位指令。32位的X86 CPU用做商速的8086。2:保护模式:寻址采用32位段和偏移氐 最大寻址空间4GB.最大分段4GB (Pentium Pre及以后为 64GB)。在保护模式下CPU可以进入遽拟8086方式.这是在保护模式下的实模式程序运行环境。第一:实模式下程序的运行回顾.程序运行的实质是什么?其实很简矗,就是指令的执行八显然CPU是捋令得以执行的硕件保障,那么CPU如何知道指令在什么地方呢?对f ,80x86系列是使用CS寄存器配合IP寄存器來通知CPU扌&令在内存中的
2、位置.程序指令在执行过程中一般还需要有各种数据,80x86系列有DS、ES、FS. GS、SS等用于指示不同用途的数据段在内存中的位辻n程序可能需要调用系统的服务子程序.80X86系列使用中断机制來实现系统服务。总的來说.这些就是实模式下一个程序运行所需的主要内容(其它如跳转、返回、端口操作等相对來说比较次要。)第二保护模式一从程序运行说起无论实模式还是保护模式,根木的问题还是程序如何在其中运行。因此我们在学习保护模式时应该时刻困绕这个问題來思考。和实模式下一样,保护模式下程序运行的实质仍是"CPU执行抬令.操作相关数据"因此实模式下的各种代码段、数据段、堆栈段、中断服务程
3、序仍然存在,且功能、作用不变。那么保护模式下昴大的变化是什么呢?答案可能因人而异,我的答案是''地址转换方式"变化最大。第三地址转换方式比较先看一下实模式下的地址转换方式,假设我们在ES中存入0x1000.DI 中存入 OxFFFF,那么 ES:DI=0xl000*0xl0+0xFF阡=OxlFFFF,这就是众所周知的''左移4位加偏移"。那么如果在保护模式下呢?假设上面的数据不变ES=0xl000zDI=OxFFFF,现在ES:DI等于什么呢?公式如下:(注:0xl000 = 1000000000000b= 10 0000 0000 0 0
4、0)ES:DI =全局描述符表中第0X200项描述符给出的段基址+OXFFFF现在比较一下,好象是不一样。再仔细看看,又好象没什么区别!为什么说没什么区别.因为我的想法是.既然ES中的内容都不是真正的段地址凭什么实模式下称ES为战段寄存辭而到了保护模式就说是“选择子"?其实它们都是一种映射.只是映射规则不同而已:在实模式下这个''地址转换方式"是''左移4位":在保护模式下是''査全局/局部描述表"O前者是系统定义的映射方式,后者是用户自定义的转换方式。而它影响的都是"shadow registe
5、r"从函数的观点來看,前者是表达式函数,后者是列举式函数:实模式:F(es>segment)=(segment |segment=es*OxlO保护模式:F(es>segment)=(segment | (es,segment) wGDT/LDT 其中GDLDT分别表示全局描述符表和局部描述符表。第四:保护模式基木组成保护模式垠基木的组成部分是用绕着''地址转换方式"的变化增设J'相应的机构。1、数据段前面说过.实模式下的各种代码段.数据段、堆栈段、中断服务程 序仍然存在,我将它们统称为''数据段.木文从此向下凡提到数据段
6、都 是使用这个定义。2、描述符保护模式下引入描述符來描述各种数据段.所有的描述符均为8个字 节(0-7),由第5个字节说明描述符的类型,类型不同,描述符的结构也 有所不同。若干个描述符集中在一起组成描述符表,而描述符表木身也是一种数据段,也使用描述符进行描述。从现在起. ''地址转换"由描述符表來完成.从这个意义上说.描述符表是一张地址转换函数表。3、选择子选择子是一个2字节的数,共16位.般低2位表示RPL.第3位表示査表 是利用GDT (全局描述符表)还是LDT (局部描述符表)进行.最商13位给 出了所需的描述符在描述符表中的地址。(注:13位正好足够寻址8K项
7、)有了以上三个概念之后可以进一步工作现在程序的运行与实模式下完全一样! ! !各段寄存器仍然给出一个''段值",只是这个''假段值" 到真正的段地址的转换不再是“左移4位",而是利用描述符表來完成。但 现在出现一个新的问題是:系统如何知道GDT/LDT在内存中的位迓呢?为了解决这个问題.显然需要引入新的寄存器用于指示GDT/LDT在内存中的位宜。在80x86系列中引入了两个新寄存器GDR和LDR,其中GDR用于 表示GDT在内存中的段地址和段限(就是表的大小),因此GDR是一个48 位的寄存器,其中32位表示段地址 16位表示段限(
8、最大64K.每个描述 符8字节,故最弱有64K/8=8K个描述符)。LDR用于表示LDT在内存中的位 S.但是伙I为LDT木身也是一种数据段,它必须有一个描述符.且该描述 符必须放在GDT中因此LDR使用了与DS、ES. CS等相同的机制.其中只 存放一个''选择子",通过査GDT表获得LDT的真正内存地址。对还有中断要考虑,在80x86系列中为中断服务提供中断/陷阱描 述符.这些描述符构成中断描述符表(IDT),并引入一个48位的全地址 寄存器存放IDT的内存地址。理论上IDT表同样可以有8K项.可是閃为80x86 只支持256个中断,因此IDT实际上最大只能有25
9、6项(2K大小)。第五:新耍求一任务篇前面介绍了保护模式的基木问題,也是核心问题,解决了上面的问題,程序就可以在保护模式下运行了。但众所周知80286以后在保护模式下实现了对多任务的换件支持。我 的第一反应是:为什么不在实模式下支持多任务.是不能还是不愿?思考之后.我的答案是:实模式下能实现笋任务(也许我错了:)o 因为女任务的关键是有了描述符.可以给出关于数据段的额外描述.如权 限等,进而在这些附加信息的基础上进行相应的控制,而实模式下缺乏描 述符.但假设我们规定各段的前2个字节或若T字节用于描述段的附加屈性, 我觉得和使用描述符这样的机制没有木质区别,如果再附加其他机制基于上述考虑.我更倾
10、向于认为任务是独立于保护模式之外的功能。 下面我们來分析一下任务°任务的实质是什么呢?很简单.就是程序吻! ! 所谓任务的切换其实就是程序的切换! !现在问題明朗了。实模式下程序一个接一个运行.因此程序运行的''环境"不必保存:保护模式下可能一个程序在运行过程中被暂停.转而执行 下一个程序,我们要做什么?很容易想到保存程序运行的环境就行了(想 想游戏程序的保存进度功能),比如各寄存器的值等。显然这些''环境数抵构成J'一类新的数据段(即TSSo延用前而的思路. 给这类数据段设垃描述符(TSS描述符),将该类描述符放在GDT中(不能 放
11、在LDT中,因为80x86不允许:),最后再加一个TR寄存器用于査表。 TR是一个起''选择子"作用的寄存器,16位。好久 任务切换的基木匸作就是将原任务的''环境存入TSS数据段.更 新TR寄存器,系统将自动査GDT表获得并装载新任务的''环境".然后转到新 任务执行。第六:附加要求一分贞篇为什么叫附加婆求因为现在任务还不能很好地匸作。前面说过.任务 实质上是程序.不同的程序是由不同的用户写的.所有这些程序完全可能 使用相同的地址空间,而任务的切换过程一般不会包括内存数据的刷新. 不是不可能.而是如果那样做太浪费了。因此必须
12、引入分页机制才可能有效 地完成对多任务的支持。分页引入的主要目标就是解决不同任务相互之间发生地址冲突的问題。 分页的实质就是实现程序内地址到物理地址的映射.这也是一个''地址转换 机制同样可以使用前面的方案(即类似GDT的做法):首先建立页表这样 一种数据段,在80x86中使用二级贞表方案.增设一个CR3寄存器用于存放 一级页表(又称为贞目录)在内存中的地址,CR3共32位.其低12位总是为 零.商20位扌旨示页目录的内存地址,I大I此贞目录总是按贞对齐的。CR3作为 任务''环境"的一部分在任务切换时被存入TSS数据段中。、"|然还得有相应
13、的缺页中断机制及其相关寄存器CR2 (贞故障线性地址寄存器°第七:总结保护模式下増加了什么?1、寄存器 GDR LDR IDR TR CR32、数据段描述符表(GDT LDT)任务数据段仃SS)页表(贞目录二级贞表)3、机制权限检测(利用选择子/描述符/页表项的屈性位)线性地址到物理地址的映知第八:保护模式常用名词解禅前面内容中岀现过的不再解祥。1、RPL选择子、“中的权限位确定的权限2、CPL特指CS中的选择子当中的权限位确定的权限3、EPL EPL=Max(RPL/CPL)z即RPL和CPL中数值较大的,或说权限等级较小的4、DPL描述符中的权限位确定的权限5、PL泛指以上4种特
14、权级6、任务特权=CPL7、I/O特权由EFLAGS寄存器的位13、14确定的权限8、一致代码段 一种特殊的代码段.它在CPL> = DPL时允许访问正常的代码段在CPL=DPL RPL< = DPL时才允许访问原文地址 实模式、保护模式和處拟8086模式一直以来,都搞不清楚这儿个概念。在网上搜了一下,把它晒上,不会再 忘记!有其它的内容,请看到的朋友请补充。从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模 式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后 就运行在保护模式。实模式只能访问地址在1M以下的内存称为常规内存,我们
15、 把地址在1M以上的内存称为扩展内存。在保护模式下,全部32条地址线有效, 可寻址高达4G字节的物理地址空间;扩充的存储器分段管理机制和可选的存 储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟 存储器提供了硬件支持;支持多任务,能够快速地进行任务切换和保护任务环境; 4个特权级和完善的特权检查机制,既能实现资源共享乂能保证代码和数据的安 全和保密及任务的隔离;支持虚拟8086方式,便于执行8086程疗;。虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执 行纯i6位程序。它不是一个真正的CPU模式,还属于保护模式。保护模式同实模式的根本区别是进程内存受
16、保护与否。可寻址空间的区别 只是这一原因的果。实模式将整个物理内存看成分段的区域,程序代码和数据位 于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向”实 在”的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其 他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其 后果就很可能是灾难性的。为了克服这种低劣的内存管理方式,处理器厂商开发 出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟 地址)要山操作系统转化为物理地址去访问,程序对此一无所知。至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他 进程根本没有办法
17、访问不属于自己的物理内存区域,其至在自己的虚拟地址范用 内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行 库。这些区域也不能随便修改,若修改就会有:SIGSEGV (linux段错误);非 法内存访问对话框(windows对话框)。CPU启动环境为16位实模式,之后可以切换到保护模式。但从保护模式 无法切换回实模式事实上,现在的64位奔腾4处理器,拥有三种基本模式和一种扩展模式, 基本模式:保护模式:纯32位保护执行环境。实模式:纯16位无保护执行环境。系统管理模式:当SMI引脚为有效进入系统管理模式,首先保存 当前的CPU±下文。它有独立的地址空间,用来执行电源管理或系统安全方面 的指令。扩展模式:IA32e模式:64位操作系统运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国螺纹钢行业供需趋势及投资风险研究报告
- 2026绥化市辅警招聘考试题及答案
- 2026中国视频监控系统市场发展态势及投资盈利预测报告
- 2026年护理学(中级)相关专业知识从业资格考试真题(夺分金卷)附答案详解
- 2026中国指纹锁市场调研及发展策略研究报告
- 2026年山西国家公务员考试《申论》真题试卷(含答案)
- 2026中国POC凝血分析仪行业发展状况与需求规模预测报告
- 2025-2030中国SaaS行业市场竞争调研与发展前景研究报告
- 2025至2030中国在线教育平台用户行为分析与市场前景预测报告
- 2026中国气体保护焊丝市场前景展望及投资潜力趋势研究报告
- DB51-T 2868-2022 机关事务应急保障规范
- 敦煌曲子戏研究报告
- 新疆2022年中考数学试卷(含答案)
- 人教部编版小学语文说明文阅读专项练习(一)(含答案)
- NB-T35026-2022混凝土重力坝设计规范
- LYT 2085-2013 森林火灾损失评估技术规范
- 怎样才能做到有效巡视病房
- 教师专业发展PPT完整全套教学课件
- 八年级国家义务教育质量监测德育考核试题
- 气体充装站试生产方案
- 《幼儿园游戏化美术教育活动的实践研究》结题报告
评论
0/150
提交评论