搜档网
当前位置:搜档网 › 80386 和 保护模式

80386 和 保护模式

80386 和 保护模式
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 。

LDTR 局部描述符表寄存器( Local Descriptor Table Register ),存放的是LDT 的段选择字。用于从 GDT 中索引出当前任务的局部描述符表( LDT ),如图二所示。共 16bit ,高 13bit 刚好可以索引到 GDT 的最大限长。 TI 位置1 , RPL 是请求特权级( Request Privilege Level )用于特权检查。

TR 任务寄存器( Task Register ),跟 LDTR 一样,存放的是任务状态段 TSS ( Task State Segment )的段选择字。用于从 GDT 中索引出当前任务的 TSS ,如图二所示。共 16bit 。

图二:系统内存管理寄存器

3) 系统控制寄存器:

386 CPU 共四个,分别是 CR0 、 CR1 、 CR2 、 CR3 , 486 以后又增设了 CR4 。如图三所示。

其中, CR0 是用于系统整体的控制。 CR1 保留。 CR2 用于保存页面转换时出错的线性地址。 CR3 存放页目录基址。 CR4 用于各种 CPU 级联相关。

图三:系统控制寄存器

需要注意的几个位是:

PE : CR0 的 0bit , Protect Enable 。使能 386 的保护模式。

PG : CR0 的 31bit , Paging 。 386 进入保护模式之后,启动分页机制。

Page-Directory Base : CR3 的 12 - 31bit 存放页目录首地址。每个任务只能唯一一个

Page-Fault Linear Address : CR2 线性地址错误。可以用于虚拟内存中

4) 与 8086 兼容的系列寄存器:

所有通用寄存器 EAX , EBX , ECX , EDX 和所有数据寄存器 EIP , ESP ,ESI , EDI 除了数据位由原来的 16bit 编程 32bit 外,功能基本没有变化。

当然为了保持对 16 位机的支持,你同样可以使用 AX , AH , AL , IP , SP ,SI , DI 等等

至于段寄存器 CS , DS , ES , FS , GS , SS 。你会发现名字都没有变化,事实上大小也是 16bit ,只是增加了几个。事实上, 386 在运行实模式时这些段寄存器跟 8086 是完全一样的。在运行于保护模式下时,他们同样用来指示段的地址,只不过里面存放的是段选择符,通过在 LDT 或者 GDT 中检索,间接的指示段地址。

保护模式下的段式管理

段式管理的目的是根据段基址值和段内数据的偏移值,生成数据在内存中的线性地址。在实模式中该线性地址既是实际的物理地址;在保护模式下,如果用户选择了使用分页管理机制,那么该线性地址还要经过页式变换才能生成最后的物理地址。

我们知道在实模式下:

物理地址=线性地址=段基址值(由段寄存器给出)× 16 +偏移地址

但是在保护模式下,就没有这么简单了 :P

在保护模式下,用户要使用段式管理,必须至少维护好一张 GDT 列表(通过 GDTR 来指示),和若干张 LDT 列表(可以没有)。如果我们要访问数据段中偏移值为 XX (放于 ESI 中)的变量。 CPU 的操作过程如下:

1 ) CPU 首先读取 DS 中的段选择字。注意这里 DS 中存放的不再是段基址了,而是保护模式下的段选择字,格式如图四所示(是不是觉得跟 LDTR 和 TR 的格式一样 ^_^ )

图四,段选择字的格式(共 16 位)

这里, RPL 是请求特权级( Request Privilege Level )用于特权检查,如果段寄存器是 CS 那么这里的 RPL 也叫 CPL ( Current Privilege Level )表示当前任务的特权级别。 TI 位为 1 时检索 GDT 表,为 0 时检索 LDT 表。Index 是索引号。比如 CS = 0x80 表示,当前任务的特权级别为 0 ,对应于GDT 表中的第 1 项。(在 linux 中,这里放的是系统内核代码段的描述符)

2 ) CPU 通过分析上述的段选择字,找到位于 GDT 或者 LDT 中相应的段描述符。 80386 共有四种段描述符和

3 种门描述符。分类如下:

注意:门描述符我们将在后面介绍保护模式下的中断时再介绍

各种描述符长度都为 8Byte ,格式如下图五所示:

图五:各种段描述符和门描述符

