搜档网
当前位置:搜档网 › 实模式与保护模式

实模式与保护模式

实模式与保护模式
实模式与保护模式

实模式、保护模式

2009-06-07 17:18

参考了百度百科中关于实模式的讨论:

https://www.sodocs.net/doc/df8123687.html,/view/404433.htm

https://www.sodocs.net/doc/df8123687.html,/toening/blog/item/d8d927d403bdfdc350da4b6d.html

https://www.sodocs.net/doc/df8123687.html,/trueailei/blog/item/b8faa413a22c57d7f7039e4d.html

实模式、保护模式、虚拟模式都是X86中的概念。

从寻址方式来说,CPU中的IP(EIP)中存放虚地址,把虚地址转换到物理地址,各个模式有各自的转换方式。

实模式下,虚地址到实地址转换:DS段寄存器左移4位与偏移地址相加,得到物理地址,寻址1M。

保护模式下,虚地址到实地址转换经过MMU(内存管理单元),也就是分段与分页机制,寻址4G。

保护有两层含义:

1、任务间保护:多任务操作系统中,一个任务不能破坏另一个任务的代码,这是通过内存分页以及不同任务的内存页映射到不同物理内存上来实现的。

2、任务内保护:系统代码与应用程序代码虽处于同一地址空间,但系统代码具有高优先级,应用程序代码处于低优先级,规定只能高优先级代码访问低优先级代码,这样杜绝用户代码破坏系统代码。这是通过段式管理来实现,4G虚拟内存中,代码数据和堆栈各占有一个段,段是一个独立有意义的内存单元,有基地址和边界以及本段的优先级,windows系统有两个优先级,Ring0(高优先级)或Ring3(低优先级),系统代码段和数据段属于Ring0,不能被用户代码(Ring3)访问。

实模式:

16bit的8086处理器标志着IntelX86王朝的开始,并且引入了一个重要概念——段。8086处理器地址总线扩展到 20位,但算术逻辑运算单元(ALU)宽度即数据总线却只有16位,也就是直接运算的指针长度是16位的。为支持1M寻址空间,引入分段的方法。为支持分段8086CPU设置四个16bit段寄存器:CS、DS、SS、ES,对应于地址总线中的高16位。寻址时,段寄存器*0x10+偏移地址=物理地址。这样实现16位内存地址到20位物理地址的转换,叫“映射”。(之前在想:为什么每个段最大不超过64K,其实很简单,因为16位CPU数据线是16位的,所以最多只能用一个16bit数来标识一个偏移量,也就说一个段最大长度是64K)

保护模式:

80286处理器地址总线位数增加到24位,可以访问16M地址空间。并引入一个新概念——保护模式。这种模式下,内存段的访问受到了限制。访问内存时不能直接从段寄存器获得段起始地址了,而要经过额外转换和检查(从其不能随意存取数据段)。为与过去兼容,80286内存寻址有两种方式:保护模式和实模

式。系统启动时处理器处于实模式,只能访问1M内存空间,经过处理可以进入保护模式,可访问16M内存空间,但要从保护模式回到实模式必须重启机器。它有个致命缺陷就是80286虽然扩大了寻址空间,但是每个段大小还是64K(因为数据线还是16位的),程序规模仍然受到限制,因此很快就被80386代替了。

80386是一个32位的CPU。它的地址总线和ALU数据总线都是32位的。寻址能力达到4G。理论上说当数据总线和地址总线宽度一致时,CPU结构应该简洁明了,但80386不能做到这点,作为80X86产品系列的一员,80386必须维持那些16位段寄存器的存在,必须支持实模式,同时还要支持保护模式。Intel选择在段寄存器基础上构筑保护模式,保留16位段寄存器。在保护模式下,段范围达到4G。从80386以后Intel的 CPU经历了80486、Pentium、Pentium2、Pentium3等型号,但都属于同一种系统结构的改进与加强,所以把80386以后的处理器统称为IA32(32 Bit Intel Architecture)。

深入讨论下保护模式:

保护模式与实模式中程序运行的实质是一样的,都是“CPU执行指令,操作相关数据”。最大的变化是“地址转换方式”的变化。

这里可以看下两种模式下地址转换方式的区别:在ES存入0x1000,DI存入

0xFFFF

实模式:ES:DI = 0x1000 * 0x10 + 0xFFFF = 0x1FFFF,这就是“段基址左移4位加偏移地址”。

保护模式:(注意:0x1000 = 10 0000 0000 0 00 B)ES:DI = GDT全局描述符表中第0x200项描述符给出的段基址 + 0xFFFF。为什么是第0x200项?请看下边段选择子(即段值)的结构。

这里ES在两种模式下都不是真正段地址(实模式下称"段寄存器",保护模式下称"选择子"),都是一种映射,不过映射规则不同而已。

保护模式的基本组成:(围绕“地址转换方式”的变化增设了相应机构)

1、数据段

实模式下的各种代码段、数据段、堆栈段、中断服务程序仍然存在,这里统称为“数据段”。

2、描述符

保护模式引入描述符类描述各种数据段,描述符为8个字节(0-7),第5

个字节说明描述符类型,类型不同,描述符的结构也不同。

若干描述符集中组成描述符表,描述符表本身也是一种数据段,也使用描述符进行描述。描述符表是一张地址转换函数表。

3、选择子

保护模式下,逻辑地址由段选择子和段内偏移两部分组成。与实模式相比,保护模式下的段选择子代替了段值。

段选择子有2个BYTE。高13位是描述符索引,第2位TI(Table Indicator)是描述符表指示位,TI=0指示从GTD(全局描述符表)中读取描述符,TI=1指

示从LTD(局部描述符表)中读取描述符。低2位是RPL(Request Privilege Level),即进程对段访问的请求权限,具体可以查阅有关资料。

这里80X86系列引入新的寄存器GDTR和LDTR。

GDTR表示GDT在内存中的段地址和段界限,GDTR是一个48位寄存器,其中32位表示段地址,16位表示段界限(段最大64K,之前提过描述符表也使用描述符进行描述,因此描述符表最大长度也是64K,里面最多可存放 64K/8Byte=8K个描述符[每个描述符8Byte]。这也是段选择子中描述符索引占13bit的原因[13b=8192])。

因为GDT不能由GDT本身之内的描述符进行描述定义,所以采用GDTR为GDT 这一特殊系统段提供一个伪描述符。

LDTR表示LDT在内存中的位置。因为LDT本身也是一种数据段,它必须有一个描述符存放于GDT中。因此LDTR使用与DS、ES、CS等相同机制,只存放一个“选择子”,通过查GDT获得LDT内存地址。

LDTR 类似于段寄存器,由程序员可见的16bit寄存器和程序员不可见的高速缓冲寄存器组成。在初始化或切换任务过程中,把描述符对应任务LDT的描述符的选择子装入LDTR,处理器根据LDTR可见部分的选择子从GDT中取出对应描述符,并把LDT的基地址、界限和属性等信息保存在LDTR的不可见高速缓冲寄存器中。随后对LDT的访问可根据保存在高速缓冲寄存器中的有关信息进行合法性检查。

LDTR包含当前任务的LDT选择子。所以装入到LDTR的选择子必须确定一个位于GDT中类型为LDT的系统段描述符,即选择子中的TI=0,且描述符类型字段所表示的类型必须为LDT。

一个多任务操作系统必须有一个GDT,而每一个正在运行的任务(进程)都有一个LDT。可以说保护模式的引进才使得80286以后处理器实现了对多任务的硬件支持。多任务系统运行中在进程间切换时需要“环境”保护(比如各寄存器值等)。这些“环境”数据构成了一类新的数据段TSS(任务状态段)。给TSS 段设置描述符(TSS描述符),并把该类描述符放在GDT中(自然不能放在LDT 中,80x86也不允许),再加个TR寄存器用于查表。TR(任务寄存器)是一个起“选择子”作用的16bit寄存器。任务切换的工作就是将原任务“环境”存入TSS,更新TR,系统将自动查GDT表获得并装载新任务的“环境”,然后找到该任务执行。

