保护模式软件体系结构.ppt

上传人:wj 文档编号:17684975 上传时间:2023-07-31 格式:PPT 页数:69 大小:530.50KB
下载 相关 举报
保护模式软件体系结构.ppt_第1页
第1页 / 共69页
保护模式软件体系结构.ppt_第2页
第2页 / 共69页
保护模式软件体系结构.ppt_第3页
第3页 / 共69页
保护模式软件体系结构.ppt_第4页
第4页 / 共69页
保护模式软件体系结构.ppt_第5页
第5页 / 共69页
保护模式软件体系结构.ppt_第6页
第6页 / 共69页
保护模式软件体系结构.ppt_第7页
第7页 / 共69页
保护模式软件体系结构.ppt_第8页
第8页 / 共69页
保护模式软件体系结构.ppt_第9页
第9页 / 共69页
保护模式软件体系结构.ppt_第10页
第10页 / 共69页
保护模式软件体系结构.ppt_第11页
第11页 / 共69页
保护模式软件体系结构.ppt_第12页
第12页 / 共69页
保护模式软件体系结构.ppt_第13页
第13页 / 共69页
保护模式软件体系结构.ppt_第14页
第14页 / 共69页
保护模式软件体系结构.ppt_第15页
第15页 / 共69页
保护模式软件体系结构.ppt_第16页
第16页 / 共69页
保护模式软件体系结构.ppt_第17页
第17页 / 共69页
保护模式软件体系结构.ppt_第18页
第18页 / 共69页
保护模式软件体系结构.ppt_第19页
第19页 / 共69页
保护模式软件体系结构.ppt_第20页
第20页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

保护模式软件体系结构.ppt

《保护模式软件体系结构.ppt》由会员分享,可在线阅读,更多相关《保护模式软件体系结构.ppt(69页珍藏版)》请在冰点文库上搜索。

保护模式软件体系结构.ppt

1,2.4保护模式软件体系结构3.8保护模式的系统控制指令4.5保护模式汇编语言程序设计,保护模式,1,2,保护模式概述描述符与描述符表保护模式的寄存器模型保护模式的存储器寻址虚拟8086模式,2.4保护模式软件体系结构,保护模式软件体系结构,2,3,保护模式软件体系结构,保护模式概述,32条地址线全部有效,可寻址4GB物理地址空间扩充的存储器分段管理机制和可选的存储器分页管理机制,为实现虚拟存储器提供了硬件支持支持多任务,能够快速地进行任务切换和保护任务环境4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密以及任务的隔离支持虚拟8086方式,3,4,保护模式软件体系结构,保护模式概述,虚拟存储器的概念,虚拟存储器是一种软硬件结合的技术,用于提供比在计算机系统中实际可以使用的物理内存大得多的存储空间。

虚拟存储器的地址称为逻辑地址或虚拟地址,全部逻辑地址的集合称为虚拟地址空间。

Pentium支持的虚拟地址空间可达64TB。

只有物理内存中的程序才能运行,只有物理内存中的数据才能被访问,所以虚拟地址空间必须映射到物理地址空间。

Pentium通过扩充的存储器分段管理机制和可选的存储器分页管理机制实现虚拟地址到物理地址的转换。

4,5,保护模式软件体系结构,保护模式概述,保护机制,为了支持多任务,Pentium处理器要对存放在存储器中的代码及数据的保护与共享提供支持。

任务(进程):

程序在执行时的一种情况,是一个动态的概念。

乐谱与演奏Pentium的保护机制能有效地实现不同任务之间的保护和同一任务内的保护。

5,6,保护模式软件体系结构,保护模式概述,保护机制不同任务之间的保护,任务A和任务B并存,那么任务A和任务B必须隔离,以免相互影响。

把每个任务放置在不同的虚拟地址空间可以实现任务与任务的隔离。

两个不同任务的虚拟地址转换为不同的物理地址。

仅由一个任务占有的虚拟地址空间部分,称为局部地址空间。

局部地址空间包含的代码和数据,是任务私有的,需要与系统中的其它任务相隔离。

另一方面,任务A和任务B可能要共享部分代码和数据,如对操作系统的共享。