S = 0 表示是系统段。 1 表示是存储段

Segment Limit 共 20bit ,表示相应段的长度,单位参考 G 标志

Base Address 共 32bit ,表示相应段的基址

G = 1 表示 limit 的单位是 4KB , 0 表示 limit 的单位是 1B

P = 1 表示当前段存在于内存中,用户可以读写。 0 表示当前段不存在,用户访问时会产生一个 #NP 的异常。可以用来实现虚拟内存。

Type 各个字段的意义如下:

段类型Type 说明Type 说明

S=1 S=0

数据段

0 只读0 未定义

1 只读、已访问 1 可用 286TSS

2 读 / 写 2 LDT

3 读 / 写、已访问 3 忙的 286TSS

4 只读、向下扩展 4 286 调用门

5 只读、向下扩展、已访问 5 任务门

6 读 / 写、向下扩展 6 286 中断门

7 读 / 写、向下扩展、已访

7 286 陷阱门

代码段

8 只执行8 未定义

9 只执行、已访问9 可用 386TSS

A 执行 / 读 A 未定义

B 执行 / 读、已访问 B 忙的 386TSS

C 只执行、一致码段 C 386 调用门

D 只执行、一致码段、已访问 D 未定义

E 执行 / 读、一致码段 E 386 中断门

F 执行 / 读、一致码段、已

访问

F 386 陷阱门

这里我们主要关注 S = 1 的情况,也即数据段或者代码段。 S = 0 的情况后面会介绍到。

3 ) CPU 通过加载数据段断或者代码段的描述符,获取到相应段的基址。

4 )将获得的基址跟偏移地址相加得到所需变量的线性地址。整个过程如下图六和图七:

图六:选择字中 TI = 1 ,从 GDT 中检索的情况

图七:选择字中 TI = 0 ,从 LDT 中检索的情况

最后要强调的是,这里生成的 32 位线性地址并不一定是最后的物理地址。在linux 和 windows 下都需要进行分页转换之后,才能生成真正的物理地址。

保护模式下的页式管理

在 80386 下页式管理是可选的。如果同时设置了 CR0 的 PE 位和 PG 位,则启动了分页机制。将 32 位线性地址变换为物理地址,从地址总线上输出。

先介绍几个概念:页框(帧)( Page Frame )、页表( Page Table )、页表项( Page-Table Entries )以及页转换高速缓存。

?页框:物理内存中,地址连续的 4KB 单元,大小固定,且以 4KB 地址对齐。简称页。

?页表:本身占一页内存。用于存放页框的索引。因为每个页框用 32bit 来索引,所以一个页表最多可以索引 1K 个页框。一个任务中最多可以有 1K 个页表

?页表项:页表中的元素。用来索引页框。格式如下图八:

图八,页表项的格式

由于页框是与 4KB 地址对齐的,也即页框首地址的低 12 位为零。所以只需要知道高 20 位即可索引到对应的页框。

?页目录表:和页表相似,只不过使用来索引页表的。相应地可以用来索引 1K 个页表。一个任务中只能有一个页目录表。通过 CR3 索引

页目录表项:页目录表中的元素。用来索引页表。格式如下图九:

图九:页目录项的格式

注意:上面页目录项和页表项的格式中:

1 . P ( present ) 1 表示该页或页表存在于内存中,可以进行页面转换。 0 表示该页不在内存中,访问时会产生页错误异常( page-fault , #PF )

如果出现页错误异常,一般来说操作系统的缺页中断异常处理程序应该:

?从磁盘将该页拷贝入内存空间

?将该页加载到页表项或者页目录项中。避过那设置相应的 P 位以及其他位。

?从页错误处理函数中返回,并重启被中断的任务。

2 . A ( Accessed )标志: 1 已经访问过; 0 刚加载入内存,还没有访问。

3 . D ( Dirty )标志: 1 表示对应页已经被写入过。在页目录表项中不被使用

操作系统的内存管理程序会在系统内存紧张时用这两位来决定取出那些页来腾出空间。

4 . R/W 标志: 1 表示可读可写; 0 表示只读。跟 U/S 和 WP 标志相关。

5 . U/S 标志:设定页面的访问级别。 1 :普通用户级别; 0 :管理员级别

这两位不用于地址转换,但可以用于分页级的地址保护。在 CPU 的地址转换中同步操作的。

实际上,页式管理就是将每一个线性地址解释为三个部分:一个页目录表的index 部分、一个页表的 index 部分、一个页框中的 offset 部分

通过如上所述的两级检索产生物理地址。流程图如图十所示:

图十:分页管理机制的流程图

由上面看出页式管理条件下: 80386 是采用两级目录检索机制。其中页目录表和页表各占 1 页,一个页目录表可以索引 1K 个各页表。所以:一个任务可以访问1K × 1K 个内存页。总的内存空间为1K × 1K × 4KB = 4GB

另一方面页目录项和页表项的格式基本一样。这样做是为了方便 CPU 处理,尽可能的提高 CPU 的处理速率。

最后,为了提高最大程度的提高地址转换的速率,处理器会将最近所使用的页表数据存放在 CPU 的内部高速 Cache 中。操作系统设计人员必须在当前页面改变时刷新告诉缓冲区。可供选择的方式有二:

?通过使用 mov 指令重新加载 CR3 页目录基址寄存器

?通过执行一个任务切换

保护模式下的虚拟内存管理

通过前面部分的介绍,我们知道 CPU 如何从逻辑地址(或者称虚拟内存地址),首先通过段变换转换为线性地址。然后再通过分页变换转换为实际的物理地址。

因此,可以看出, CPU 进行地址变换的目的就在于解决虚拟内存空间到物理内存空间的映射问题。

这里我们介绍的虚拟内存管理的技术,就是通过利用二级或者外部存储空间,使程序能够不受实际物理内存量限制而使用内存的一种方法。通常,虚拟内存空间要比实际的内存空间大很多。

实际上虚拟内存管理是由 CPU 和操作系统结合在一起实现的。

在 80386 中虚拟内存管理是这样实现的:

?当一个程序需要使用一块不存在的内存时(即在页表项中 p 位为 0 ), CPU 将产生一个页错误异常中断( Page Fault ),并将引起中断的线性地址放入 CR2 控制寄存器中。

?页错误异常处理程序将把请求的页面从二级存储器(或硬盘上)加载到物理内存中。如果此时物理内存已经被全部占满了,那么可以借助二级存储器的一部分作为交换缓冲区( Swaper )把内存中暂时不用的一部分页面交换到出来,然后调入要求的页面。

保护模式下的中断管理

一般意义上的中断实际上可以分为中断和异常两类。主要区别在于中断产生于CPU 外部,通过 CPU 的引脚 INTR 或者 NMI 进入 CPU ,分别成为可屏蔽中断和不可屏蔽中断;异常产生于 CPU 的内部。根据引起异常的程序是否可悲恢复和恢复点的不同,又进一步划分为故障( Fault ),陷阱( Trap )和中止( Abort )。

故障在引起异常指令之前,会把异常的情况告诉系统,所以是可排除的。当控制转移到故障处理程序时,所保存的断点 CS 以及 EIP 的值指向引起故障的指令。这样当故障排除之后,之行 IRET 将返回原来的地方继续执行。比如页错误故障( Page-Fault )

陷阱是在引起异常指令之后,将异常情况报告给系统的一种异常。当控制转移到陷阱处理程序时,所保存的断点 CS 以及 EIP 指向下一条要执行的指令。软中断指令和单步调试都是陷阱异常的例子。

中止时系统出现严重错误时,通知系统的一种异常。引起中止的指令是无法确知的,系统也无从恢复。中止异常处理程序往往要重新建立系统表格,并可能重启操作系统。硬件故障就是中止异常的一个例子。

在实模式下,首先由 BIOS 在内存的 000H ~ 3FFH 区域放入 256 个中断向量(中断服务程序的入口地址),每个向量包含 4 个字节。初始化完成之后可以由用户修改。

当 CPU 在当前指令执行结束后,检查到中断请求后,将查找相应的中断矢量 n 。然后从中断向量表中读入服务程序 IP 和 CS 值。跳转过去执行中断服务程序。

在保护模式下,用户必须首先建立一个中断描述符表( IDT ),可以位于内存的任何地方,但是必须通过 IDTR 索引之(参考图二)。 IDT 最长为 2KB ,可以存放 256 个门描述符。这些描述符大小为 8Byte ,可以是中断门,陷阱门和任务门的描述符。三种描述符的格式如上图五所示。其中中断门指向的是硬件中断服务程序入口;陷阱门指向的是异常服务程序入口。

和实模式一样,当 CPU 在当前指令执行结束后,检查到中断请求后,将查找相应的中断矢量 n 。然后通过 IDTR 检索第 n 项描述符。并转到响应服务程序去。

总结一下,在实模式和保护模式下 CPU 检测中断和读取中断向量的方式都一样,不同之处在于实模式下 CPU 直接访问内存 [4n---4n + 3] ,读取中断处理程序入口。而在保护模式下, CPU 通过 IDTR 和 n 访问到服务处理程序的门描述符。再通过门描述符访问服务程序。

保护模式下的特权管理相关的一些概念:

? RPL :选择子当中的权限位确定的权限

? CPL :特指 CS 中的选择子当中的权限位确定的权限

? EPL : EPL=Max(RPL,CPL), 即 RPL 和 CPL 中数值较大的,或说权限等级较小的

? DPL :描述符中的权限位确定的权限

? PL :泛指以上 4 种特权级

?任务特权: =CPL

? I/O 特权:由 EFLAGS 寄存器的位 13 、 14 确定的权限

?一致代码段:一种特殊的代码段,它在 CPL>=DPL 时允许访问

正常的代码段在 CPL=DPL RPL<=DPL 时才允许访问

保护模式下的多任务管理

保护模式下最大的好处就在于可以实现多任务管理。其实保护的意义就在于保护在多任务情况下一个任务能够不被其他任务干扰而顺利执行。

CPU 的多任务主要是通过任务寄存器 TR 和任务状态段 TSS 实现的。

每个任务都有一个自己独立的 TSS ,用于保存任务运行的环境,参看如下图十一。 TR 是个任务状态段的选择字(参看图二)。 TR 从 GDT 中索引 TSS 的描述符(参看图五)。再由 TSS 的描述符索引到 TSS 。这种通过 TR 间接访问 TSS 的好处就在于可是保证每个任务只能访问自己的 TSS ,从而保证操作系统中各个任务的独立运行。

图十一: TSS 段的结构

有四种情况会导致任务切换:

1) 在当前程序、任务或过程中执行一条 JMP 或 CALL 指令转到 GDT 中 TSS 描述符。