段描述符高速缓冲寄存器:

为避免每次存储器访问时,都要访问描述符表获得对应段描述符,从80286开始每个段寄存器都配有一个高速缓冲寄存器,称为“描述符高速缓冲寄存器”或“描述符投影寄存器”(shadow register),对于程序员不可见。

每当一个选择子装入某个段寄存器,处理器自动从描述符表中取出相应描述符,把描述符中的信息保存到对应高速缓冲寄存器中。此后对该段访问时,处理器都使用对应高速缓冲寄存器中的描述符信息。段描述符高速缓冲寄存器内保

存的描述符信息将一直保存到重新把选择子装入段寄存器时再更新。程序员尽管不可见段描述符高速缓冲寄存器,但必须注意到它的存在和它的上述更新时机。例如,在改变了描述符表中的某个当前段的描述符后,也要更新对应的段描述符高速缓冲寄存器的内容,即使段选择子未作改变,这可通过重新装载段寄存器实现。

分页:

不同程序由不同用户编写,而所有这些程序完全可能使用相同地址空间,而程序切换过程一般不包括内存数据的刷新,因为这么做太浪费。因此引入分页机制才能有效完成对多任务的支持。

分页引入的主要目标就是解决不同进程之间发生地址冲突问题。分页实质就是实现程序内地址到物理地址的映射。用类似GDT的做法:先建立页表这种数据段,80x86中使用二级页表方案,增设一个CR3寄存器用于存放一级页表(页目录)在内存中的地址,CR3共32位,低12位总为零,高20位指示页目录的内存地址,因此页目录总是按页对齐的。CR3作为进程“环境”的一部分在进程切换时被存入TSS数据段中。还有一个相应的缺页中断机制及其相关寄存器 CR2(页故障线性地址寄存器)。

中断:

80x86(保护模式)与8086(实模式)的中断机制不一样。80x86系列为中断服务提供中断/陷阱描述符,这些描述符构成中断描述符表IDT,并引入一个

48bit寄存器IDTR存放IDT的内存地址。理论上IDT表同样可以有8K项,可是因为80x86只支持 256个中断,因此IDT实际上最大只能有256项(2K大小,因为所有描述符都是8BYTE)。

总结可得出,保护模式下增加了:

1、寄存器:GDTR、LDTR、IDTR、TR、CR3、CR2

2、数据段:描述符表(GDT、LDT、IDT)、任务数据段(TSS)、页表(页目录、二级页表)

3、机制:权限检测(利用选择子/描述符/页表项的属性位)、线性地址到物理地址的映射

=========================================================

实模式:(即实地址访问模式)它是Intel公司80286及以后的

x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上,这就意味着它

的容量是2的20次幂(1M)的可访问内存空间(物理内存和BIOS-ROM),软件可通过这些地址直接访问BIOS程序和外围硬件。实模式下处理器没有硬件级的内存保护概念和多道任务的工作模式。但是为了向下兼容,所以80286及以后的x86系列兼容处理器仍然是开机启动时工作在实模式下。80186和早期的处理器仅有一种操作模式,就是后来我们所定义的实模式。实模式虽然能访问到1M的地址空间,但是由于BIOS的映射作用(即BIOS占用了部分空间地址资源),所以真正能使用的物理内存空间(内存条),也就是在640k到924k之间。1M地址空间组成是由16位的段地址和16位的段内偏移地址组成的。用公式表示为:物理地址=左移4位的段地址+偏移地址。

286处理器体系结构引入了地址保护模式的概念,处理器能够对内存及一些其他外围设备做硬件级的保护设置(保护设置实质上就是屏蔽一些地址的访问)。使用这些新的特性,然而必不可少一些额外的在80186及以前处理器没有的操作规程。自从最初的

x86微处理器规格以后,它对程序开发完全向下兼容,80286芯片被制作成启动时继承了以前版本芯片的特性,工作在实模式下,在这种模式下实际上是关闭了新的保护功能特性,因此能使以往的软件继续工作在新的芯片下。直到今天,甚至最新的x86处理器都是在计算机加电启动时都是工作在实模式下,它能运行为以前处理器芯片写的程序.

DOS操作系统(例如MS-DOS,DR-DOS)工作在实模式下,微软Windows早期的版本(它本质上是运行在DOS上的图形用户界面应用程序,实际上本身并不是一个操作系统)也是运行在实模式下,直到Windows3.0,它运行期间既有实模式又有保护模式,所以说它是一种混合模式工作。它的保护模式运行有两种不同意义(因为80286并没有完全地实现80386及以后的保护模式功能):1〉“标准保护模式”:这就是程序运行在保护模式下;

2〉“虚拟保护模式(实质上还是实模式,是实模式上模拟的保护模式)”:它也使用32位地址寻址方式。Windows3.1彻底删除了对实模式的支持。在80286处理器芯片以后,Windows3.1成为主流操作系统(Windows/80286不是主流产品)。目前差不多所有的X86系列处理器操作系统(Linux,Windows95 and later,OS/2等)都是在启动时进行处理器设置而进入保护模式的。

实模式工作机理:

1> 对于8086/8088来说计算实际地址是用绝对地址对1M求模。8086的地址线的物理结构:20根,也就是它可以物理寻址的内存范围为2^20个字节,即1 M空间,但由于8086/8088所使用的寄存器都是16位,能够表示的地址范围只有0-64K,这和1M地址空间来比较也太小了,所以为了在8086/8088下能够访问1M内存,Intel采取了分段寻址的模式:16位段基地址:16位偏移EA。其绝对地址计算方法为:16位基地址左移4位+16位偏移=20位地

址。比如:DS=1000H EA=FFFFH 那么绝对地址就为:10000H + 0FFFFH = 1FFFFH 地址单元。通过这种方法来实现使用16位寄存器访问1M的地址空间,这种技术是处理器内部实现的,通过上述分段技术模式,能够表示的最大内存为:FFFFh:

FFFFh=FFFF0h+FFFFh=10FFEFh=1M+64K-16Bytes(1M多余出来的部分被称做高端内存区HMA)。但8086/8088只有20位地址线,只能够访问1M地址范围的数据,所以如果访问100000h~10FFEFh之间的内存(大于1M空间),则必须有第21根地址线来参与寻址(8086/8088没有)。因此,当程序员给出超过1M

(100000H-10FFEFH)的地址时,因为逻辑上正常,系统并不认为其访问越界而产生异常,而是自动从0开始计算,也就是说系统计算实际地址的时候是按照对1M求模的方式进行的,这种技术被称为wrap-around。

2> 对于80286或以上的CPU通过A20 GATE来控制A20地址线。技术发展到了80286,虽然系统的地址总线由原来的20根发展为24根,这样能够访问的内存可以达到2^24=16M,但是Intel 在设计80286时提出的目标是向下兼容,所以在实模式下,系统所表现的行为应该和8086/8088所表现的完全一样,也就是说,在实模式下,80386以及后续系列应该和8086/8088完全兼容仍然使用A20地址线。所以说80286芯片存在一个BUG:它开设A20地址线。如果程序员访问100000H-10FFEFH之间的内存,系统将实际访问这块内存(没有wrap-around技术),而不是象8086/8088一样从0

开始。我们来看一副图:

为了解决上述兼容性问题,IBM使用键盘控制器上剩余的一些输出线来管理第21根地址线(从0开始数是第20根)的有效性,被称为A20 Gate:

1> 如果A20 Gate被打开,则当程序员给出

100000H-10FFEFH之间的地址的时候,系统将真正访问这块内存区域;