各个任务公用的虚拟地址空间部分,称为全局地址空间。

对全局地址空间中同一虚拟地址的访问,在所有任务中都转换为同样的物理地址,从而支持公共的代码及数据的共享。

6,7,保护模式软件体系结构,保护模式概述,保护机制同一任务内的保护,在一个任务之内,定义有四种执行特权级(PL,PrivilegeLevel),用于限制对任务中不同的存储器段进行访问。

Pentium为每个任务提供了4种特权级,0级最高,3级最低,应用程序,常规扩展,系统服务,内核,级别0,级别1,级别2,级别3,7,8,保护模式软件体系结构,保护模式概述,保护机制同一任务内的保护,每个存储器段都与一个特权级别相联系。

在任何时候,一个任务总是在四个特权级之一下运行,任务在特定时刻的特权级称为当前特权级(CurrentPrivilegelevel),标记为CPL,即当前运行程序的特权级。

每当一个程序试图访问一个段时,就把CPL与要访问的段的特权级进行比较,以决定是否允许这一访问。

Windows操作系统只使用了0级和3级,8,9,描述符(Descriptor):

描述符是一个8字节的数据结构。

Pentium采用描述符来描述存储器段的位置、大小和使用情况。

包括段描述符、系统段描述符和门描述符三种类型。

保护模式软件体系结构,描述符与描述符表,9,10,段描述符:

用于描述代码、数据和堆栈段(用户段),0,1,2,3,4,5,6,7,段界限015位,段基址023位,访问权限字节,段界限1619位,段基址2431位,D,G,0,AVL,保护模式软件体系结构,段基址为段的起始地址,长32位段界限长20位段内最大有1M个可寻址单位,10,11,段描述符:

G位(粒度位):

G=0,段的长度以字节为单位段长最大1M字节G=1,段的长度以页(4K字节)为单位段长最大1M4K=4G字节D位:

D=0,16位指令方式(代码段)段的上界为64K(数据段)使用16位堆栈指针SP(堆栈段)D=1,32位指令方式(代码段)段的上界为4G(数据段)使用32位堆栈指针ESP(堆栈段)AVL位:

软件可用位。

未作规定,保护模式软件体系结构,11,12,RW,段描述符:

访问权限字节,0,1,2,3,4,5,6,7,A,P,DPL,S,E,EDC,P位:

P=0,段不在内存中P=1,段在内存中DPL:

取值03,确定段的特权级S位:

S=1,段描述符,A位:

A=0,段尚未被访问A=1,段已被访问,保护模式软件体系结构,12,13,WR,段描述符:

访问权限字节,0,1,2,3,4,5,6,7,A,P,DPL,S,E,EDC,13位表示段的类型,E=0,为数据段ED=0,段向上扩展为数据段ED=1,段向下扩展为堆栈段W=0,数据段只读W=1,数据段可写,E=1,为代码段C=0,忽略描述符特权级C=1,遵循描述符特权级R=0,代码段不可读即只执行R=1,代码段可读,保护模式软件体系结构,13,14,系统段描述符:

格式与段描述符基本相同,主要差别访问权限字节,0,1,2,3,4,5,6,7,P,DPL,S,TYPE,S=0,系统段描述符,TYPE为4位,共有16种类型。

其中:

2,LDT9,TSS,非忙B,TSS,忙,5,任务门C,调用门E,中断门F,陷阱门,D位无定义(D=0),保护模式软件体系结构,14,15,门描述符:

偏移量:

相对于段基地址的偏移量,为目标代码的入口点选择符:

用于确定段基地址字计数:

从调用者堆栈中复制到被调用者堆栈中的参数个数,属于系统段描述符,门提供了将程序控制转给服务程序入口的手段。

有任务门、调用门、中断门、陷阱门4种类型,保护模式软件体系结构,15,16,门描述符:

访问权限字节格式与系统段描述符相同,DPL为任务允许访问该门的最低特权级,保护模式软件体系结构,16,17,例:

判断描述符所描述的段的性质,0,1,2,3,4,5,6,7,S=0,为系统段描述符TYPE=2,为DLTP=1,DPL=2因此为一个特权级为2的LDT,已经在内存中该LDT的基址为00200000H,界限为00300HG=0,段的长度以字节为单位,保护模式软件体系结构,17,18,描述符表,一个任务会涉及多个存储器段,每个段需要一个描述符来描述,Pentium把描述符按顺序组织成线性表,称为描述符表描述符表占内存一定的区域,由系统地址寄存器(GDTR、IDTR、LDTR)指示其在物理存储器中的位置和大小,描述符表有三种:

全局描述符表GDT中断描述符表IDT局部描述符表LDT,保护模式软件体系结构,18,19,全局描述符表(GDT),整个系统只有一个,描述符表,保护模式软件体系结构,19,20,描述符表,保护模式软件体系结构,中断描述符表(IDT),整个系统只有一个,20,21,描述符表,保护模式软件体系结构,局部描述符表(LDT),通常每个任务一个,21,22,描述符表,保护模式软件体系结构,通过LDT可以使各个任务私有的各个段与其它任务相隔离,从而达到受保护的目的。

通过GDT可以使各任务都需要使用的段能够被共享。

22,23,保护模式的寄存器模型,保护模式软件体系结构,23,24,0,15,16,31,0,15,0,15,16,31,7,8,AL,BL,CL,DL,AX,BX,CX,DX,AH,BH,CH,DH,EAX,EBX,ECX,EDX,IP,CS,DS,SS,ES,FS,GS,SP,BP,SI,DI,ESP,EBP,ESI,EDI,FLAGS,CR,0,实模式的寄存器模型,保护模式软件体系结构,24,25,全局描述符表寄存器GDTR,在物理存储器地址空间中定义全局描述符表GDT,BASE指示GDT在物理存储器中开始的位置LIMIT规定GDT的界限,LIMIT有16位,从而GDT最大65536个字节,能够容纳65536/8=8192个描述符,保护模式软件体系结构,0,15,16,47,GDTR,BASE,LIMIT,存放GDT的基址和界限,25,26,GDTR,GDT,BASE,LIMIT,保护模式软件体系结构,全局描述符表寄存器GDTR,26,27,例:

(GDTR)=001000000FFFH,求GDT在物理存储器中的起始地址,结束地址,表的大小,表中可以存放多少个描述符?

全局描述符表寄存器GDTR,解:

GDT的起始地址为00100000H结束地址为00100000H+0FFFH=00100FFFH表的大小为0FFFH+1=4096字节表中可以存放4096/8=512个描述符,保护模式软件体系结构,27,28,中断描述符表寄存器IDTR,在物理存储器地址空间中定义中断描述符表IDT,由于Pentium只能支持256个中断和异常,因此LIMIT最大为0FFFHIDT中的描述符类型为中断门,保护模式软件体系结构,0,15,16,47,IDTR,BASE,LIMIT,存放IDT的基址和界限,28,29,局部描述符表寄存器LDTR,16位的LDTR并不直接定义LDT,它只是一个指向GDT中LDT描述符的选择符,指出当前任务的LDT描述符在GDT中的位置。

在任务切换时,系统将当前任务的LDT选择符的值装入LDTR寄存器内。

如果LDTR中装入了一个LDT选择符,相应的描述符将从GDT中读出并装入局部描述符表高速缓冲寄存器。

将该描述符装入高速缓冲寄存器就为当前任务创建了一个LDT,保护模式软件体系结构,0,15,LDTR,选择符,29,30,保护模式汇编语言程序设计,GDT,LDT描述符,LDTR,LDT,基址,界限,32位,16位,LDT描述符高速缓冲寄存器(不可见),选择符,局部描述符表寄存器LDTR,30,31,段选择符寄存器,保护模式下CS、DS、SS、ES、FS、GS寄存器称为段选择符寄存器,其值不再是基址而是选择符,它选择一个定义存储器段大小和属性的描述符,RPL:

申请特权级03TI:

表指示符0使用全局描述符表1使用局部描述符表索引:

选择描述符表入口,保护模式软件体系结构,段选择符,0,2,3,15,索引,CS/DS/./GS,TI,RPL,215位共14位用于段选择,因而一个任务最多可以有16384个段,其中8192个全局段,8192个局部段,31,32,段选择符寄存器,例:

设LDT的基址为00120000H,GDT的基址为00100000H,(CS)=1007H,那么:

请求的特权级是多少段描述符位于GDT中还是LDT中段描述符的地址是什么,解:

(CS)=1007H=0001000000000111BRPL=3,申请的特权级为3TI=1,描述符位于LDT中描述符相对于LDT基址的偏移量为0001000000000B8=5128=4096=1000H段描述符的地址为00120000H+1000H=00121000H,保护模式软件体系结构,32,33,控制寄存器,CR4,CR3,CR2,CR1,CR0,页目录基址,页故障线性地址,保留,保留,313029282726252423222120191817161514131211109876543210,VME,PVI,TSD,DE,MCE,0,PSE,PCD,PWT,PG,CD,NW,AM,WP,NE,ET,TS,EM,MP,PE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,保护模式软件体系结构,33,34,控制寄存器,CR0的低5位组成机器状态字(MSW):

PE:

0实模式;1保护模式MP:

1(系统有数学协处理器)EM:

0浮点指令的执行是用软件模拟

(1),还是由硬件执行(0)。

TS:

任务切换,切换任务时处理器自动将TS置1ET:

1(协处理器的类型),CR0,保留,保留,PG,CD,NW,AM,WP,NE,ET,TS,EM,MP,PE,313029282726252423222120191817161514131211109876543210,保护模式软件体系结构,34,35,存储器分页机制:

CR0中的PG位设置为1,表示允许分页CR3包含页目录基址,指向页目录的开头如果发生缺页,则将发生缺页的地址保存在CR2中,控制寄存器,CR3,CR2,CR1,CR0,页目录基址,页故障线性地址,313029282726252423222120191817161514131211109876543210,PCD,PWT,PG,保护模式软件体系结构,35,36,任务寄存器TR,存放16位的选择符,指示全局描述符表中任务状态段(TSS)描述符的位置当选择符装入TR时,相应的TSS描述符自动从存储器中读出并装入任务描述符缓冲寄存器。

该描述符定义了一个称为任务状态段(TSS)的存储块。

每个任务都有TSS,TSS包含启动任务所必需的信息。

TSS最大64K字节,保护模式软件体系结构,36,37,GDT,TSS描述符,TR,基址,界限,32位,16位,TSS,TSS描述符高速缓冲寄存器(不可见),保护模式软件体系结构,任务寄存器TR,37,38,标志寄存器EFLAGS,VM:

虚拟8086模式标志,保护模式软件体系结构,38,39,保护模式下存储器寻址,实模式存储器寻址,保护模式软件体系结构,39,40,保护模式下存储器寻址,保护模式的存储器管理单元使用48位存储器指针:

16位选择符,32位偏移量选择符放在段选择符寄存器中偏移量放在其他用户可访问的32位寄存器中偏移量32位,因此段的大小可以达到4G字节,48位存储器指针称为虚拟地址(逻辑地址)16位选择符中有14位用于存储器段选择,虚拟空间中可容纳16384个段,每段最大4GB,因而虚拟地址空间最大64TB,保护模式软件体系结构,40,41,保护模式下存储器寻址,保护模式软件体系结构,虚拟地址(逻辑地址)必须转换成物理地址后才能访问物理存储器。

Pentium分两步实现虚拟地址空间到物理地址空间的映射,其中第二步是可选的。

分段机制把逻辑地址转换成线性地址;分页机制把线性地址转换成物理地址。

41,42,分段管理机制,实现逻辑地址向线性地址的转换,在程序指令中使用的逻辑地址格式,段内偏移,选择符,16位32位,把逻辑地址中的选段符装入段选择符寄存器中,把段内偏址通用寄存器中,经过分段机制的转换后成为32位线性地址,42,43,分段管理机制,逻辑地址,GDT/LDT,选择符,偏移量,段描述符,段描述符高速缓冲寄存器(不可见),数据段,操作数,DS,EAX,保护模式软件体系结构,43,44,CSDSSSESFSGS,程序员可见,访问权限,基址,界限,0,19,20,51,52,63,段描述符高速缓冲寄存器(不可见),保护模式软件体系结构,分段管理机制,44,45,例:

假设虚拟地址为0100:

00000200H,禁止分页。

如果描述符中读出的段基址为00030000H,那么操作数的物理地址是什么?

解:

将此虚拟地址转换成物理地址为基地址+偏移量=00030000H+00002000H=00032000H,保护模式软件体系结构,分段管理机制,45,46,分页机制,分页机制将内存划分成大小相同的存储块,称为物理页面,每个物理页面大小为4K字节。

内存最大4GB的空间可以分为1M(1048576)个页面,保护模式软件体系结构,页0,页1,页1048575,4KB,4KB,4KB,物理地址空间4GB,46,47,如果不允许分页,那么分段机制确定的32位线性地址即为物理地址;如果允许分页,32位线性地址由3个域组成:

分页机制通过两级表格结构将线性地址转换成物理地址,第一级是页目录,第二级是页表,保护模式软件体系结构,分页机制,页目录,页表,页内偏移量,31222112110,线性地址格式,10位10位12位,47,48,页目录长4KB,包含最多1024个页目录项,每个页目录项4字节(32位),7,6,5,4,3,2,1,0,0,D,A,0,0,U/S,R/,W,P,页表指针,03,位,0,页表指针,411,位,页表指针,1219,位,0,1,2,3,保护模式软件体系结构,分页机制,AVL,48,49,20位的页表指针是某一个页表起始地址的高20位,该地址的低12位总为0,保证了页表在物理地址空间总是按页面对齐的,即页表总是位于4K页面的地址边界上。

保护模式软件体系结构,分页机制,页表指针,AVL00DA00U/SR/WP,311211109876543210,AVL供操作系统使用D修改位,D=1表示该页表已被修改过A访问位,A=1表示页表已被访问过,,49,50,保护模式软件体系结构,分页机制,页表指针,AVL00DA00U/SR/WP,311211109876543210,U/S用户/系统访问权限位,U/S=1表示用户访问级,U/S=0表示系统访问级。

W/R读/写保护位,W/R=1表示允许写入和读取,W/R=0表示不允许写入,仅允许读取。

P存在位,P=1表示该页表在物理存储器中,50,51,页表长4KB,包含最多1024个页面项,每项4字节页表的表项与页目录的表项结构相同。

保护模式软件体系结构,7,6,5,4,3,2,1,0,0,D,A,0,0,U/S,R/,W,P,页面指针,03,位,0,页面指针,411,位,页面指针,1219,位,0,1,2,3,AVL,分页机制,51,52,整个存储器有一个页目录,它最多有1024个页目录项,每个页目录项可含有1024个页面项共有10241024=1M个页面,每页面4KB,存储器大小正好4GB,保护模式软件体系结构,分页机制,52,53,线性地址,页目录,目录,偏移量,页目录项,页面,操作数,页,CR3,页表,页表项,保护模式软件体系结构,分页机制,53,54,例:

对于线性地址00000000H00000FFFH,将选中页目录项0和页表项0。

若页表项0包含的地址为00100000H,则线性地址00000000H00000FFFH对应的物理地址为00100000H00100FFFH,保护模式软件体系结构,分页机制,线性地址,页目录,00000000000000000000xxxxxxxxxxxx,页目录项0,页面,操作数,页表0,页表项0,目录项10位,页表项10位,页内偏移量12位,54,55,保护模式软件体系结构,分页机制,TLB转换后援缓冲器TLB为一个Cache,其中保存了32个最近使用的页转换地址。

若访问同样的存储区域,则不必再访问页目录和页表,可以加快程序的运行。

使用TLB的命中率平均可达98%,55,56,虚拟8086模式,保护模式的子模式在保护模式下,只要将EFLAGS寄存器的VM位置1,处理器便进入V86模式。

将VM位清0,处理器便又退回保护模式当处理器处于V86模式时,段寄存器的使用与实模式相同。