2) 当标志位EFLAGS · NT 设置时,当前任务执行指令 IRET (或 IRETD ,用于 32 位程序转换

这两种称为直接任务切换,原理见图

3 )在当前程序、任务或过程中执行一条 JMP 或 CALL 指令转到 GDT 或当前LDT 中一个任务门描述符。

4 )通过一个中断或异常矢量指向 IDT 中的一个任务门描述符

这两种称为间接任务切换

图十二:直接任务切换方式

图十三:间接任务切换方式

当处理器切换到一个新任务时,执行下列操作步骤:

⑴ 从一个任务门或先前任务的连接域(反向链)中(由指令 IRET 启动任务切换)、从指令 JMP 或 CALL 的操作数为新任务获取 TSS 段选择字。

⑵ 检查当前的任务是否允许转向新任务,访问权限规则适用于指令 JMP 和CALL ,当前任务的 CPL 阈值和新任务段选择子的 RPL 阈值必须小于或等于TSS 描述符的 DPL 域值或所参考任务门的 DPL 域值。即直接任务转换要求:

DPL TSS 描述符≥ MAX ( CPL 现行特权, RPL 新任务的段选择子)

间接任务转换要求:

DPL 任务门≥ MAX ( CPL 现行特权, RPL 指向任务门的选择子)

除了由指令 INT n 引起的软件中断之外凡是异常或中断以及指令 IRET 允许切换到新任务,均无需考虑目的任务门或 TSS 描述符的 DPL ,对于由指令 INT n 引起的中断,则要检查其 DPL 。

⑶ 检查新任务的 TSS 描述符是否存在,以及是否有一个合法的界限(大于或等于 67H )。

⑷ 检查新任务是否有效(调用、跳转、异常或中断)和是否忙( IRET 返回)。

⑸ 检查当前任务的 TSS 。新任务的 TSS 和任务切换中所使用的所有段描述符是否被分页进入系统存储器。