2 如果A20 Gate被禁止,则当程序员给出100000H-10FFEFH 之间的地址的时候,系统仍然使用8086/8088的方式即取模方式(8086仿真)。绝大多数IBM PC兼容机默认的A20 Gate是被禁止的。现在许多新型PC上存在直接通过BIOS功能调用来控制A20

Gate的功能。

上面所述的内存访问模式都是实模式,在80286以及更高系列的PC中,即使A20 Gate被打开,在实模式下所能够访问的内存最大也只能为10FFEFH,尽管它们的地址总线所能够访问的能力都大大超过这个限制。为了能够访问10FFEFH以上的内存,则必须进入保护模式。

保护模式:经常缩写为p-mode,在Intel iAPX 286程序员参考手册中(iAPX 286是Intel 80286的另一种叫法)它又被称作为虚拟地址保护模式。经管在Intel 80286手册中已经提出了虚地址保护模式,但实际上它只是一个指引,真正的32位地址出现在Intel 80386上。保护模式本身是80286及以后兼容处理器序列之后产成的一种操作模式,它具有许多特性设计为提高系统的多道任务和系统的稳定性。例如内存的保护,分页机制和硬件虚拟存储的支持。现代多数的x86处理器操作系统都运行在保护模式下,包括Linux, Free BSD, 和Windows 3.0(它也运行在实模式下,为了和Windows 2.x应用程序兼容)及以后的版本。

80286及以后的处理器另一种工作模式是实模式(仅当系统启动的一瞬间),本着向下兼容的原则屏蔽保护模式特性,从而容许老的软件能够运行在新的芯片上。作为一个设计规范,所有的

x86系列处理器,除嵌入式Intel80387之外,都是系统启动工作在实模式下,确保遗留下的操作系统向下兼容。它们都必须被启动

程序(操作系统程序最初运行代码)重新设置而相应进入保护模式的,在这之前任何的保护模式特性都是无效的。在现代计算机中,这种匹配进入保护模式是操作系统启动时最前沿的动作之一。

在被调停的多道任务程序中,它可以从新工作在实模式下是相当可能的。保护模式的特性是阻止被其他任务或系统内核破坏已经不健全的程序的运行,保护模式也有对硬件的支持,例如中断运行程序,移动运行进程文档到另一个进程和置空多任务的保护功能。

386及以后系列处理器不仅具有保护模式又具有32位寄存器,结果导致了处理功能的混乱,因为80286虽然支持保护模式,但是它的寄存器都是16位的,它是通过自身程序设定而模拟出的32位,并非32位寄存器处理。归咎于这种混乱现象,它促使Windows/386及以后的版本彻底抛弃80286的虚拟保护模式,以后保护模式的操作系统都是运行在80386以上,不再运行在80286(尽管80286模式支持保护模式),所以说80286是一个过渡芯片,它是一个过渡产品。

尽管286和386处理器能够实现保护模式和兼容以前的版本,但是内存的1M以上空间还是不易存取,由于内存地址的回绕,IBM PC XT (现以废弃)设计一种模拟系统,它能过欺骗手段访问到

1M以上的地址空间,就是开通了A20地址线。在保护模式里,前32个中断为处理器异常预留,例如,中断0D(十进制13)常规保护故障和中断00是除数为零异常。

如果要访问更多的内存,则必须进入保护模式,那么,在保护模式下,A20 Gate对于内存访问有什么影响呢?

为了搞清楚这一点,我们先来看一看A20的工作原理。A20,从它的名字就可以看出来,其实它就是对于A20(从0开始数)的特殊处理(也就是对第21根地址线的处理)。如果A20 Gate被禁止,对于80286来说,其地址为24根地址线,其地址表示为EFFFFF;对于80386极其随后的32根地址线芯片来说,其地址表示为FFEFFFFF。这种表示的意思是:

1>如果A20 Gate被禁止。则其第A20在CPU做地址访问的时候是无效的,永远只能被作为0。所以,在保护模式下,如果A20 Gate被禁止,则可以访问的内存只能是奇数1M段,即1M,3M,5M…,也就是00000-FFFFF, 200000-2FFFFF,300000-3FFFFF…

2如果A20 Gate被打开。则其第20-bit是有效的,其值既可以是0,又可以是1。那么就可以使A20线传递实际的地址信号。如果A20 Gate被打开,则可以访问的内存则是连续的。

实模式和保护模式的区别:从表面上看,保护模式和实模式并没有太大的区别,二者都使用了内存段、中断和设备驱动来处理硬件,但二者有很多不同之处。我们知道,在实模式中内存被划分成段,每个段的大小为64KB,而这样的段地址可以用16位来表示。内存段的处理是通过

和段寄存器相关联的内部机制来处理的,这些段寄存器(CS、DS、 SS 和ES)的内容形成了物理地址的一部分。具体来说,最终的物理地址是由16位的段地址和16位的段内偏移地址组成的。用公式表示为:物理地址=左移4位的段地址+偏移地址。

在保护模式下,段是通过一系列被称之为“描述符表”的表所定义的。段寄存器存储的是指向这些表的指针。用于定义内存段的表有两种:全局描述符表(GDT) 和局部描述符表(LDT)。GDT是一个段描述符数组,其中包含所有应用程序都可以使用的基本描述符。在实模式中,段长是固定的(为64KB),而在保护模式中,段长是可变的,其最大可达4GB。LDT也是段描述符的一个数组。与GDT不同,LDT是一个段,其中存放的是局部的、不需要全局共享的段描述符。每一个操作系统都必须定义一个GDT,而每一个正在运行的任务都会有一个相应的LDT。每一个描述符的长度是8个字节,格式如图3所示。当段寄存器被加载的时候,段基地址就会从相应的表入口获得。描述符的内容会被存储在一个程序员不可见的影像寄存器(shadow register)之中,以便下一次同一个段可以使用该信息而不用每次都到表中提取。物理地址由16位或者32位的偏移加上影像寄存器中的基址组成。实模式和保护模式的不同可以从下图很清楚地看出来。

实模式下寻址方式

保护模式下寻址方式

第4章指令系统层习题参考解答-汇编语言与计算机组成原理 答案

1.什么是“程序可见”的寄存器? 程序可见寄存器是指在用户程序中用到的寄存器,它们由指令来指定。 2. 80x86微处理器的基本结构寄存器组包括那些寄存器?各有何用途? 基本结构寄存器组按用途分为通用寄存器、专用寄存器和段寄存器3类。 通用寄存器存放操作数或用作地址指针;专用寄存器有EIP和EFLAGS,分别存放将要执行的下一条指令的偏移地址和条件码标志、控制标志和系统标志;段寄存器存放段基址或段选择子。 3.80x86微处理器标志寄存器中各标志位有什么意义? 常用的7位: CF进位标志: 在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。在移位类指令中,CF用来存放移出的代码(0或1)。 PF奇偶标志: 为机器中传送信息时可能产生的代码出错情况提供检验条件。 当操作结果的最低位字节中1的个数为偶数时置1,否则置0。 AF辅助进位标志: 在进行算术运算时,如低字节中低4位(第3位向第4位)产生进位或借位时,则AF置1;否则AF置0。 ZF零标志:如指令执行结果各位全为0时,则ZF置1;否则ZF置0。 SF符号标志:其值等于运算结果的最高位。 如果把指令执行结果看作带符号数,就是结果为负,SF置1;结果为正,SF置0。 OF溢出标志: 将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。 DF方向标志: 用于串处理指令中控制处理信息的方向。 当DF位为1时,每次操作后使变址寄存器SI和DI减小;当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。 4.画出示意图,简述实模式下存储器寻址的过程。 20位物理地址如下计算(CPU中自动完成):10H×段基址+偏移地址=物理地址 5. 画出示意图,简述保护模式下(无分页机制)存储器寻址的过程。 采用对用户程序透明的机制由选择子从描述子表中选择相应的描述子,得到欲访问段的段基址、段限等有关信息,再根据偏移地址访问目标存储单元。

