1、80386 微处理器微处理器(参考(参考 郁慧娣书第郁慧娣书第9章章9.2、9.3、9.4和第和第3版教材第版教材第8章章 8.2 ) 8.2 80386微处理器微处理器 80386是一种与是一种与16位的位的80286相兼容的第一个高性能全相兼容的第一个高性能全32位微处理器,它代表了体系结构的重要进步位微处理器,它代表了体系结构的重要进步从从16位位体系结构过渡到体系结构过渡到32位位体系结构。体系结构。 80386采用高速采用高速1.5m技术,技术,132条引出条引出线用网格阵列式封装在陶瓷片内,其耗散功率在线用网格阵列式封装在陶瓷片内,其耗散功率在1.5w到到3.0w之间。之间。 一、
2、一、 80386 的特点的特点 1. 80386芯片在硬件结构上由芯片在硬件结构上由个逻辑单元个逻辑单元组成。它组成。它们按们按流水线流水线方式工方式工 作,运行速度可达到作,运行速度可达到MIPS。 2. 80386有三种方式:有三种方式:实方式、保护方式、实方式、保护方式、V86方式方式 。 3. 硬件支持硬件支持段式管理和页式管理段式管理和页式管理,易于实现虚拟存储,易于实现虚拟存储系统。系统。 4. 硬件支持硬件支持多任务多任务,一条指令可以完成任务切换。,一条指令可以完成任务切换。 5. 特权保护机制特权保护机制 4级特权级级特权级:级最优先,其次为,和级。:级最优先,其次为,和级。
3、二、二、 80386 的内部结构的内部结构1. 总线接口总线接口部件(部件(BIU:Bus Interface Unit )。)。2. 指令预取指令预取部件(部件(CPU:Code Prefetch Unit)。)。3. 指令译码指令译码部件(部件(IDU:Instruction Decode Unit)。)。4. 执行执行部件(部件(EU:Execution Unit)。它可进一)。它可进一步分为控制部件(步分为控制部件(Control Unit),保护测试部件保护测试部件(Protection Test Unit)和数据处理部件()和数据处理部件(Data Unit)部分。)部分。5. 段
4、管理段管理部件(部件(SU:Segment Unit)。)。6. 页管理页管理部件(部件(PU:Paging Unit)。)。三、三、 80386 的寄存器结构的寄存器结构 8038680386有类寄存器:有类寄存器:通用寄存器、通用寄存器、段寄存器、指令指针和标志寄段寄存器、指令指针和标志寄存器、控制寄存器、系统地址寄存器、存器、控制寄存器、系统地址寄存器、调试寄存调试寄存器以及测试寄存器。器以及测试寄存器。(一一) 通用寄存器通用寄存器 80386有个有个32位位的通用寄存器,分的通用寄存器,分别命名为别命名为EAX、EBX、ECX、EDX、ESI、EDI、EBP以及以及ESP。(二二)
5、段寄存器和段描述符高速缓存器段寄存器和段描述符高速缓存器 80386增加了增加了FS和和GS两个新的数据段寄存器。两个新的数据段寄存器。 段寄存器段寄存器里存放的不再是段基址的高里存放的不再是段基址的高16位,而是位,而是选择器选择器(P288 图图9.7)。b15 b14 b4 b3 b2b1 b0 索索 引(引(13位)位)TI (0: GDT; 1:LDT)RPL 80386中有一个中有一个32位位的指令指针(的指令指针(EIP)和一个)和一个32位位的的标志寄存器(标志寄存器(EFLAGS)。)。 80386工作在工作在实模式实模式时采用时采用16位位的指令指针的指令指针IP。 EFL
6、AGS的低的低12位与位与8086标志寄存器标志寄存器FLAGS完全相同。完全相同。高高20位位中设置了中设置了4个新的标志个新的标志。(三三) 指令指针和标志寄存器指令指针和标志寄存器图图9.8 9.8 保护方式标志寄存器保护方式标志寄存器 (P288)(P288)(四四) 系统地址寄存器和系统段寄存器系统地址寄存器和系统段寄存器GDTR 全局描述符表寄存器全局描述符表寄存器 IDTR 中断描述符表寄存器中断描述符表寄存器 LDTR 局部描述符表寄存器局部描述符表寄存器 TR任务寄存器任务寄存器全局描述符表寄存器全局描述符表寄存器(GDTR) (图图9.2)例例1. 如果如果GDTR的内容为
7、的内容为200000001FFFh,请给出,请给出GDT的的起始起始地址、结束地址、表的长度地址、结束地址、表的长度。表中放了。表中放了多少个描述符多少个描述符?最最后一个描述符的地址范围后一个描述符的地址范围?解:解:GDT的起始地址的起始地址 = 20000000h GDT的结束地址的结束地址 = 20000000h+1FFFh = 20001FFFh GDT表长表长 = 1FFFh + 1 = 2000h 表中描述符个数表中描述符个数 = 2000h8 = 400h = 1024最后一个描述符的地址范围最后一个描述符的地址范围: 20001FFFh7 = 20001FF8h 20001F
8、FFh 中断描述符表寄存器中断描述符表寄存器(IDTR) (图图9.3)局部描述符表寄存器局部描述符表寄存器(LDTR) (图图9.4)例例2.2.假设假设GDTGDT的基地址为的基地址为01002000h01002000h,LDTR = 2108hLDTR = 2108h,问,问LDT LDT 描述符的地址范围?描述符的地址范围?解:解:LDTRLDTR = 0010000100001000 = 0010000100001000 TITI = 0, LDT = 0, LDT描述符在描述符在GDTGDT中中 索引索引 = 0010000100001= 0010000100001 LDTLDT描
9、述符的起始地址:描述符的起始地址: GDT GDT的基地址索引的基地址索引8 8 = 01002000h = 01002000h001000010000100100001000018 8= 01004108h= 01004108h LDTLDT描述符的地址范围(占描述符的地址范围(占8 8字节):字节): 01004108h 0100410Fh01004108h 0100410Fh任务寄存器任务寄存器(TR) (图图9.6)例例3.3.假设假设GDTGDT的基地址为的基地址为00011000h00011000h,TR = 3208hTR = 3208h,问,问TSS TSS 描描述符的地址范围
10、?述符的地址范围?解:解:TRTR = 0011001000001000 = 0011001000001000 TITI = 0, TSS = 0, TSS描述符在描述符在GDTGDT中中 索引索引 = 0011001000001= 0011001000001 TSSTSS描述符的起始地址:描述符的起始地址: GDT GDT的基地址索引的基地址索引8 8 = 00011000h = 00011000h 001100100000100110010000018 8= 00014208h= 00014208h TSSTSS描述符的地址范围(占描述符的地址范围(占8 8字节):字节): 0001420
11、8h 00014208h 0001420Fh0001420Fh( (五五) ) 控制寄存器控制寄存器 80386中有中有3个个32位的控制寄存器位的控制寄存器CR0、CR2和和CR3,用于保存机器的各种全局性状态,这些,用于保存机器的各种全局性状态,这些状态影响系统所有任务的运行。状态影响系统所有任务的运行。CR1未定义,留作备用。未定义,留作备用。. CR0控制寄存器控制寄存器0 定义了定义了6个控制和状态标志。个控制和状态标志。PE(位(位0)和)和PG(位(位31) 保护控制位。保护控制位。lTS任务切换位任务切换位 每当任务切换时每当任务切换时,处理器将把处理器将把TS置为置为1。MP
12、监控协处理器位监控协处理器位 MP为为1时时,表示有协处理器在工作。表示有协处理器在工作。EM模拟协处理器控制位模拟协处理器控制位 EM为为1时时,表示用软件仿真协处理器。表示用软件仿真协处理器。ET 协处理器扩展类型协处理器扩展类型 0:80287协处理器;协处理器;1:80387协处理器;协处理器;.CR2 控制寄存器控制寄存器 CR2称为页面故障线性地址寄存器,用于发生页面称为页面故障线性地址寄存器,用于发生页面访问异常时报告出错信息。访问异常时报告出错信息。. CR3 控制寄存器控制寄存器 CR3称为页组目录基址寄存器,用于存放页目录表称为页组目录基址寄存器,用于存放页目录表的物理基地
13、址。如下图所示。的物理基地址。如下图所示。(分页时用到)(分页时用到)四、四、80386 的三种工作模式的三种工作模式 80386有有3种工作模式:种工作模式:实地址模式实地址模式(Real Address Mode),简称为简称为实模式实模式;保护虚拟地址模式保护虚拟地址模式(Protected Virtual Address Mode),也叫),也叫保护模式保护模式;虚拟虚拟8086模式模式(Virtual Address 8086 Mode),简称为),简称为V86模式模式。实地址模式实地址模式当当80386在在刚加电启动或复位刚加电启动或复位时,便由操作系时,便由操作系统自动控制进入统
14、自动控制进入实模式实模式。实模式实模式主要是为主要是为80386进行进行初始化初始化用的,为用的,为80386保护模式所需要的数据结构做好各种配置和保护模式所需要的数据结构做好各种配置和准备。准备。在实模式下,在实模式下,80386类似于类似于8086的体系结构,的体系结构,与与8086兼容兼容。保护虚拟地址模式保护虚拟地址模式 保护模式保护模式是是80386最常用最常用的、也是的、也是最具特色最具特色的工作的工作模式。通常在开机或复位后,机器先进入模式。通常在开机或复位后,机器先进入实模式完成实模式完成初始化初始化,然后就,然后就立即切换到保护模式立即切换到保护模式。 保护模式提供了保护模式
15、提供了多任务环境多任务环境中的各种复杂功能以及中的各种复杂功能以及对复杂存储器组织的管理机制对复杂存储器组织的管理机制 :1)多用户、多任务;)多用户、多任务;2)虚拟存储管理;)虚拟存储管理; 物理存储空间:物理存储空间:4GB; 虚拟存储空间:虚拟存储空间:64TB 所谓所谓虚拟存储空间虚拟存储空间是指程序所占有的存储空间。是指程序所占有的存储空间。80386系统中,由于内存容量的限制,并不可能将系统中,由于内存容量的限制,并不可能将所有的段都放在内存中的,而必须将所有的段都放在内存中的,而必须将大部分段大部分段放在放在海量的海量的外部磁盘外部磁盘上,待执行到相关程序段时再调入上,待执行到
16、相关程序段时再调入内存,将暂时不执行的程序段调出内存。内存,将暂时不执行的程序段调出内存。程序员编写程序时,其程序存入磁盘。这样,程序员编写程序时,其程序存入磁盘。这样,从程序员的角度来看,系统中似乎有一个容量很大、从程序员的角度来看,系统中似乎有一个容量很大、速度也相当快的虚拟存储器;当然,它并不是真正速度也相当快的虚拟存储器;当然,它并不是真正的物理上的内存。的物理上的内存。3)保护机制;)保护机制; 特权保护机制、不同任务之间的隔离特权保护机制、不同任务之间的隔离(不同的虚不同的虚拟存储空间拟存储空间)虚拟虚拟8086模式模式(1)使)使80386可以快速地执行可以快速地执行多个多个80
17、86 的应用程序的应用程序。(2)段寄存器的用法和实模式时相同。)段寄存器的用法和实模式时相同。(3)存储器寻址空间为)存储器寻址空间为1MB,可以使用,可以使用分页机制分页机制,支持,支持多多任务任务。 在多任务系统中,在多任务系统中,80386可以使其中的一个或几个任务可以使其中的一个或几个任务使用虚拟使用虚拟8086模式。此时,可以使一个任务所用的全部页模式。此时,可以使一个任务所用的全部页面定位于某个物理地址空间,而另一个任务所用的页面定面定位于某个物理地址空间,而另一个任务所用的页面定位于其他物理地址空间,这样,就把存储器虚拟化了,虚位于其他物理地址空间,这样,就把存储器虚拟化了,虚
18、拟拟8086模式的名称即由此而来。模式的名称即由此而来。(4)在虚拟)在虚拟8086模式中,程序是模式中,程序是在最低特权级(在最低特权级(3级)级)上运上运行的,因此,行的,因此,80386指令系统中的一些指令系统中的一些特权指令特权指令是是不能使不能使用用的。的。 五、五、 80386 的存储器管理的存储器管理80386利用片内的存储管理单元(利用片内的存储管理单元(Memory Management Unit,简称简称MMU )来实现对存储器系)来实现对存储器系统的统的两级管理两级管理:分段管理分段管理(逻辑地址(逻辑地址线性地址)线性地址)和和分页管理分页管理(线性地址(线性地址物理地
19、址)物理地址) 。 在两级存储管理中,在两级存储管理中,段的大小可以选择段的大小可以选择(可以(可以字节字节或或页页为单位),根据数据结构和代码模块的大为单位),根据数据结构和代码模块的大小而确定。小而确定。另外,对每个段还可以赋予另外,对每个段还可以赋予属性和保护信息属性和保护信息,以有效防止在以有效防止在多任务环境下多任务环境下各个模块对存储器的越各个模块对存储器的越权访问。权访问。(一一) 实模式实模式80386的所有指令在实模式下都有效。其物理的所有指令在实模式下都有效。其物理地址的形成与地址的形成与8086相同相同,可寻址的可寻址的实地址空间实地址空间只有只有1MB,所有的,所有的段
20、最大容量为段最大容量为64KB。 中断向量表中断向量表仍设置在仍设置在00000H003FFH共计共计1K字节的存储区内。字节的存储区内。系统系统初始化区初始化区在在FFFFFFF0HFFFFFFFFH存储区内。存储区内。(二二) 保护模式保护模式保护模式下采用保护模式下采用段页式管理机构段页式管理机构。保护模式下采用保护模式下采用段页式管理机构段页式管理机构。注意区分注意区分逻辑地址逻辑地址、线性地址线性地址和和物理地址物理地址这这3者者之间的关系。之间的关系。(二二) 保护模式保护模式逻辑地址逻辑地址:16位位 段选择子段选择子 + 32位位 有效地址有效地址 有效地址有效地址 = 基址基
21、址+变址变址比例因子比例因子+位移量位移量线性地址线性地址由存储器由存储器段式管理段式管理机构按机构按下下式来计算:式来计算: 线性地址线性地址 = 段基地址段基地址+有效地址有效地址物理地址物理地址 页式管理机构不工作时,页式管理机构不工作时,物理地址物理地址 = 线性地址线性地址; 页式管理机构工作时,页式管理机构工作时,物理地址物理地址 = F(线性地址线性地址)分段管理分段管理为了实现分段管理,为了实现分段管理,80386把有关段的把有关段的信息存放在一个称为信息存放在一个称为段描述符段描述符(简称描述(简称描述符)的符)的8个字节个字节长的数据结构中,并把系统长的数据结构中,并把系统
22、中所有的描述符编成一张表,以便硬件查中所有的描述符编成一张表,以便硬件查找和识别。找和识别。80386共设置了共设置了3种描述符表种描述符表,即,即全局全局描述符表描述符表GDT、局部描述符表局部描述符表LDT和和中断中断描述符表描述符表IDT。段描述符段描述符包括:包括: 段基地址段基地址(Base Address),规定了线性地),规定了线性地址空间中段的起始地址。也可以把基地址看成是址空间中段的起始地址。也可以把基地址看成是段内偏移量为的线性地址。段内偏移量为的线性地址。 段的界限段的界限(Limit),表示在虚拟地址中,段内),表示在虚拟地址中,段内可使用的最大偏移量。可使用的最大偏移
23、量。 段的属性段的属性(Attributes),包括该段是否可读),包括该段是否可读出、写入以及段的特权级等。出、写入以及段的特权级等。 有两种类型的段:有两种类型的段:非系统段非系统段、系统段系统段; 两种段描述符:两种段描述符:非系统段描述符、非系统段描述符、 系统段描述符系统段描述符。非系统段描述符非系统段描述符 (P296 图图9.20) 非系统段指一般的非系统段指一般的代码段、数据段和堆栈段代码段、数据段和堆栈段。(s=1)基地址(基地址(B0B15)界限(界限(L0L15)属性字节(访问权字节)属性字节(访问权字节)(8位位):B5基地址(基地址(32位)位):B7 B4 B3 B
24、2界限(界限(20位)位):B6 (低低4位位) B1 B0例例 请分析下面的描述符:请分析下面的描述符: 6 4 2 0 8 0 0 0 B 2 0 A 0 0 0 0 0 3 F F解:解:属性字节属性字节:B2h = 10110010 可写的数据段,可写的数据段,DPL=1,在内存,未访问过。,在内存,未访问过。 数据段基址数据段基址:800A0000h 界限界限:003FFh 系统段描述符系统段描述符 (P299 图图9.23)系统段描述符也称为系统段描述符也称为特殊段特殊段描述符(描述符(S位为位为0)。)。系统段包括任务状态段系统段包括任务状态段TSS和和门门,另外,局部描,另外,
25、局部描述符表述符表LDT也作为一种系统段。也作为一种系统段。基地址(基地址(B0B15)界限(界限(L0L15)例例 请分析下面的描述符:请分析下面的描述符: 1、 6 4 2 0 0 0 0 0 A 2 1 0 0 0 0 0 0 0 F F解:解:属性字节属性字节:A2h = 10100010 386LDT描述符,有效,描述符,有效,DPL=1。 LDT基址基址:00100000h 界限界限:000FFh分段管理总结分段管理总结例例 (P297 图图9.21):访:访 问问 代代 码码 段段分页管理分页管理在在80386中,在设计分段管理的基础上又增加中,在设计分段管理的基础上又增加了分页
26、管理。在多任务系统中,有了分页管理功了分页管理。在多任务系统中,有了分页管理功能,就只需把每个活动任务当前所需要的少量页能,就只需把每个活动任务当前所需要的少量页面放在存储器中。面放在存储器中。当当CR0中的中的PG=1时时,系统就系统就启动分页启动分页机制;机制;当当PG=0时,则时,则禁止使用分页禁止使用分页机制,而且把分机制,而且把分段机制产生的段机制产生的线性地址线性地址直接直接当当作作物理地址物理地址使用。使用。80386分页管理的对象是固定大小为分页管理的对象是固定大小为4KB的存的存储块,称之为储块,称之为页页。段页式结构的寻址过程段页式结构的寻址过程下44CR3页表结构、页目录
27、描述符以及页描述符页表结构、页目录描述符以及页描述符 80386采用了两级表结构:采用了两级表结构: 页目录表页目录表和和页表页表。 当允许分页时,分页机制将实现两级地址转当允许分页时,分页机制将实现两级地址转换换: :在较高一级,由页目录表中的一个在较高一级,由页目录表中的一个页目录项页目录项映射页表映射页表;在低一级,由;在低一级,由页表映射页页表映射页。 图图9.24 页目录项和页表项的格式(页目录项和页表项的格式( P299 ) P 存在位存在位,表示该页,表示该页/页表是否在内存页表是否在内存 W 写允许位写允许位,表示该页,表示该页/页表是可写页表是可写 U 用户位用户位,表示该页
28、,表示该页/页表用户是否可用页表用户是否可用 A 访问位访问位,表示该页,表示该页/页表是否访问过页表是否访问过 D 出错位出错位 AVL 程序员可使用的位程序员可使用的位 当页目录项和页表项的当页目录项和页表项的U、W位不一致时,选取最小的值。位不一致时,选取最小的值。例例 假设页目录项的假设页目录项的U W位位 = 11(用户可写),页表项的(用户可写),页表项的U W位位 = 10(用户可用,但只可读,不可写)(用户可用,但只可读,不可写) 则,则,最终最终 U W位位 = min(11, 10) = 10 (用户可用,但只可读,(用户可用,但只可读,不可写)不可写)分页管理寻址过程举例
29、分页管理寻址过程举例假设线性地址假设线性地址 = 12345678H,CR3 = 10000000H,页目录描述符页目录描述符= 20000005H,页描述符,页描述符= 30000007H 求求: 1)页目录描述符的地址)页目录描述符的地址2)页描述符的地址)页描述符的地址3)操作数()操作数(32位)的地址位)的地址4) 操作数用户是否可写?操作数用户是否可写?答答: 1)页目录描述符的地址)页目录描述符的地址10000120H 10000123H2)页描述符的地址)页描述符的地址20000D14H 20000D17H3)操作数()操作数(32位)的地址位)的地址30000678H 300
30、0067BH操作数用户是否可写?操作数用户是否可写?页目录描述符页目录描述符: U=1, W=0, 不不可写可写页描述符页描述符: U=1, W=1,可,可写写操作数用户不可写操作数用户不可写CR344分段分页综合例题分段分页综合例题 8038680386工作在保护方式下,工作在保护方式下,GDTR = 0020 0000 1FFFHGDTR = 0020 0000 1FFFH,LDTR = 3009HLDTR = 3009H, CS = 1007HCS = 1007H,EIP = 0000 0800HEIP = 0000 0800H。1 1)GDTGDT的起始地址为的起始地址为 , 结束地址
31、为结束地址为 。 GDT GDT的表长为的表长为 。2 2)LDTLDT描述符的地址范围是描述符的地址范围是 到到 。3)若代码段描述符为:)若代码段描述符为: 6 4 2 0 则代码段的属性为:则代码段的属性为: 特权级特权级 ,是否可读,是否可读 , 是否在内存是否在内存 ,是否访问过,是否访问过 。 代码段的长度为代码段的长度为 。 0 0 0 0 FB 5 0 0 0 0 0 0 F F F4)若若80386仅分段,不分页,则当前执行指令的仅分段,不分页,则当前执行指令的物理地址是物理地址是 ; 若分段,又分页,则访问代码段时转换的线性若分段,又分页,则访问代码段时转换的线性地址为地址
32、为 ; 根据此线性地址进行分页转换,页目录描述符根据此线性地址进行分页转换,页目录描述符的偏移地址为的偏移地址为 ,页表描述符的偏移地址,页表描述符的偏移地址为为 ,被访问指令在页帧中的偏移地址,被访问指令在页帧中的偏移地址为为 。保保 护护 386支持两个主要的保护类型:支持两个主要的保护类型: 一类是不同任务之间的保护一类是不同任务之间的保护。它是通过给。它是通过给每一任务分配不同的虚拟地址空间,而每一任每一任务分配不同的虚拟地址空间,而每一任务有各自不同的虚拟地址务有各自不同的虚拟地址物理地址的转换映物理地址的转换映射,因而可实现射,因而可实现任务之间的任务之间的完全完全隔离隔离。 另一
33、类是同一任务内的保护另一类是同一任务内的保护。定义。定义4种特权种特权级(特权级级(特权级0、1、2、3),特权级),特权级0最高,特最高,特权级权级3最低。每个段都有对应的特权级,访问最低。每个段都有对应的特权级,访问段时需遵循相应的段时需遵循相应的特权保护规则特权保护规则。系统中特权级的安排系统中特权级的安排特权级种类:特权级种类:1、请求特权级请求特权级RPL RPL为选择子的最低为选择子的最低2位位2、描述符特权级描述符特权级DPL DPL为描述符中属性字节的为描述符中属性字节的b6、b5位位3、当前特权级当前特权级CPL CPL = 当前正在执行的代码段的当前正在执行的代码段的DPL
34、4、输入输出特权级输入输出特权级IOPL各种段的特权保护:各种段的特权保护:1、数据段、附加数据段的特权保护、数据段、附加数据段的特权保护 maxCPL, RPL DPL 程序只能访问特权级相同或较低的数据段程序只能访问特权级相同或较低的数据段例:例:MOVAX, 01001101B MOV DS, AX RPL=01 CPL为这段程序所在代码段的为这段程序所在代码段的DPL(假设假设=10) 则该程序所能访问的数据段的则该程序所能访问的数据段的 DPL maxCPL, RPL 即即DPL max10, 01 = 10 即即 只能访问只能访问特权级为特权级为2,3的数据段。的数据段。2、堆栈段
35、的特权保护堆栈段的特权保护 DPL = RPL = CPL 任务在不同特权级操作时必须有独任务在不同特权级操作时必须有独立的堆栈,否则低特权级的任务会通过立的堆栈,否则低特权级的任务会通过堆栈影响高特权级的任务。堆栈影响高特权级的任务。3、代码段的特权保护代码段的特权保护 1)程序段在)程序段在同特权级同特权级之间之间可以可以进行控制转移;进行控制转移; 2)低低特权级的段特权级的段到高到高特权级的段通过某些特权级的段通过某些合法的合法的入口点入口点(如(如“调用门调用门”)也)也可以可以进行控制转移;进行控制转移; CPLDPL(调用门)调用门) 3 )高高特权级特权级到低到低特权级之间的转
36、移是特权级之间的转移是禁止禁止的。的。 如,操作系统的程序不能调用、跳转到用户的如,操作系统的程序不能调用、跳转到用户的程序。程序。门描述符格式(门描述符格式(P305图图9.30)和系统段描述符有差别。)和系统段描述符有差别。它包含一个它包含一个32位的偏移地址,一个字计数和一个选择子。位的偏移地址,一个字计数和一个选择子。调用门调用门描述符由描述符由选择子、偏移地址选择子、偏移地址和和字计数字计数构成。构成。选择子和偏移地址选择子和偏移地址指出一个子程序的起始地址,指出一个子程序的起始地址,字计字计数数指出有多少参数必须从主程序的堆栈传送到被调用的子指出有多少参数必须从主程序的堆栈传送到被
37、调用的子程序的堆栈上。程序的堆栈上。对其他门而言,字计数值字段无意义。对其他门而言,字计数值字段无意义。例例 请分析下面的描述符:请分析下面的描述符: 1、 6 4 2 0 0 0 0 0 CC 1 0 0 0 2 5 8 0 0 0解:解:属性字节属性字节:CCh = 11001100 386调用门描述符,有效,调用门描述符,有效,DPL=2。 目标代码段选择子目标代码段选择子:0025h 目标代码段偏移地址目标代码段偏移地址:00008000h 双字计数:双字计数:10h4B = 64B 即要从调用程序的堆栈拷贝即要从调用程序的堆栈拷贝64B的参数到被调用程序的堆栈。的参数到被调用程序的堆
38、栈。4、协调(一致)代码段、协调(一致)代码段 (属性字节中属性字节中C=1)任何低特权级的过程可直接调用或转移到任何低特权级的过程可直接调用或转移到协调代码段协调代码段,不不必必使用调用门使用调用门,也,也不不必必切换堆切换堆栈栈。但转移、调用后。但转移、调用后CPL不变不变,仍为调用前的,仍为调用前的低特权级。低特权级。因此,除协调代码段外,调用过程仍因此,除协调代码段外,调用过程仍不能不能访问其他高特权级访问其他高特权级的代码段,只能把协调代码的代码段,只能把协调代码段协调到调用者的特权级。段协调到调用者的特权级。例例 请分析下面的描述符:请分析下面的描述符: 1、 6 4 2 0 0
39、1 0 0 BF 0 B 0 0 0 0 7F FF解:解:属性字节属性字节:BFh = 10111111 协调代码段,协调代码段,DPL=1,在内存,可读,被访问过。,在内存,可读,被访问过。 代码段基址代码段基址:010B0000h 界限界限:07FFFh注:特权级为注:特权级为1、2、3的代码段都可调用或跳转到该协调代码段,的代码段都可调用或跳转到该协调代码段, 但转移到该协调代码段后,当前特权级但转移到该协调代码段后,当前特权级CPL不变。不变。 如,原如,原CPL=3,则调用后,则调用后,CPL还是还是3,不会变成,不会变成1。(三)(三) 虚拟虚拟8086方式(方式(V86方式)方
40、式)为了解决为了解决80286中不能在保护模式下运行中不能在保护模式下运行80868088应用程序的问题,从应用程序的问题,从80386开始,在保护模式开始,在保护模式中引入了虚拟中引入了虚拟8086工作模式(简称工作模式(简称V86模式模式)。)。V86模式下,模式下,多个多个8086实模式的应用软件实模式的应用软件可以可以同同时运行时运行。操作系统可以。操作系统可以并行执行并行执行8086、80286和和80386的程序的程序。V86模式模式是让是让80386模拟模拟1MB空间的寻址环境,空间的寻址环境,但它并但它并不仅限于不仅限于1MB的存储空间的存储空间,因为它可以同时因为它可以同时支
41、持几个支持几个V86环境环境。V86模式的主要特点模式的主要特点. . V86模式的寻址模式的寻址 在在V86模式下,模式下,80386对段寄存器的解释与处对段寄存器的解释与处理方式和实模式一样。理方式和实模式一样。. . V86模式下的保护功能模式下的保护功能 V86模式具有模式具有8038680386的的一些保护功能一些保护功能,但只,但只是简单地把是简单地把V86模式下的任务的模式下的任务的特权级一律降特权级一律降到最低级到最低级3。在在V86模式下,只能执行模式下,只能执行SGDT、SIDT和和SMSW这这3条指令,如果要执行其他保护模式指条指令,如果要执行其他保护模式指令,均会产生异
42、常。令,均会产生异常。3. 3. V86模式下的分页功能模式下的分页功能为了使为了使80386运行多个虚拟任务的地址空间大运行多个虚拟任务的地址空间大于于MB的物理地址空间,则需要存储器管理部件的物理地址空间,则需要存储器管理部件进行进行分页操作分页操作。若要启动分页机制,必须预先在。若要启动分页机制,必须预先在保护模式下对保护模式下对CR0的的PG位(位位(位31)置)置1。V86模式下的分页模式下的分页时时 线性地址的算法与实模式线性地址的算法与实模式 下完全相同。下完全相同。六、六、 80386/80486 三种工作模式的相互转变三种工作模式的相互转变CPU复位后复位后进入进入实地址模式实地址模式;通过修改通过修改CR0的的PE位,可以使位,可以使CPU从从实地址模式实地址模式转变到转变到保护模式保护模式,或者从或者从保护模式保护模式转变到转变到实地址模式实地址模式;通过执行通过执行IRETD指令指令,或者进行,或者进行任务转换任务转换,可从,可从保护模式保护模式转变到转变到V86模式模式。采用采用中断操作中断操作,可以从,可以从V86模式模式转变到转变到保护模式保护模式。