⑹ 如果任务切换是由指令 JMP 或 IRET 引起,处理器则清除当前任务 TSS 描述符中的忙标志位 B ,如果由指令 CALL 、一次异常或一次中断所引起,设置忙标志位 B 。

⑺ 如果任务切换是由指令 IRET 引起,处理器则清除临时保存的 EFLAGS 寄存器副本中的标志位 NT ,如果由指令 CALL 或 JMP 、一次异常或一次中断所引起,临时保存的 EFLAGS 寄存器副本中的标志位 NT 不变。

⑻ 在当前任务的 TSS 中保存当前任务的状态,处理器根据 TR 内容寻址当前TSS 的基地址,复制下列寄存器的状态到当前任务的 TSS 中;所有通用目的寄存器、保存在段寄存器中的段选择符、关于 EFLAGS 寄存器的临时存储副本、以及指令指针 EIP 。

此时必须注意的是:如果所有的检查和保存都成功执行,处理器允许任务切换,如果在从第 1 步到第 8 步的过程中发生了一个不可恢复的错误,处理器将不能完成任务间的切换,并强迫处理器返回到启动任务切换指令执行之前的状态,如果这种错误发生在任务切换允许之后(即在第 9 步到第 14 步),处理器完成任务切换,而不执行其他的访问和段的有效性检查,并在开始执行新任务之前产生一个适当的异常。如果在允许之后发生了异常,异常句柄必须在允许处理器执行任务之前,自身完成任务切换。

⑼ 如果任务切换是由执行 CALL 指令、一次异常或一次中断所引起,处理器将当前 TSS 的段选择子复制到新任务 TSS 的反向链中。临时保存在新任务 TSS 中 EFLAGS 寄存器副本的标志位 NT 被处理器设置;如果由指令 IRET 所引起,

处理器恢复临时保存在堆栈中 EFLAGS 寄存器副本的标志位 NT ;如果由指令JMP 所引起,标志位 NT 不变。

⑽ 如果任务切换是由指令 CALL 、指令 JMP 、一次异常或一次中断所引起,处理器则设置新任务 TSS 描述符中的忙标志位 B ;如果由指令 IRET 所引起,忙标志位 B 被处理器清除。

⑾ 设置新任务 TSS 中的副本标志位CR0 · TS 。

⑿ 为 TR 装载新任务 TSS 所需要的段选择子和描述符。

⒀ 从新任务的 TSS 中装载新任务的状态到处理器中,在该步中可能发生任何与装载和校验段描述符相关的错误,被装载的任务状态信息包含在 LDTR 、 PDRB (即 CR3 )、 EFLAGS 。 EIP 、通用目的寄存器和段寄存器。

⒁ 开始执行新任务。对于一个异常句柄,新任务的第一条指令不执行。

当任务成功切换时,当前执行任务的状态总被保存。如果该任务被恢复执行,执行使从所保存 EIP 值指向的指令处开始,寄存器的值也被恢复到任务挂起时的保存值,这与中断现场的恢复类似。

当发生任务切换时,新任务的特权级并不继承前任挂起任务的特权级,新任务按CS 寄存器的 CPL 域指定的特权级开始执行, CS 从 TSS 中装载得到。通过各自独立的地址空间、不同的 TSS 和访问权限可以对任务进行很好的隔离,在任务切换时软件并不需要执行对特权级的直接检查。

一个任务的运行环境

一个任务的运行环境由寄存器组和地址空间组成。寄存器组中保存的是任务当前的状态。地址空间由若干个段构成,每个段都有相应的段描述符,这些描述符要么放在 GDT 中,为所有任务共享,要么放在 LDT 中,是任务的私有空间。

任务的段包括:

GDT 中索引的代码段,数据段,一般这时操作系统的内核数据段代码段。

LDT 段,就是一张局部描述符表,由该表再索引其他私有段,比如私有数据段,私有代码等。

TSS 段,保存有该任务的所有信息,任务切换用。

最后要说明的是,多任务状态是可选的。操作系统完全可以在没有任何任务的情况下运行。以 Linux 为例,系统就是在所有外设初始化完成之后才调用

move_to_user_mode() 函数,产生任务 0 的。

实现由实模式进入保护模式

1 )创建 GDT 表

2 )置 PE 位为 1 进入保护模式

3 )执行跳转命令,以清除在实模式下读取的任何指令

第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个字节。(引导扇区的结束标志)

相关主题