保护模式与实模式

什么是实模式、保护模式和虚拟8086方式 1:实模式:寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。 2:保护模式:寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。 第一:实模式下程序的运行回顾. 程序运行的实质是什么?其实很简单,就是指令的执行,显然CPU 是指令得以执行的硬件保障,那么CPU如何知道指令在什么地方呢? 对了,80x86系列是使用CS寄存器配合IP寄存器来通知CPU指令在内存 中的位置. 程序指令在执行过程中一般还需要有各种数据,80x86系列有DS、 ES、FS、GS、SS等用于指示不同用途的数据段在内存中的位置。 程序可能需要调用系统的服务子程序,80x86系列使用中断机制 来实现系统服务。 总的来说,这些就是实模式下一个程序运行所需的主要内容 (其它如跳转、返回、端口操作等相对来说比较次要。) 第二:保护模式---从程序运行说起 无论实模式还是保护模式,根本的问题还是程序如何在其中运行。 因此我们在学习保护模式时应该时刻围绕这个问题来思考。 和实模式下一样,保护模式下程序运行的实质仍是“CPU执行指令, 操作相关数据”,因此实模式下的各种代码段、数据段、堆栈段、中 断服务程序仍然存在,且功能、作用不变。 那么保护模式下最大的变化是什么呢?答案可能因人而异,我的 答案是“地址转换方式”变化最大。 第三:地址转换方式比较 先看一下实模式下的地址转换方式,假设我们在ES中存入0x1000, DI中存入0xFFFF,那么ES:DI=0x1000*0x10+0xFFFF=0x1FFFF,这就是众 所周知的“左移4位加偏移”。 那么如果在保护模式下呢?假设上面的数据不变ES=0x1000, DI=0xFFFF,现在ES:DI等于什么呢? 公式如下:(注:0x1000=1000000000000b= 10 0000 0000 0 00) ES:DI=全局描述符表中第0x200项描述符给出的段基址+0xFFFF 现在比较一下,好象是不一样。再仔细看看,又好象没什么区别! 为什么说没什么区别,因为我的想法是,既然ES中的内容都不是 真正的段地址,凭什么实模式下称ES为“段寄存器”,而到了保护模式 就说是“选择子”? 其实它们都是一种映射,只是映射规则不同而已:在实模式下这

实模式和保护模式的区别

实模式和保护模式的区别 实模式和保护模式的区别 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.保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。 实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的虚拟地址范围内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行库。这些区域也不能随便修改,若修改就会有: SIGSEGV (linux 段错误);非法内存访问对话框(windows 对话框)。 CPU启动环境为16位实模式,之后可以切换到保护模式。但从保护模式无法切换回实模式

保护模式下寻址(易懂)

保护模式下寻址(易懂) 保护模式下寻址(易懂):网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位括号中是我的加注段机制轻松体验[内存寻址]实模式下的内存寻址:让我们首先来回顾实模式下的寻址方式段首地址×16+偏 移量=物理地址为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。保护模式下分段机制的内存寻址:保护模式下分段机制是利用一个称作段选择符的偏移量,从而到描述符表找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,再加上偏移量一段话,出现了三个新名词:1、段选择子2、描述符表3、段描述符我们现在可以这样来理解这段话:有一个结构体类型,它有三个成员变量:段物理首地址段界限段属性内存中,维护一个该结构体类型的是一个数组。而分段机制就是利用一个索引,找到该数组对应的结构体,从而得到段的物理首地址,然后加上偏移量,得到真正的物理地址。公式:xxxx:yyyyyyyy其中,xxxx也就是索引,yyyyyyyy是偏移量(因为32位寄存器,所以8个

16进制)xxxx存放在段寄存器中。现在,我们来到过来分析一下那三个新名词。段描述符,一个结构体,它有三个成员变量:1、段物理首地址2、段界限3、段属性我们再来重温一遍描述符表,也就是一个数组,什么样的数组呢?是一个段描述符组成的数组。接下来看看段选择子:段选择子,也就是数组的索引,但这时候的索引不在是高级语言中数组的下标,而是我们将要找的那个段描述符相对于数组首地址(也就是全局描述表的首地址)偏移位置。就这么简单,如图:图中,通过Selector(段选择子)找到存储在Descriptor Table(描述符表)中某个Descriptor(段描述符),该段描述符中存放有该段的物理首地址,所以就可以找到内存中真正的物理段首地址SegmentOffset(偏移量):就是相对该段的偏移量物理首地址+偏移量就得到了物理地 址本图就是DATA但这时,心细的朋友就发现了一个GDTR这个家伙还没有提到!我们来看一下什么是GDTR ?Global Descriptor Table Register(全局描述符表寄存器)但是这个寄存器有什么用呢?大家想一下,段描述符表现在是存放在内存中,那CPU是如何知道它在哪里呢?所以,Intel 公司设计了一个全局描述符表寄存器,专门用来存放段描述符表的首地址,以便找到内存中段描述符表。这时,段描述符表地址被存到GDTR寄存器中了。好了,分析就到这,我们来看一下正式的定义:当x86 CPU 工作在保护模式时,可

大遗址保护模式

西安外国语大学 硕士学位论文 多视角下的大遗址保护与开发模式研究 -----以汉长安城大遗址为例 作者姓名:学科专业:指导教师:魏元元 旅游管理 陈锋仪教授 西安2012

本论文由在其导师的指导下撰写而成,经论文答辩委员会评审、答辩,该论文达到专业硕士学位论文水平。 导师: 答辩主席: 日期:研究生部主任:

独创性声明 秉承学校严谨的学风与优良的科学道德,我声明所呈交的论文是我本人在导师指导下进行的研究工作所取得的成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,不包含本人或他人已申请学位或其他用途使用过的成果。他人对本研究所做的任何贡献均已在论文中作了明确的说明并表示了致谢。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 作者签名: 日期:

知识产权声明 本人完全了解西安外国语大学有关知识产权的规定,即:研究生在校攻读硕士学位期间论文工作的知识产权单位属西安外国语大学。本人保证毕业离校后5年以内(自办理离校手续之日起),发表论文或使用论文工作成果时署名单位仍然为西安外国语大学。学校有权保留送交论文的复印件和磁盘文件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。 作者签名: 日期:

摘要 随着申请世界遗产保护的热潮的到来,我国大遗址的保护也得到了社会各届的重视,尤其政府在大遗址的保护当中扮演着积极的角色。我国大遗址的分布范围比较分散,各种各样的大遗址给遗址保护工作带来了很大的难度。面对大遗址的保护工作,主要是从比较低层次和文物保护的角度去保护大遗址,往往给大遗址的保护带来不利的影响。大遗址的保护面临着来自“人为”和“自然为”两方面的破坏,针对大遗址保护面临着严峻的形势,我国大遗址保护应该从多角度的模式探讨,不仅要从社会科学的角度去探讨大遗址保护的方式方法,也应该从自然科学的角度,尤其是要采用当今发展迅猛的计算机技术去实现大遗址保护模式的创新去实践。 大遗址保护工作主要面临大遗址信息分散、信息多样、信息共享和交换比较难的特点,而面向服务的大遗址模式充分利用面向服务的架构SOA(service oriented architecture)技术体系针对大遗址保护的难点提出了完整的信息资源的整合模式,实现了大遗址保护的宏观与微观管理相结合;计算机三维可视化技术(OpenGL和Direct 3D)实现分散的大遗址周围地理数据库模型的建立,地理空间信息技术(GIS),WEB GIS信息技术及信息交换技术。 大遗址的保护与开发是大遗址保护模式面临的一对矛盾,面对这对矛盾,需要分析出陕西大遗址目前所面临的主要威胁,并分析其所属的类型、特点、利用因素分析法、均衡利益分析法、价值分析法、建立大遗址保护与开发评价体系价值体系,结合陕西省内大遗址目前所采用大遗址保护模式,综合对比提出基于均衡模式下陕西大遗址开发与保护模式。 多视角下的汉长安城大遗址保护与开发模式,是在综合对比国内外大遗址保护与开发模式的基础之下,结合当代计算机技术、经济学知识、管理学知识等分析总结出自己在每种视角下大遗址的保护与开发模式。针对汉长安城大遗址保护与开发模式研究,汉长安城大遗址主要采用建立“三区鼎立,综合管理”的大遗址开发保护模式,三区主要是在汉长安城大遗址上建立以汉长安城重点

