计算机的保护模式.ppt
- 文档编号:17686342
- 上传时间:2023-08-01
- 格式:PPT
- 页数:114
- 大小:1.25MB
计算机的保护模式.ppt
《计算机的保护模式.ppt》由会员分享,可在线阅读,更多相关《计算机的保护模式.ppt(114页珍藏版)》请在冰点文库上搜索。
微机接口技术,第二章保护模式,提纲,2.1保护模式基础2.2内存管理2.3任务2.4特权级保护,2.1保护模式基础,通常所说的保护模式是指80386处理器及以后的处理器所实现的运行模式。
2.1.1CPU的3种运行模式,从80386开始,Intel的CPU具有3种运行模式:
实模式保护模式虚拟8086模式,实模式,在实模式下,80X86等同于一个16位的8086微处理器。
采用类似于8086的体系结构,其寻址机制、中断处理机制均和8086相同.只使用低20位地址线,只能寻址1M字节的物理地址空间.,实模式,不支持硬件上的多任务切换.不支持特权级,可以执行所有特权指令。
DOS操作系统运行于实模式下,而Windows/Linux操作系统运行于保护模式下。
保护模式,CPU提供了段式和页式内存管理功能,支持多任务和特权级。
物理寻址空间高达4GB(80386/80486)或64GB(Pentium及以上CPU)。
虚拟8086模式,虚拟8086模式又称“V86模式”。
32位80X86处理器给每个以“虚拟8086模式”运行的任务“创造”了一个与真实的8086处理器十分相似的运行环境,以便运行DOS程序。
既有保护功能又能执行8086代码的工作模式。
2.1.1CPU的3种运行模式,CPU的3种运行模式及其切换,特权级,在保护模式下,CPU有4个特权级,分别为特权级0、1、2、3。
操作系统运行在高的特权级(Ring0)上,而应用程序运行在低的特权级(Ring3)上,应用程序不能直接修改(破坏)操作系统的程序和数据.,2.1.2保护模式下的特殊寄存器,通用32位寄存器,EAXEBXECXEDXESIEDIEBPESP,3116150,GDTR:
globaldescriptortableLDTR:
localdescriptortableIDTR:
interruptdescriptortableTR:
taskregisterEIP:
32bitsinlengthEFLAGSCR0,CR1,CR2,CR3DR0-DR7(Debugregisters)TR6-TR7(Testregisters),EIP,CSDSSSESFSGS,AXBXCXDX,SPBPSIDI,EFLAGS,GDTRIDTRLDTR,CR0CR1CR2CR3,DR0DR1DR2DR3DR4DR5DR6DR7,TR6TR7,Limit,Limit,Base,Base,0,15,16,47,MSW,2.1.2保护模式下的特殊寄存器,标志寄存器标志寄存器EFLAGS也扩展为32位,2.1.2保护模式下的特殊寄存器,EFLAGS中的位11到位0和8086完全相同。
这里主要扩展了4个标志位:
VM:
v86模式位,=1工作在v86模式,=0工作在实模式或保护模式RF:
恢复位,与程序调试有关的一个控制位。
NT:
嵌套任务位,=1当前任务嵌套在其他任务中IOPL:
占2位,规定了哪些特权级的程序可以执行I/O指令,2.1.2保护模式下的特殊寄存器,指令指针寄存器EIP和堆栈指针寄存器ESPEIP和ESP都是32位寄存器,它们的低16位分别是IP和SP。
IP,SP,3116150,EIPESP,2.1.2保护模式下的特殊寄存器,保护模式增加了四个寄存器:
全局描述符表寄存器中断描述符表寄存器局部描述符表寄存器任务寄存器,2.1.2保护模式下的特殊寄存器,保护模式下存贮器的虚拟地址须先由分段部件转换为线性地址,再由分页部件转换为物理地址。
线性地址由段基址和段内偏移量相加得到。
段内偏移量位(段最大4GB),段基地址仍然由位的段寄存器选择。
2.1.2保护模式下的特殊寄存器,段寄存器的内容,是个被称为段描述符的索引值,所检索到的表项叫做段描述符,每个段描述符含个字节,其中包括了位的段基址。
2.1.2保护模式下的特殊寄存器,全局描述符表寄存器GDTRGDTR是48位的寄存器。
其最低16位是限长,给出全局描述符表(GDT)的字节大小(其值比GDT的长度少1);其高32位是基址,指出GDT在物理存储器中存放的基地址。
GDT,全局存储器是一种共享系统资源,该存储器可以被所有任务访问。
全局描述符表GDT是用来定义全局存储器空间的一种机制,它用段描述符说明一个全局存储器中的段,每个GDT最多含有8192个描述符(8192864KB)。
全局描述符表只能有一个。
GDT,GDT是位于存贮器中,用全局描述符表寄存器GDTR指出它的位置和大小,可软件编程改变。
2.1.2保护模式下的特殊寄存器,BASE,LIMIT,0,47,16,15,8191,0,8190,全局描述符表GDT,全局描述符表寄存器(GDTR),MAX:
64kbytes8Kentries,1,2.1.2保护模式下的特殊寄存器,中断描述符表寄存器IDTRIDTR是48位的寄存器。
其最低16位是限长,给出中断描述符表IDT的字节大小(其值比IDT的长度少1);其高32位是基址,指出IDT在物理存储器中存放的基地址。
IDT,中断描述符表。
IDT中保存的是中断门描述符。
每个门描述符包含8字节,IDT最多包含256个门描述符,因为CPU最多支持256个中断。
中断门指出的是中断服务程序的入口。
2.1.2保护模式下的特殊寄存器,保护模式下的中断描述符表的功能,类似于实模式下的中断向量表,区别为IDT的位置可变,由相应的描述符说明,而实模式下的中断向量表的地址是固定的,必须在物理地址00000H处。
GDTR和IDTR的值必须在进入保护模式之前装入。
2.1.2保护模式下的特殊寄存器,局部描述符表寄存器LDTR保护模式下多任务的环境中每个任务都有一个局部描述符表LDT。
LDT只含有与系统中某一个任务相关的各个段的描述符。
和所有任务有关的公用段的描述符放在全局描述符表中。
这样,就可以使每一任务的代码段、数据段、堆栈段与系统其他部分隔离开,达到保护的目的。
LDT,由于每项任务都有自己的(且每项任务只能有一个),因此保护模式的软件系统可能有多个。
但GDT只有一个。
多LDT的示例,LDTR,LDTR是一个16位的选择符,包含LDT描述符在GDT中的索引,不直接指出LDT的位置和大小。
LDTR寄存器确定LDT的位置和限长的过程,GDT,和步由GDTR确定了GDT表在存储器中的位置和限长。
LDTR中是一个选择符,它包含了LDT描述符在GDT中的索引。
步是依据LDTR在GDT中取出LDT描述符的过程。
在LDT描述符中,包含由LDT的位置和限长,即和步。
TR,任务寄存器TR任务寄存器TR在保护模式的任务切换机制中使用。
TR是16位的选择符,其内容为索引值,它选中的是TSS描述符。
TR的初值由软件装入,当执行任务切换指令时TR的内容自动修改。
TSS,在多任务环境下,每个任务都有属于自己的任务状态段TSS,TSS中包含启动任务所必需的信息。
任务状态段TSS在存储器的基地址和限长(大小)由TSS描述符指出。
TSS描述符放在全局描述符表GDT中,TR内容为选择符,它指出TSS描述符在GDT中的顺序号。
由描述符说明各TSS的位置和限长。
由任务寄存器TR取得TSS的过程,和步由GDTR确定了GDT表在存储器中的位置和限长。
TR是一个选择符,这个选择符中包含了TSS描述符在GDT中的索引。
步依据TR在GDT中取出TSS描述符。
在第和步中,在TSS描述符中取得TSS的基址和限长。
PhysicalMemory,GDT,TSS,TSSdescriptor,TR,BASE,LIMIT,0,15,16,47,2.1.2保护模式下的特殊寄存器,控制寄存器有四个系统控制寄存器CR0CR3。
CR0的低5位是系统控制标志,被称为机器状态字MSW;分页机制中用到CR3、CR2和CR0的其他位。
2.1.2保护模式下的特殊寄存器,机器状态字MSW中各位的含义如下:
PE(ProtectionmodeEnable):
保护模式允许标志。
0为实模式,CPU复位(启动)时自动进入实模式;1为保护模式。
可以通过软件设置PE位,进入或退出保护模式。
MP(Monitorcoprocessorextension):
运算协处理器存在位。
1表示系统中有运算协处理器。
EM(Emulateprocessorextension):
1时系统用软件模拟器执行数学运算。
TS(TaskSwitched):
任务切换标志。
当任务间切换时,自动设置此位为1。
PG(Pagingenable):
1时,存储器管理单元允许分页。
0时,分页功能被关闭,线性地址等于物理地址。
2.1.2保护模式下的特殊寄存器,段寄存器32位CPU有6个段寄存器:
CS代码段寄存器,其值为代码段的段值;DS数据段寄存器,其值为数据段的段值;ES附加段寄存器,其值为附加数据段的段值;SS堆栈段寄存器,其值为堆栈段的段值;FS附加段寄存器,其值为附加数据段的段值;GS附加段寄存器,其值为附加数据段的段值。
2.1.2保护模式下的特殊寄存器,在实模式和V86模式下,段寄存器的16位内容是20位段首址的高16位,段首址的低4位为0。
在保护模式下,段寄存器中的16位内容是一个选择符(selector),用于在段描述符表(GDT或LDT)中选择(确定)段描述符。
2.1.2保护模式下的特殊寄存器,CS:
EIP=0008:
804F1266SS:
ESP=0010:
8053CED8DS=0023ES=0023FS=0030GS=0000,2.1.2保护模式下的特殊寄存器,RPL(RequestorPrivilegeLevel):
请求特权级,2位二进制数字,范围为03。
00代表特权级0,01代表特权级1,10代表特权级2,11代表特权级3。
请求特权级是将要访问的段的特权级。
TI(TableIndicator):
表指示符。
为0时,从GDT中选择描述符;为1时,从LDT中选择描述符。
Index:
索引。
指出要访问描述符在段描述符表中的顺序号,Index占13位。
因此,顺序号的范围是08191。
每个段描述符表(GDT或LDT)中最多有8192=213个描述符。
小结,GDTR(GDT)IDTR(IDT)LDTR(LDT)TREFLAGS(IOPL,VM)CR0(PE,PG)CR1,CR2,CR3CS,DS,ES,FS,GS,SS(selector),2.2内存管理,80368以上的CPU允许使用虚拟存储器,除了有一个速度较快地、容量较小的主存储器(内存),还有一个速度较慢,但容量很大的外部存储器。
二者通过存贮器管理机制,有机地、灵活地结合在一起。
2.2.1分段内存管理,虚拟地址、线性地址、物理地址虚拟地址就是程序指令中使用的地址(也称逻辑地址),它由段和偏移两个部分组成。
段选择符的Index和TI占14位,偏移量为32位。
如DS:
EBX就是一个虚拟地址。
TI,selector,offset,INDEX,RPL,CPU的分段部件将虚拟地址转换为线性地址。
对于一个虚拟地址,线性地址是段的基地址再加上偏移量。
段的基地址保存在段描述符中。
段基址和偏移量都是32位的,所以线性地址是32位。
线性地址空间的范围是232=4GB,即0000000016FFFFFFFF16。
2.2.1分段内存管理,虚拟地址和线性地址都是任务相关的。
同一个虚拟地址可能得到不同的线形地址。
任务1和任务2对同一个虚拟地址0047H:
00002000H得到的线性地址可能是不同的。
对于同一个局部段选择符,LDT可对不同的任务设置不同的段基址。
线性地址为什么也是任务相关的?
物理地址,物理地址是微处理器引脚输出的地址信号。
同一个线性地址得到的物理地址可以不同。
CPU的分页部件将线性地址转换为物理地址。
如果禁止CPU的分页功能,线性地址就直接作为物理地址。
2.2.1分段内存管理,虚拟地址线性地址物理地址的转换过程,2.2.1分段内存管理,段式地址转换转换过程如图2-13。
根据段选择符在GDT或LDT中确定对应的段描述符,在段描述符中包括这个段的段基址、限长和权限等信息。
取出段的基址后,再加上偏移部分,就得到了线性地址。
2.2.1分段内存管理,全局段与局部段,2.2.1分段内存管理,段描述符段描述符用于描述代码段、数据段和堆栈段。
段限长指出了一个段的最后一个字节的偏移地址。
段描述符位于GDT或LDT中,占8字节(64位),由以下几个部分组成:
段基址(32位)、限长(20位)、访问权限(8位)和属性(4位)。
段描述符的格式如图2-14,图2-15。
段描述符格式,2.2.1分段内存管理,P(Present)存在位。
1时表示该段己装入内存;0时表示该段没有在内存中,访问这个段会产生段异常。
操作系统将某个段从物理内存中交换到磁盘时,设置此位为0。
DPL(DescriptorPrivilegeLevel)描述符特权级。
说明这个段的特权级,取值为03。
S(System)描述符类型位。
=1时,这个段为代码段、数据段或堆栈段;=0时,为系统段描述符。
E(Executable)可执行位,用来区分代码段和数据段。
S=1且E=1时,这是一个代码段,可执行。
S=1且E=0时,这是一个数据段或堆栈段,不可执行。
E=0时,后面的两位为ED和W;若E=1时,后面的两位为C和R。
2.2.1分段内存管理,ED(ExpansionDirection)扩展方向位(对数据段或堆栈段)。
=0时,段向上扩展(从低地址向高地址扩展),偏移量小于等于限长。
=1时,段向下扩展(从高地址向低地址扩展),偏移量必须大于限长。
W(Writeable)写允许位(对数据段或堆栈段)。
=0时,不允许对这个数据段写入;=1时,允许对这个数据段写入。
对数据段进行读操作总是被允许的。
C(Conforming)一致位(对代码段)。
=0时,这个段不是一致代码段;=1时,这个段是一致代码段。
R(Readable)读允许位(对代码段)。
=0时,不允许读这个段的内容;=1时,允许读这个段的内容。
对于代码段进行写操作总是被禁止的。
2.2.1分段内存管理,A(Accessed)访问位。
1表示段己被访问(使用)过;0表示段未被访问过。
G(Granularity)粒度位。
G1时,限长以页为单位;G0时,限长以字节为单位。
D(DefaultOperationSize)默认操作数宽度。
D1时,为32位数据操作段;D1时,为16位数据操作段。
AVL(Availablefield)可用位。
这一位保留给操作系统或应用程序来使用。
2.2.1分段内存管理,段的属性Windows操作系统中,DS段的线性地址范围为0000000016-FFFFFFFF16,与CS段完全相同。
段的属性是由段选择符来决定的,对于同样一个线性地址范围,不同的选择符有不同的属性。
如0000000016-FFFFFFFF16可能是代码段,也可能是数据段。
2.2.1分段内存管理,段描述符高速缓存为了提高CPU的运行效率在CPU内部设置了段描述高速缓存,这些缓存不可见,自动装入段描述符。
段描述符高速缓冲的内容和6个段描述符寄存器索引的描述符当前值保持一致。
GDTbase=0003F000Limit=03FF0003F0000000000000000000-FFFF0000009BCF00.0003F010FFFF00000093CF00-FFFF000000FBCF00.0003F020FFFF000000F3CF00-AB200020048B0080.0003F030010000F0DF93C0FF-FF0F000000F34000.0003F040FFFF000400F20000-0000000000000000.0008Code3200000000FFFFFFFF0PRE0010Data3200000000FFFFFFFF0PRW001BCode3200000000FFFFFFFF3PRE0023Data3200000000FFFFFFFF3PRW0028TSS3280042000000020AB0PB0030Data32FFDFF00000001FFF0PRW003BData320000000000000FFF3PRW0043Data16000004000000FFFF3PRW0048Reserved00000000000000000NP,段描述符的例子,LoadingDescriptorfromDescriptorTable,LDTRdescriptor,CSdescriptor,00A00000H,FFFFH,GDTR,00A00000H,00A0FFFFH,2000H,LDTR,00A02007H,00A02000H,00,0,0,82,90,00,0000,FFFF,0,F,FE,60,FFFF,0000,00900000H,FFFFH,00900000H,0090FFFFH,1005H,CS,00600000H,FFFFFH,00901007H,00901000H,006FFFFFH,00600000H,GDT(64KB),LDT(64KB),CODESEGMENT(1MB),SYSTEMMEMORY,USERMEMORY,CS=1003H,如何?
2.2.2分页内存管理,保护模式下的CPU支持分页机制,并且分页管理是在分段管理机制的基础上工作,它将分段管理机制得到的线性地址转换为物理地址。
使用分页机制的好处在于,它可以把每个活动任务当前所必需的少量页面放在内存中,而不必将整个段调入内存,从而提高了内存的使用效率。
2.2.2分页内存管理,分页所有页的长度固定为4KB,页与页之间也没有重叠。
CPU将4GB的线性地址空间划分成220页。
在Windows/Linux操作系统中,将段式内存管理和页式内存管理结合起来,主要是依赖页式内存管理来调度内存。
2.2.2分页内存管理,线性地址到物理地址的映射线性地址按页(4KB)为单位映射到物理地址。
每一个线性页面都映射到一个物理页面上。
任务A,任务B,线性地址到物理地址的映射,2.2.2分页内存管理,线性地址转换为物理地址的过程分页机制,就是一种将线性地址的页面映射到物理地址页面的手段,也就是从线性地址到物理地址的转换过程。
分页机制中用到了两个表:
页表目录表和页表。
2.2.2分页内存管理,32位线性地址被划分为3个部分:
页目录索引页表索引字节索引其中第1项是对页目录(PageDirectory)的索引,第2项是对页表(PageTables)的索引,第3项是线性地址在页面内的偏移。
10位,12位,10位,2.2.2分页内存管理,线性地址转换为物理地址的过程,LinearAddress从何而来?
黑色方框的边界代表什么意思?
2.2.2分页内存管理,片内转换检测缓冲器TLB每次内存操作都需要将线性地址转换为物理地址,转换过程中需要访问页目录表和页表来取得页表描述符和页描述符。
为了提高转换效率,CPU内部设置了片内转换检测缓冲器TLB(TranslationLookasideBuffer),其中保存了32个页描述符,它们都是最近使用过的。
2.2.2分页内存管理,页表项页表项就是在分页转换时用到的页表描述符和页描述符,都是32位,页表项格式如图2-21。
2.2.2分页内存管理,页目录、页表和物理页的基地址的低12位全部为0,定位在页的边界上。
页表项的低12位提供保护功能和统计信息。
U/S位、R/W位、P位实现页保护机制,p32。
2.2.2分页内存管理,页面映射的例子经过页目录索引和页表索引的两级查找,就将一个线性地址的页面对应到一个物理页面上。
线性地址的最低12位就是物理地址的最低12位。
线性地址在转换为物理地址时,物理地址的高20位为页表描述符的高20位,而取得页表描述符需要线性地址的页目录索引和页表索引在页目录表和页表中。
2.2.2分页内存管理,不同任务中的线性地址被映射到不同的物理页面上不同任务中的线性地址被映射到相同的物理页面上线性地址转换为物理地址的过程,PageDirectoryPhysical=0E9640000e9640006720530E67B0F90D-67A0870E6750340BgS.g.g.gP4.0e96410067104E0E00000000-0000000000000000g.N.0e4e100025E0D60E2540FC00-000000002560FC00%.%.%.0e4e10100000000000000000-0000000000000000.0e4e10200000000000000000-0000000000000000.0e4e10300000000000000000-000000002520EA0E.%.0e4e1040000000006740270F-67E07A0000000000.g.g.z.0e4e10506730E80E2500DB0E-0000000000000000g0.%.LinearAddr:
10000000PhysAddr:
0ed6e000LinearAddr:
?
PhysAddr:
00fc6000LinearAddr:
10014000PhysAddr:
?
LinearAddr:
10015000PhysAddr:
0edb0000,10015000H=00010000000000010101000000000000bBit31-22=0001000000b=040H(offsetis040Hx4=0100H)Bit21-12=0000010101b=015H(offsetis015Hx4=0054H),2.3任务,多任务环境,是指其硬件允许软件系统中存在多个任务,并能够以分时的方式使各程序轮流执行。
当运行一个应用程序后,操作系统就为这个程序创建一个任务。
TR,在保护模式下,在任何时刻都有一个当前任务,当前任务由TR寄存器指定,CPU在这个任务的环境下执行。
因此,系统中至少存在一个任务。
2.3.1任务状态段,任务状态段是一种特殊的段,有一个段描述符来描述它的限长、段基址等属性,这个描述符放在GDT中。
任务执行环境,每个任务都由两个部分组成:
任务执行环境TES(TaskExecutationSpace)和任务状态段TSS(TaskStateSegment)。
任务执行环境包括一个代码段、堆栈段和数据段等,任务在每一个特权级上执行时都有一个堆栈段。
图2-26,2.3.1任务状态段,任务状态段TSS中保存了任务的各种状态信息。
任务状态段描述符(即TSS描述符)描述某个任务状态段,规定了任务状态段的基地址和任务状态段的大小等信息。
描述符格式如图2-27,2-28。
2.3.2任务切换过程,1.直接任务切换段间跳转指令JMPX:
Y或段间调用指令CALLX:
Y可以用来执行任务切换。
在中断/异常或者执行IRET指令时也可能发生任务切换。
利用JMP/CALL/IRET进行任务直接切换示意图,2.3.2任务切换过程,2.间接任务切换当CPLDPLTSS时,就不能采用任务的直接切换,必须通过任务门进行任务的切换。
此时,指令中包含的是任务门选择符。
选择符指向的是任务门描述符,门中的选择符选中新任务的描述符,激活新的,启动新的任务。
利
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 保护 模式