通过分页操作,V86的1MB地址空间可以转换到Pentium的4GB空间的任何地方,保护模式软件体系结构,56,57,虚拟8086模式,保护模式软件体系结构,不同模式的相互转换,实模式,保护模式,虚拟8086模式,RESET,VM=0,VM=1,RESETPE=0,PE=1,57,58,保护模式的系统控制指令,SGDT指令存储全局描述符表寄存器,GDTREGDB6DUP(?

).SGDTGDTREG,将GDTR的内容复制到由GDTREG指定的内存中的6个字节中,LGDT指令装入全局描述符表寄存器,GDTREGDW001FH,0000H,0000H.LGDTGDTREG,将由GDTREG指定的内存中的6字节操作数装入GDTR中,3.8保护模式的系统控制指令,58,59,SIDT指令存储中断描述符表寄存器,IDTREGDB6DUP(?

).SGDTIDTREG,将IDTR的内容复制到由IDTREG指定的内存中的6个字节中,LIDT指令装入中断描述符表寄存器,IDTREGDW00FFH,0000H,0000H.LIDTIDTREG,将由IDTREG指定的内存中的6字节操作数装入IDTR中,保护模式的系统控制指令,保护模式的系统控制指令,59,60,SLDT指令存储局部描述符表寄存器,SGDTOP,复制LDTR到由OP指定的16位操作数中,LLDT指令装入局部描述符表寄存器,LIDTOP,将OP指定的16位内存操作数或16位寄存器操作数装入LDTR中,保护模式的系统控制指令,保护模式的系统控制指令,60,61,保护模式汇编语言程序设计,SMSW指令存储机器状态字,SMSWOP,将CR0中机器状态字MSW复制到由OP指定的16位操作数中,LMSW指令装入机器状态字,LMSWOP,用OP指定的16位内存操作数或16位寄存器操作数修改MSW,保护模式的系统控制指令,61,62,保护模式汇编语言程序设计,例:

实模式保护模式实模式,显示存储器简介,系统内存的部分地址空间指定为显示存储区,在文本方式下,彩色图形适配器显示存储区的地址空间为B800:

00000FFF,向这一地址空间写入信息将导致在显示器上显示出相应的字符。

4.5保护模式汇编语言程序设计,62,63,保护模式汇编语言程序设计,显示存储器简介,文本方式下显示存储器与屏幕字符发关系:

显示存储单元的偏移量=行号160+列号2显示存储器偶地址单元存放待显示字符的ASCII码,紧随其后的奇地址单元存放待显示字符的属性,ASCII码,属性,ASCII码,属性,.,000000010F9E0F9F,079列,024行,63,64,显示存储器简介,属性字节的含义:

保护模式汇编语言程序设计,76543210,LRGBIRGB,03位表示前景47位表示背景L=1表示背景闪烁I=1表示前景为高亮度,64,65,保护模式汇编语言程序设计,BIOS键盘输入功能调用【功能号00】读取键入的字符,无回显,无键入则等待入口参数:

无出口参数:

AL=键入字符的ASCII码WAIT:

MOVAH,00HINT16HCMPAL,0DHJNZWAIT,65,66,保护模式汇编语言程序设计,切换到保护方式的准备工作,从实模式切换到保护模式之前,必须作必要的准备,准备工作的内容根据实际而定,最基本的准备工作是建立合适的全局描述符表,并使用GDTR指向该GDT。

由实模式切换到保护模式,MOVEAX,CR0OREAX,01HMOVCR0,EAX执行上面的三条指令后,处理器转入保护模式,但CS中的内容还是实模式下代码段的段值,而不是保护模式下代码段的选择符。

为此在这三条指令后,安排一条转移指令,将代码段的选择符装入CS。

66,67,保护模式汇编语言程序设计,由保护模式切换到实模式,MOVEAX,CR0ANDEAX,FEHMOVCR0,EAXJMPREAL_MODE,进一步学习的参考书:

Intel公司,32位系统软件编程指南,程荷、武航译,电子工业出版社,1997,67,68,1.判断下面描述符所描述的段的性质,0,1,2,3,4,5,6,7,作业,68,69,2.如果(GDTR)=0021000001FFH,那么GDT的起始地址和终止地址是什么?

表长多少?

表中能存放多少个描述符?

3.试述Pentium处理器的分页机制。

如果允许分页,那么Pentium微处理器的地址空间可以分成多少页?

4.若将线性地址00200000H送给分页机制,那么将访问哪个页目录项,哪个页表项?

5.TLB的作用是什么?

69,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2