互联网安全保护技术措施规定范例

整体解决方案系列 互联网安全保护技术措施 规定 (标准、完整、实用、可修改)

编号:FS-QG-49892互联网安全保护技术措施规定 Model Regulations for Internet Security Protection Measures 说明:为明确各负责人职责,充分调用工作积极性,使人员队伍与目标管理科学化、制度化、规范化,特此制定 第一条为加强和规范互联网安全技术防范工作,保障互联网网络安全和信息安全,促进互联网健康、有序发展,维护国家安全、社会秩序和公共利益,根据《计算机信息网络国际联网安全保护管理办法》,制定本规定。 第二条本规定所称互联网安全保护技术措施,是指保障互联网网络安全和信息安全、防范违法犯罪的技术设施和技术方法。 第三条互联网服务提供者、联网使用单位负责落实互联网安全保护技术措施,并保障互联网安全保护技术措施功能的正常发挥。 第四条互联网服务提供者、联网使用单位应当建立相应的管理制度。未经用户同意不得公开、泄露用户注册信息,但法律、法规另有规定的除外。互联网服务提供者、联网使

用单位应当依法使用互联网安全保护技术措施,不得利用互联网安全保护技术措施侵犯用户的通信自由和通信秘密。 第五条公安机关公共信息网络安全监察部门负责对互联网安全保护技术措施的落实情况依法实施监督管理。 第六条互联网安全保护技术措施应当符合国家标准。没有国家标准的,应当符合公共安全行业技术标准。 第七条互联网服务提供者和联网使用单位应当落实以下互联网安全保护技术措施: (一)防范计算机病毒、网络入侵和攻击破坏等危害网络安全事项或者行为的技术措施; (二)重要数据库和系统主要设备的冗灾备份措施; (三)记录并留存用户登录和退出时间、主叫号码、账号、互联网地址或域名、系统维护日志的技术措施; (四)法律、法规和规章规定应当落实的其他安全保护技术措施。 第八条提供互联网接入服务的单位除落实本规定第七条规定的互联网安全保护技术措施外,还应当落实具有以下功能的安全保护技术措施:(一)记录并留存用户注册信息;

Gate A20与保护模式

Gate A20与保护模式 大家都知道,8088/8086只有20位地址线,按理它的寻址空间是2^20,应该是1024KB,但PC机的寻址结构是segment:offset,segment和offset都是16 位的寄存器,最大值是0ffffh,换算成物理地址的计算方法是把segment左移4位,再加上offset,所以segment:offset所能表达的寻址空间最大应为0ffff0h + 0ffffh = 10ffefh(前面的0ffffh是segment=0ffffh并向左移动4位的结果,后面的0ffffh是可能的最大offset),这个计算出的10ffefh是多大呢?大约是1088KB,就是说,segment:offset的地址表达能力,超过了20位地址线的物理寻址能力,你说这是不是有点麻烦。在早先,由于所有的机器都没有那么大的内存,加上地址线只有20位,所以当你用segment:offset的方式企图寻址100000h这个地址时,由于没有实际的第21位地址线,你实际寻址的内存是00000h的位置,如果你企图寻址100001h这个地址时,你实际得到的内容是地址00001h上的内容,所以这个事对实际使用几乎没有任何影响,但是后来就不行了,出现了80286,地址线达到了24位,使segment:offset寻址100000h--10ffefh这将近64K的存储器成为可能,为了保持向下兼容,于是出现了A20 Gate,这是后话,我们后面再细说。 我们可能经常听到一些只有在PC机上才有的一些关于存储器的专有名词,包括:常规内存(Conventional Memory)、上位内存区(Upper Memory Area)、高端内存区(High Memory Area)和扩展内存(Extended Memory),我尽量把这几个东东说明白,这需要下面这张著名的图。 这张图很清楚地说明了问题,大家都知道,DOS下的“常规内存”只有640K,这640K就是从0--A0000H这段地址空间;所谓“上位内存区”,指的就是20位地址线所能寻址到的1M地址空间的上面384K空间,就是从A0001H--100000H 这段地址空间,也就是我们说的用于ROM和系统设备的地址区域,这384K空间和常规内存的640K空间加起来就是20位地址线所能寻址的完整空间 1024KB;由于80286和80386的出现使PC机的地址线从20位变成24位又变成32位,寻址能力极大地增加,1M以上的内存寻址空间,我们统称为“扩展内存”;这里面绝大部分内存区域只能在保护模式下才能寻址到,但有一部分既可以在保护模式下,也可以在实模式下寻址,这就是我们前面提到过的地址100000h--10ffefh之间的这块内存,为了表明其特殊性,我们把这块有趣的内存区叫做“高端内存”。 前面我们提过由于IBM的愚蠢设计给PC机的内存结构埋下了麻烦的伏笔,现在我们来说说这个麻烦。我们都见过PC机上的内存条,但是由于上位内存区

安全域划分和等级保护

近年来,随着我国信息化发展的逐步深入,我们对信息系统的依赖越来越强,国家信息基础设施和重要信息系统能否安全正常地运行直接关系到国家安全和社会秩序。但是大型信息系统的安全保障体系建设是一个极为复杂的工作,为大型组织设计一套完整和有效的安全体系一直是个世界性的难题。一些行业性机构或大型企业的信息系统应用众多、结构复杂、覆盖地域广阔、涉及的行政部门和人员众多;系统面临着各种性质的安全威胁,间谍、黑客、病毒蠕虫、木后门、非法的合作伙伴、本地维护的第三方、内部员工等;安全保障要求的内容极为广泛,从物理安全、网络安全、系统安全、应用安全一直到安全管理、安全组织建设等等,凡是涉及到影响正常运行的和业务连续性的都可以认为是信息安全问题;不同业务系统、不同发展阶段、不同地域和行政隶属层次的安全要求属性和强度存在较大差异性。 国内的政策及发展 面对严峻的形势和严重的问题,如何解决大型信息系统的信息安全问题,是摆在我国信息化建设人员面前的重大关键问题。美国及西方发达国家为了抵御信息网络的脆弱性和安全威胁,制定了一系列强化信息网络安全建设的政策和标准,其中一个很重要思想就是按照安全保护强度划分不同的安全等级,以指导不同领域的信息安全工作。经过我国信息安全领域有关部门和专家学者的多年研究,在借鉴国外先进经验和结合我国国情的基础上,提出了分等级保护的策略来解决我国信息网络安全问题,即针对信息系统建设和使用单位,根据其单位的重要程度、信息系统承载业务的重要程度、信息内容的重要程度、系统遭到攻击破坏后造成的危害程度等安全需求以及安全成本等因素,依据国家规定的等级划分标准,设定其保护等级,自主进行信息系统安全建设和安全管理,提高安全保护的科学性、整体性、实用性。 2003 年,中央办公厅、国务院办公厅转发的《国家信息化领导小组关于加强信息安全保障工作的意见》(27号文)中,已将信息安全等级保护作为国家信息安全保障工作的重中之重,要求各级党委、人民政府认真组织贯彻落实。《意见》中明确指出,信息化发展的不同阶段和不同的信息系统,有着不同的安全需求,必须从实际出发,综合平衡安全成本和风险,优化信息安全资源的配置,确保重点。 之后,一系列的国家部委、行业组织下发了关于信息系统等级保护方面的政策和规范。2004年,公安部、国家保密局、国家密码管理委员会办公室、国务院信息化工作办公室联合下发

第3章作业

第3章从8086到Pentium系列微处理器的技术发展 教材习题解答 1. 简述80286的特点和保护模式的保护功能。 【解】80286的特点: ①CPU内部分为四个处理部件:EU(执行部件)、AU(地址部件)、IU(指令部件)和BU(总线部件)。这四个处理部件可以并行的进行操作,提高了处理速度。 ②数据线和地址线完全分离。在一个总线周期中,当有效数据出现在数据总线上的时候,下一个总线周期的地址已经送到地址总线,形成总线周期的流水作业。 ③具有“实地址模式”(Real Address Mode,简称为“实模式”)和“保护虚地址模式”(Protected V irtual Address Mode,简称为“保护模式”)”两种工作模式。 ④能运行实时多任务操作系统,支持存储管理和保护功能。 ⑤实现了虚拟存储管理。 ⑥与80286 配合使用的数学协处理器是80287,它基本与8087相同,但适应80286 的两种工作模式。 保护模式体现了80286的特色,主要是对存储器管理、虚拟存储和对地址空间的保护。在保护模式下,可为每个任务提供多达1GB的虚拟存储空间和保护机制,有力地支持了多用户、多任务的操作。那些内存装不下的逻辑段,将以文件形式存在外存储器中,当处理器需要对它们进行存取操作时就会产生中断,通过中断服务程序把有关的程序或数据从外存储器调入到内存,从而满足程序运行的需要。 保护模式为不同程序设置了四个特权级别,可让不同程序在不同的特权级别上运行。依靠这一机制,可支持系统程序和用户程序的分离,并可进一步分离不同级别的系统程序,大大提高了系统运行的可靠性。 2. 简述80386 的特点、80386引脚与8086的区别。 【解】80386 的特点: 80386是全32位结构,它的外部数据总线和内部数据通道,包括寄存器、ALU和内部总线都是32位的。 80386 有3 种工作模式:实模式、虚拟86模式、386的保护模式。 80386的硬件结构可分成6个逻辑单元,它们以流水线方式工作,运行速度可达4MIPS。其硬件设计有支持段页式存储管理部件,易于实现虚拟存储系统。在保护模式下的分段寻址体系,与操作系统相配合可以组成虚拟存储器系统,一个任务的最大虚拟空间可达246=64 TB。 80386硬件支持多任务处理,用一条指令就可以实现任务切换。 80386设置了4级特权级,按优先顺序依次为0级、1级、2级、3级,前3级用于操作系统程序,后1级用于用户程序。 80386引脚与8086的区别见表3-1。 表3-1 80386引脚与8086的区别 8086CPU 80386CPU 共有40个引脚共有132个引脚 16条地址/数据复用线4条地址线34条地址线 32条数据线 在总线宽度控制信号16 BS的控制下,可实现16位或32位数据传送。字节控制信号0 BE~3 BE 协处理器接口信号 (1) PEREQ:协处理器向80386发出的请求信号,有效时表示协处理器请求与存储器之间传送数据。80386响应该请求后,将按照指令的要求控制对存储器的读写。 (2) BUSY:协处理器向80386发出的状态信号,有效时表示协处理器正在执行指令,处于忙状态,暂时不能接受新的指令。 (3)ERROR:协处理器向80386发出的状态信号,有效时表示协处理器出错。80386在检测到ERROR信号后,将转到错误处理子程序来处

保护模式编程

第1章保护模式编程一 如果想更深、更亲近的了解电脑软件。那么学习cpu是你的必选!! 386是CPU史的一大转折点,那386做基础课是最好不过了。那么我们将开始进行学习之旅!!!大家跟我一块学习吧,呵呵!!! 1.1 准备工作 l1、NASM 编译环境(当然Masm 也可以但是用它来写COM程序比较 麻烦) l2、虚拟机 Virtual PC(Windows平台,执行比较快,即模拟又虚拟硬件)、 WMWarve(WIndows平台虚拟硬件,)、 Bochs(支持Windows平台、也支持在Linux平台上运行有RPM版本的) 我们这些生长在Windows这棵大树下的朋友们,还是用Virtual PC吧.。 l3、写虚拟启动镜像文件的程序 :不知道我观察的对不对?用Nasm 编译一个bin 然后将它转换为img 镜像文件的时候。只要文件大小符合软驱的标准就能启动。那么就代表a.bin 与a.img 文件的内容一模样就是文件大小不一样!我是不太了解镜像文件格式.我用的是Virtual PC。 1.2 开始接触引导程序 1.2.1 Com文件 Com文件是纯二进制的文件,也是直接与Cpu交换的顺序指令文件。Com文件的大小是有限制的,不能超过64KB.因为8086时代的CPU地址线是20位的,20位能表达的数值也就是fffffh(1MB )。而寄存器最高也只是16位,无法用5个F的形式来表达地址,所以用CS(段基地址)*16:IP(偏移地址)来寻址!80386后通用寄存器都得到了32位扩展! 而Cpu地址线也得到了32位的扩展。引导程序前期是需要进入实模式的,因为这是硬件上的限制是IA32的限

证券期货业网络关于等级保护对象整体安全保护能力的要求、等级保护安全框架和关键技术使用要求

JR/T0060—XXXX 74 附录B (规范性附录) 关于等级保护对象整体安全保护能力的要求 网络安全等级保护的核心是保证不同安全保护等级的对象具有相适应的安全保护能力。本标准第5 章提出了不同级别的等级保护对象的安全保护能力要求,第6章到第10章分别针对不同安全保护等级的对象应该具有的安全保护能力提出了相应的安全通用要求和安全扩展要求。 依据本标准分层面采取各种安全措施时,还应考虑以下总体性要求,保证等级保护对象的整体安全保护能力。 a)构建纵深的防御体系 本标准从技术和管理两个方面提出安全要求,在采取由点到面的各种安全措施时,在整体上还应保证各种安全措施的组合从外到内构成一个纵深的安全防御体系,保证等级保护对象整体的安全保护能力。应从通信网络、网络边界、局域网络内部、各种业务应用平台等各个层次落实本标准中提到的各种安全措施,形成纵深防御体系。 b)采取互补的安全措施 本标准以安全控制的形式提出安全要求,在将各种安全控制落实到特定等级保护对象中时,应考虑各个安全控制之间的互补性,关注各个安全控制在层面内、层面间和功能间产生的连接、交互、依赖、协调、协同等相互关联关系,保证各个安全控制共同综合作用于等级保护对象上,使得等级保护对象的整体安全保护能力得以保证。 c)保证一致的安全强度 本标准将安全功能要求,如身份鉴别、访问控制、安全审计、入侵防范等内容,分解到等级保 护对象的各个层面,在实现各个层面安全功能时,应保证各个层面安全功能实现强度的一致性。 应防止某个层面安全功能的减弱导致整体安全保护能力在这个安全功能上消弱。例如,要实现双因子身份鉴别,则应在各个层面的身份鉴别上均实现双因子身份鉴别;要实现基于标记的访问控制,则应保证在各个层面均实现基于标记的访问控制,并保证标记数据在整个等级保护对象内部流动时标记的唯一性等。 d)建立统一的支撑平台 本标准针对较高级别的等级保护对象,提到了使用密码技术、可信技术等,多数安全功能(如身份鉴别、访问控制、数据完整性、数据保密性等)为了获得更高的强度,均要基于密码技术 或可信技术,为了保证等级保护对象的整体安全防护能力,应建立基于密码技术的统一支撑平台,支持高强度身份鉴别、访问控制、数据完整性、数据保密性等安全功能的实现。 e)进行集中的安全管理 本标准针对较高级别的等级保护对象,提到了实现集中的安全管理、安全监控和安全审计等要求,为了保证分散于各个层面的安全功能在统一策略的指导下实现,各个安全控制在可控情况下发挥各自的作用,应建立集中的管理中心,集中管理等级保护对象中的各个安全控制组件,支持统一安全管理。

保护模式下寻址

保护模式下寻址 网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位括号中是我的加注 段机制轻松体验 [内存寻址] 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量=物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M 内存。于是,Intel设计了这种寻址方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的限制。 保护模式下分段机制的内存寻址: 保护模式下分段机制是利用一个称作段选择符的偏移量,从而到描述符表找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,再加上偏移量 一段话,出现了三个新名词: 1、段选择子 2、描述符表 3、段描述符 我们现在可以这样来理解这段话:有一个结构体类型,它有三个成员变量:段物理首地址段界限段属性内存中,维护一个该结构体类型的是一个数组。而分段机制就是利用一个索引,找到该数组对应的结构体,从而得到段的物理首地址,然后加上偏移量,得到真正的物理地址。 公式:xxxx:yyyyyyyy 其中,xxxx也就是索引,yyyyyyyy是偏移量(因为32位寄存器,所以8个16进制)xxxx存放在段寄存器中。 现在,我们来到过来分析一下那三个新名词。段描述符,一个结构体,它有三个成员变量:1、段物理首地址2、段界限3、段属性 我们再来重温一遍描述符表,也就是一个数组,什么样的数组呢?是一个段描述符组成的数组。 接下来看看段选择子:段选择子,也就是数组的索引,但这时候的索引不在是高级语言中数组的下标,而是我们将要找的那个段描述符相对于数组首地址(也就是全局描述表的首地址)偏移位置。 就这么简单,如图:

历史街区保护模式的研究

历史街区保护模式的研究 摘要:通过对国内外历史街区保护模式的剖析,提出昆明文明街区历史街区的保护途径——“有机渗透型”模式,首先对文明街区内的遗产进行调研与评估,然后从街巷格局、交通、文脉等方面加以分析,希望对今后城市历史街区的保护与开发有所裨益。 关键词:历史街区;保护模式;昆明文明街片区;历史风貌;文脉 1、引言 历史街区的概念源于1933年现代建筑协会国际雅典会议,会议上通过的《雅典宪章》中指出:由历史建筑群及历史文化遗址所组成的区域称之为历史街区。 历史街区是一个城市的记忆,它们所构成的整体景观,显示一个城市在一定历史时期的典型场景。历史街区作为一个城市历史文化的载体,却随着现今城市的发展出现了历史街区与现代城市文脉的割裂,昔日历史老街的场景已经远离我们的记忆。 作为昆明唯一现存的历史文化街区,文明街片区虽保留着老昆明原有的市井生活与商业习俗,但随着城市化的暗涌:外来人口入住、房屋年久失修……导致现在的文明街街区与周围街巷的发展格格不入,甚至面临着被重建的命运。针对昆明文明街街区形势,结合当前国内外历史街区的保护模式研究,探寻适合于文明街街区发展的模式。 2、国内外保护模式的发展动态 2.1 国外动态 国外历史街区的保护从保护深度、保护范围、保护对象上都经历了一次伟大的变革,从建筑实体的保护衍生为地段乃至整个城市的保护、自然环境、人工环境及文化形态的保护等等。历史街区的保护已经上升到一个动态的发展过程,其具体的的保护形式可分为着眼于城市内部的经济复兴型、以提高城市生态环境质量为主的环境改造性及着眼于历史文化遗产保护的历史保护型。[1]从保护的运作模式来看,国外对历史街区的保护主要是通过民间商业组织得自主行为、政府推动并引导的社区参与、政府主导的市场运作模式来进行保护的。[2] 2.2 国内动态 国内对历史街区的保护可以追溯到19世纪20年代初期,一直发展到1986年国务院提出“历史文化保护区”,正式提出保护历史街区的概念。对于历史街区

80386 和 保护模式

80386 和保护模式 ___William Liu Intel CPU 一般可以运行在两种模式之下,即实模式和保护模式。早期的 Intel CPU ( 8086 , 8088 )只能工作在实模式之下,系统中只能运行单个任务,而且只能使用实地址模式。对于 Intel 80386 以上的芯片则还可以运行在 32 位的保护模式之下。在保护模式之下的 CPU 可以支持多任务;支持 4GB 的物理内存;支持 64TB 的虚拟内存;支持内存的页式管理和段式管理以及支持特权级。 本文档将首先介绍 Intel 80386 CPU 的几个内部寄存器,然后再由浅入深的分别介绍保护模式下的段式管理,页式管理,虚拟内存,多任务以及特权级管理等几个方面。 Intel 80386 CPU 的内部寄存器 这一部分先大致介绍一下 386 的内部寄存器,具体细节在后面的几节中再详细说明。一般来说, CPU 设计用来系统编程的系统寄存器包括如下几类: ?标志寄存器 (EFLAGS) ?内存管理寄存器 (GDTR , LDTR , IDTR , TR) ?控制寄存器 (CR0 , CR1 , CR2 , CR3 , CR4) ?兼容 8086 通用寄存器( EAX , EBX , ECX , EDX ) ?兼容 8086 段寄存器( CS , DS , ES , SS , FS , GS ) ?兼容 8086 数据寄存器( ESI , EDI , EIP , ESP ) 下面分别加以介绍:

1) 标志寄存器 EFLAGS : 跟 8086/8088 的 FLAGS 大致差不多。只不过位宽由 16bit 变成了 32bit ,负责的状态标志也多了一些。见图一所示: 图一: EFLAGS 的结构 其中系统标志: VM -虚拟 8086 模式; RF -恢复标志; NT -任务嵌套标志;IOPL - I/O 特权级标志; IF -中断允许标志。 2) 内存管理寄存器: 一共有 4 个,用于分段内存管理,都是用于存放指针的,只是所指的再内存单元中的内容有所不同。 GDTR 全局描述符表寄存器( Global Descriptor Table Register ),存放的是一个指向内存单元列表的指针,用于指向全局段描述表( GDT ),如图二所示。共 48bit ,高 32bit 是 GDT 的基址,低 16bit 描述 GDT 的长度。由于每项 8Byte ,所以共可以有 2^(16)/8=2^13 项。 IDTR 中断描述符表寄存器( Interrupt Descriptor Table Register ),存放的是也一个指向内存单元列表的指针,用于指向全局中断描述符表( IDT ),如图二所示。跟 GDTR 一样,共 48bit 。

X86体系中保护模式下的内存访问机制_湛辉来

文章编号:1000-582X(2002)06-0067-04 X86体系中保护模式下的内存访问机制Ξ 湛辉来,曾 一 (重庆大学计算机学院,重庆400044) 摘 要:保护模式是X86体系结构的一种重要的工作方式,为在X86平台上实现的多任务、多进程操作系统提供了相应的硬件支持。在计算机的底层开发过程中,了解计算机体系结构中的主要部件-内存的工作方式是及其重要的。文章介绍了当前较流行的微机体系结构-X86系统中的内存的组织、管理、和访问机制,分析了X86在保护模式下分段机制、分页机制中的一些主要的数据结构和相应的硬件支持,并详细描述了分段机制中逻辑地址到线性地址的转换,分页机制中虚拟地址到物理地址的转换过程。通过分页和分段机制,可以实现多进程操作系统中的进程独立地址空间,以及对操作系统中内存的保护措施,从而及时而有效地防止了因内存的非法访问而导致的系统崩溃。 关键词:保护模式;描述符;描述符表;页表;页目录 中图分类号:TP31611文献标识码:A Intel的80X86CPU系列芯片可在2种模式下工作:实模式、保护模式[1]。实模式是MS-DOS的运行环境。当内存寻址模式为实模式时,采用80286的20位地址线的存储器分段线性管理技术,存储器容量最大为1M B,线性地址与物理地址一致,对物理内存单元读写直接、灵活。但因受限于640K基本内存,使大量的扩展内存的使用受到制约,同时,分段的64K范围限制影响了内存访问的连续性,从而使系统的内存资源难以得到充分利用。在保护模式下,系统采用分段机制和分页机制,提供了灵活的寻址方式,使得应用程序可以访问多达4G B的存储空间,并为操作系统和应用程序实现虚拟存储器提供了相应的硬件支持,从而打破了实模式下内存寻址所受到的制约,提高了内存资源的使用效率。 1 X86的分段机制 X86的分段机制就是将X86的线性地址空间分成若干空间段(Segment),利用这些段来存储(记录)代码和数据,通过对段的保护来提供一种对数据或代码的保护[2]。这种寻址模式允许CPU访问装在1M B以上的数据和程序代码,就象在实模式中访问1M B以内的内存一样。1.1 分段机制中的数据结构 在分段机制,X86使用了如下几种主要数据结构: 1)段描述符(Segment Descriptor):用来描述一个段的位置、长度以及访问权限。一个描述符由8个字节组成,具体的格式如下 : 其中:基地址描述了该段的开始位置共32位,使得该段可以从4G空间里的任意一个位置开始。段的长度是由20位的界限和一个标志位G决定。标志位G位于0字节的最高一个比特,它的含义如下: 0:段的长度=界限 范围为1B~1M B 1:段的长度=界限34K 范围为4K B-4G B 2)全局描述符表(G DT,G lobal Describe T able):存放系统用的段描述符和各项任务共用的段描述符; 3)局部描述符表(LDT,Local Describe T able):存放某个任务专用的各段的段描述符; 每个描述符表中最大可以放8,192个段描述符,因此,每个描述符表的最大长度为64K B。 1.2 分段机制的硬件支持 X86提供了如下几个用于支持分段机制的寄存器:  2002年6月重庆大学学报 (自然科学版)V ol.25 N o.6第25卷第6期Journal of Chongqing University(Natural Science Edition)Jun.2002 Ξ收稿日期:2002-01-21 作者简介:湛辉来(1972-),男,重庆人,重庆大学硕士研究生。主要研究方向:软件工程及计算机体系结构。

安全保护措施及方案标准范本

解决方案编号:LX-FS-A50498 安全保护措施及方案标准范本 In the daily work environment, plan the important work to be done in the future, and require the personnel to jointly abide by the corresponding procedures and code of conduct, so that the overall behavior or activity reaches the specified standard 编写:_________________________ 审批:_________________________ 时间:________年_____月_____日 A4打印/ 新修订/ 完整/ 内容可编辑

安全保护措施及方案标准范本 使用说明:本解决方案资料适用于日常工作环境中对未来要做的重要工作进行具有统筹性,导向性的规划,并要求相关人员共同遵守对应的办事规程与行动准则,使整体行为或活动达到或超越规定的标准。资料内容可按真实状况进行条款调整,套用时请仔细阅读。 一、安全管理措施 ⑴坚决贯彻执行"安全第一,预防为主"的方针。实施安全生产目标责任制,健全安全保证体系,运用"全管"方法,分阶段、按部位做好安全防护工作,使之做到经常化、制度化、标准化。 ⑵落实安全生产责任制。实行"一把手"负责制。坚持管生产必须管安全的原则。 ⑶强化安全检查制度,各级都要定期检查,采用专业检查和群众检查相结合,平时检查与定期检查相结合,施工高峰期和冬、雨季组织专项检查。检查的重点围绕高空作业、电器线路、机械动力等方面进

信息系统安全等级保护基本要求内容

信息系统安全等级保护基本要求 1 围 本标准规定了不同安全保护等级信息系统的基本保护要求,包括基本技术要求和基本管理要求,适用于指导分等级的信息系统的安全建设和监督管理。 2 规性引用文件 下列文件中的条款通过在本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否使用这些文件的最新版本。凡是不注明日期的引用文件,其最新版本适用于本标准。 GB/T 5271.8 信息技术词汇第8部分:安全 GB17859-1999 计算机信息系统安全保护等级划分准则 GB/T AAAA-AAAA 信息安全技术信息系统安全等级保护定级指南 3 术语和定义 GB/T 5271.8和GB 17859-1999确立的以及下列术语和定义适用于本标准。 3.1 安全保护能力 security protection ability 系统能够抵御威胁、发现安全事件以及在系统遭到损害后能够恢复先前状态等的程度。 4 信息系统安全等级保护概述 4.1 信息系统安全保护等级 信息系统根据其在国家安全、经济建设、社会生活中的重要程度,遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权益的危害程度等,由低到高划分为五级,五级定义见GB/T AAAA-AAAA。 4.2 不同等级的安全保护能力 不同等级的信息系统应具备的基本安全保护能力如下: 第一级安全保护能力:应能够防护系统免受来自个人的、拥有很少资源的威胁源发起的恶意攻击、一般的自然灾难、以及其他相当危害程度的威胁所造成的关键资源损害,在系统遭到损害后,能够恢复部分功能。 第二级安全保护能力:应能够防护系统免受来自外部小型组织的、拥有少量资源的威胁源发起的恶意攻击、一般的自然灾难、以及其他相当危害程度的威胁所造成的重要资源损害,能够发现重要的安全漏洞和安全事件,在系统遭到损害后,能够在一段时间恢复部分功能。 第三级安全保护能力:应能够在统一安全策略下防护系统免受来自外部有组织的团体、拥有较为丰

12第十二章模式转换——从实模式进入保护模式

第十二章模式转换——从实模式进入保护模式 12.1 NASM编译实践 12.1.1 实验20 ——NASM编译 ●情景描述 使用NASM编译一段程序,并可以在裸机上运行。 ●实现功能 在开机后显示"Hello, OS world!" ●流程 1)初始化寄存器 2)调用BIOS int 10h,显示字符串 3)进入死循环 ●代码及注释 %define _BOOT_DEBUG_ %ifdef _BOOT_DEBUG_ org 0100h %else org 07c00h %endif ;告诉编译器加载到0100处生成,这样方便生成com文件。 ;或者告诉编译器加载到7c00处生成,这样方便 mov ax,cs;将当前段地址放入ax,可以不要 mov ds,ax;将当前段地址放入数据寄存器,可以不要 mov es,ax;将当前段地址放入extra寄存器,可以不要 call DispStr;调用显示字符串程序 jmp $;无限循环(跳转到当前地址) DispStr: mov ax,BootMessage ;BootMessage的首地址送ax mov bp,ax; 段内地址送到bp,至此地址完成——CS:BP = 串地址 mov cx,16; CX = 串长度 mov ax,01301h; AH = 13,AL = 01h mov bx,000ch; BH = 0(页号为0),BL = 0ch(黑底红字高亮) mov dl,0 ; 0送dx寄存器的低字节 int 10h; 10h号中断(视频中断,对应的中断向量为40-43H) ret ; 从显示子程序中返回到主程序 BootMessage: db "Hello, OS world!" times 510-($-$$) db 0; 用“0”填充0面0磁道1扇区剩下的空间,使生成的二进制代码恰好为512字节; ;$是当前行的段内偏移地址,$$是本小节代码的第一行代码,在本程序中就是“org 07c00h”的段内偏移地址。 dw 0xaa55;结束标志.使得0面0磁道1扇区510字节存55,511字节存aa,0扇区从0-511号单元,共512个字节。(引导扇区的结束标志)

相关主题