12第十二章模式转换——从实模式进入保护模式
网络安全技术与实践第二版课后答案
网络安全期末复习题型:1、选择、判断、简答(45%)2、分析题(55%)注:如有发现错误,希望能够提出来。
第一章引言一、填空题1、信息安全的3个基本目标是:保密性、完整性和可用性。
此外,还有一个不可忽视的目标是:合法使用。
2、网络中存在的4种基本安全威胁有:信息泄漏、完整性破坏、拒绝服务和非法使用。
3、访问控制策略可以划分为:强制性访问控制策略和自主性访问控制策略。
4、安全性攻击可以划分为:被动攻击和主动攻击。
5、X.800定义的5类安全服务是:认证、访问控制、数据保密性、数据完整性、不可否认性。
6、X.800定义的8种特定的安全机制是:加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制和公证。
7、X.800定义的5种普遍的安全机制是:可信功能度、安全标志、事件检测、安全审计跟踪和安全恢复。
二、思考题2、基本的安全威胁有哪些?主要的渗入类型威胁是什么?主要的植入类型威胁时什么?请列出几种最主要的威胁。
答:基本的安全威胁有:信息泄露、完整性破坏、拒绝服务、非法使用。
主要的渗入类型威胁有:假冒、旁路、授权侵犯。
主要的植入威胁有:特洛伊木马、陷门最主要安全威胁:(1)授权侵犯(2)假冒攻击(3)旁路控制(4)特洛伊木马或陷阱(5)媒体废弃物(出现的频率有高到低)4.什么是安全策略?安全策略有几个不同的等级?答:安全策略:是指在某个安全区域内,施加给所有与安全相关活动的一套规则。
安全策略的等级:1安全策略目标;2机构安全策略;3系统安全策略。
6.主动攻击和被动攻击的区别是什么?请举例说明。
答:区别:被动攻击时系统的操作和状态不会改变,因此被动攻击主要威胁信息的保密性。
主动攻击则意在篡改或者伪造信息、也可以是改变系统的状态和操作,因此主动攻击主要威胁信息的完整性、可用性和真实性。
主动攻击的例子:伪装攻击、重放攻击、消息篡改、拒绝服务。
被动攻击的例子:消息泄漏、流量分析。
9、请画出一个通用的网络安全模式,并说明每个功能实体的作用。
内存寻址的三种模式
内存寻址的三种模型1. 地址的种类首先明确一下逻辑地址和线性地址这两个概念:1. 逻辑地址2. 线性地址3. 物理地址1.1 逻辑地址:逻辑地址是编译器生成的,我们使用在linux环境下,使用C语言指针时,指针的值就是逻辑地址。
对于每个进程而言,他们都有一样的进程地址空间,类似的逻辑地址,甚至很可能相同。
1.2 线性地址:线性地址是由分段机制将逻辑地址转化而来的,如果没有分段机制作用,那么程序的逻辑地址就是线性地址了。
1.3 物理地址物理地址是CPU在地址总线上发出的电平信号,要得到物理地址,必须要将逻辑地址经过分段,分页等机制转化而来。
2. 三种寻址模型x86体系结构下,使用的较多的内存寻址模型主要有三种:1. 实模式扁平模型real mode flat model2. 实模式分段模型real mode segment model3. 保护模式扁平模型protected mode flat model下面是对这三种模型的描述实模式和保护模式相对,实模式运行于20位地址总线,保护模式则启用了32位地址总线,地址使用的是虚拟地址,引入了描述符表;虽然二者都引入了段这样一个概念,但是实模式的段是64KB固定大小,只有16KB个不同的段,CS,DS等存储的是段的序号(想想为什么?)。
保护模式则引入了GDT和LDT段描述符表的数据结构来定义每个段。
扁平模型和分段模型相对,区别在于程序的线性地址是共享一个地址空间还是需要分成多个段,即为多个程序同时运行在同一个CS,DS的范围内还是每个程序都拥有自己的CS,DS:前者(flat)指令的逻辑地址要形成线性地址,不需要切换CS,DS;后者的逻辑地址,必须要经过段选择子去查找段描述符,切换CS,DS,才能形成线性地址。
3. 实模式扁平模型该模式只有在386及更高的处理器中才能出现!80386的实模式,就是指CPU可用的地址线只有20位,能寻址0~1MB的地址空间。
x86汇编语言:从实模式到保护模式(第2版)
16.1 任务的隔离和特权级保护 16.2 代码清单16-1 16.3 内核程序的初始化 16.4 加载用户程序并创建任务 16.5 用户程序的执行 本章习题
17.1 本章代码清单 17.2 任务切换前的设置 17.3 任务切换的方法 17.4 用jmp指令发起任务切换的实例 17.5 处理器在实施任务切换时的操作 17.6 程序的编译和运行 本章习题
第9章 硬盘和 显卡的访问与 控制
5.1 计算机的启动过程 5.2 创建和使用虚拟机
6.1 本章代码清单 6.2 欢迎来到主引导扇区 6.3 注释 6.4 在屏幕上显示文字 6.5 显示标号的汇编地址 6.6 使程序进入无限循环状态 6.7 完成并编译主引导扇区代码 6.8 加载和运行主引导扇区代码 6.9 程序的调试技术
7.1 代码清单7-1 7.2 跳过非指令的数据区 7.3 在数据声明中使用字面值 7.4 段地址的初始化 7.5 段之间的批量数据传送 7.6 使用循环分解数位 7.7 计算机中的负数 7.8 数位的显示 7.9 其他标志位和条件转移指令
8.1 从1加到100的故事 8.2 代码清单8-1 8.3 显示字符串 8.4 计算1到100的累加和 8.5 累加和各个数位的分解与显示 8.6 程序的编译和运行 8.7 8086处理器的寻址方式 本章习题
3.1 寄存器和字长 3.2 内存访问和字节序 3.3 古老的INTEL 8086处理器 本章习题
4.1 汇编语言程序 4.2 NASM编译器 4.3 配书文件包的下载和使用 本章习题
第6章 编写主引 导扇区代码
第5章 虚拟机的 安装和使用
第7章 相同的功 能,不同的代码
第8章 比高斯 更快的计算
精彩摘录
这是《x86汇编语言:从实模式到保护模式(第2版)》的读书笔记模板,可以替换为自己的精彩内容摘录。
微机原理 汇编语言与接口技术 (周杰英 著) 人民邮电出版社
h 目的操作数
源操作数
k(1) MOV AX,100
寄存器寻址
立即数寻址
(2) MOV AX,[100]
寄存器寻址
直接寻址
(3) MOV DL,[BP+SI] 寄存器寻址
基址变址寻址
(4) MOV [BX],CX
寄存器间接寻址 寄存器寻址
(5) MOV DX,[SI]
寄存器寻址
寄存器间接寻址
(6) MOV 1234H[BX],DS 寄存器相对寻址 寄存器寻址
www.kh 课d后a答案w网.com
课后答案网
周期来完成 16 位数据的传送,而对于非规则字则用相邻两个总线周期来完成该字的存
储操作,先取其奇地址字节(即数据的低位字节),然后存取偶地址字节。在组成存储
系统 时, 总是偶 地址 单元的 数据 通过 AD0~AD7 传送 ,而 奇地址 单元 的数据 通 过 AD8~AD15 传送,即通过总线高字节传送。 BHE 信号和 A0 信号控制存储器读写见下表:
优点? 解:总线接口部分和执行部分是分开的,每当 EU 执行一条指令时,造成指令队列空出 2 个或空出一个指令字节时 ,BIU 马上从内存中取出下面一条或几条指令,以添满他 的指令队列。这样,一般情况下,CPU 在执行完一条指令后,便可马上执行下一条指 令,不像以往 8 位 CPU 那样,执行完一条指令后,需等待下一条指令。即 EU 从指令队 列中取指令、执行指令和 BIU 补充指令队列的工作是同时进行的。这样大大提高了 CPU 利用率,降低了系统都对存储器速度的要求。
课后答案网
www.kh 课d后a答案w网.com
第一章 绪论
习题与答案
m 1. 把下列二进制数转换成十进制数、十六进制数及 BCD 码形式。 o (1) 10110010B =
Linux0.11——从实模式到保护模式
Linux0.11——从实模式到保护模式综述最近在阅读Linux 0.11的源码时,对于setup.s⽂件中设置GDT表的部分不是很理解,后来经过刘国军⽼师的指点,结合赵炯博⼠的《Linux内核完全注释》的第四章《80X86保护模式及其编程》,对于保护模式有了⼀些粗浅的了解和认识。
备忘。
本⽂章主要讲解保护模式的寻址机制与setup.s中的切换部分。
保护模式保护模式运⾏在80286及其之后的所有CPU上,但是为了保证向前兼容性,正常的CPU在启动时并不会默认进⼊保护模式,⽽是会进⼊实模式,随后通过⼀系列设定转⼊保护模式。
在16位实模式下,CPU寻址时使⽤16位段寄存器的内容乘以16当作段基地址,加上16位段偏移地址形成20位的物理地址,所以最⼤寻址仅为1MB字节,最⼤段长度64KB。
在实模式下,所有的段都是可以任意访问的,即任意读、写和执⾏。
虽然在80286点CPU上已经出现了保护模式,但是其寄存器的位宽仍然是16位,只不过其地址线由20位扩⼤到了24位,寻址空间随即扩⼤到了16MB。
真正的32位保护模式出现在80386上,其地址总线和寄存器都是32位宽的,因此寻址空间扩⼤到了4GB。
保护模式下,CPU寻址主要有两种模式,⼀是分段模式,⼆是分段和分页相结合,分页⽆法单独出现。
保护模式的分段模式为每⼀段增加了段属性来限制⽤户程序对内存中⼀些段的操作。
在全局描述符表(GDT)中,每个段的表项存储了⼀个段的基本属性,例如段的基地址、段的界限、段的类型(代码段、数据段)、段的执⾏权限等。
分页模式的出现使得程序员可以编写远远⼤于内存的程序⽽⽆需担⼼内存的容量,在该模式下,内存被划分为“页”存储,磁盘的⼀部分⽤作虚拟内存,当应⽤程序执⾏时需要的某些代码或数据所在的页不在内存中时,CPU就会产⽣⼀个缺页异常,从磁盘中将所需的页调⼊内存中后恢复执⾏,在应⽤程序看来,所需的代码或数据仿佛⼀直存在内存上。
重要数据结构在保护模式中,有⼏个长得很像的名字⼀直是我们⼼头噩梦:GDT、GDTR、LGDT、LDT、LDTR、LLDT……事实上,并不是那么难区分。
国防《计算机信息安全技术》课后习题答案第12章
第12章软件保护技术习题参考答案1. 软件保护经历了哪些阶段?各有什么特点?答:软件保护大致经历了3个阶段:DOS时代、Windows时代、互联网时代。
各个阶段的特点如下:(1)DOS时代在DOS时代,软盘是软件流通的主要载体,软盘保护也就成了软件保护的主要方式。
软盘保护简单、易实现、成本低,成为软件商得力的助手。
在这一时期,还出现过一种密码本保护模式,国内在这个时期出现了卡保护技术。
(2)Windows时代原有的软盘保护技术被淘汰,保护锁技术早在DOS时代就已经存在了,但直到这个阶段,才得到重视,保护锁技术慢慢成为软件保护的主流技术。
Windows时代光盘保护技术也成为了关注的新焦点,光盘保护主要适用于批量大、软件生命周期短的产品。
(3)互联网时代互联网时代软件注册机制成为共享软件的主流保护手段。
针对软件注册机制中出现的软件注册信息被随意扩散的问题,有人提出了许可证保护方式。
该方式是对软件注册机制的一种改良,把原来的“一人一码”的方式改成“一机一码”。
2. 简述软件保护的基本要求。
答:软件保护的目的主要有两个:一是防止软件被非法复制,二是防止软件被非法使用和修改。
为了达到这两个目的,软件保护必须满足3个基本要求:反拷贝、反静态分析和反动态跟踪。
3. 除了文中提到的软件保护技术,还有没有其他软件保护技术?试查询并作简要描述。
答案:略。
4. 简述软件加壳的目的。
答:软件加壳的目的有两个:一是对受保护的程序进行保护,防止软件的相关信息泄露,同时加壳技术中往往集成了反跟踪、反内存补丁、反dump等技术,可以有效防止软件被反编译和修改;二是对受保护的程序进行压缩,节省存储空间,便于快速传输。
5. 查询有关脱壳的资料,并进行加壳与脱壳练习。
答案:略。
汇编语言第2章80x86计算机组织
控制标志位
• 控制标志位 :DF 方向标志,用于串处理指令处理
▪ DF位为1时,每次操作后使变址寄存器SI和 DI减量,使串处理从高地址向低地址方向处 理:
▪ 当DF位为0时,则使SI和DI增量,使串处理 从低地址向高地址方向处理:
系统标志位
• IF:中断标志。 当IF=1时,允许中断; IF=0时关闭中断
数据的宽度 • 地址总线宽度:用以确定可访问的存储器的最
大范围
地址总线宽度
• 10位:210=1024单元,1K • 20位:220=1024* 210单元=1024K,1M • 24位:224=16*1M,16M • 30位:230=1024M,1G • 32位:232=4G,即4GB
二、一些名词术语(2)
• TF:陷井标志(跟踪标志)。用于单步方式操作 • IOPL:I/O特权级。控制对I/O地址空间访问
段寄存器
• 8086/8088、80286:四个段寄存器 ▪ 代码段CS,数据段DS,堆栈段SS,附加段ES
• 80386及后继机型:六个段寄存器 ▪ 代码段CS,数据段DS,堆栈段SS,附加段ES、 FS、GS---都是16位
• ZF:零标志。运算结果为0,置1;否则置0。 • CF:进位标志。记录从最高有效位产生的进位值。
最高有效位有进位时置1,否则置0。 • AF:辅助进位标志。记录运算时第3位产生的进位
值。如第3位有进位时置1,否则置0。 • PF:奇偶标志。当结果操作数中1的个数为偶数时置
1,否则置0。
标志符号 举例
段中的某一存储单元的地址 4. SI、DI一般与DS联用:
在串处理指令中,SI和DS联用,DI和ES联用
8086系统的堆栈
• 是存储器中的特殊区域 – 在堆栈段内,“FILO” – SP始终指向栈顶,总是字操作,指示栈顶的 偏移地址; – BP可作为堆栈区中的一个基地址以便访问 堆栈中的其他信息
Lab1 介绍
如何进入保护模式
boot/boot.s
lgdt gdtdesc 重新加载gdt表 movl %cr0, %eax orl $CR0_PE_ON, %eax movl %eax, %cr0 设置cr0寄存器,开启保护模式 ljmp $PROT_MODE_CSEG, $protcseg 进入32位模式 .code32 protcseg: # Assemble for 32-bit mode
8个16-bit寄存器( 8个32-bit寄存器的低16位)
8个8-bit寄存器(%ax ~%dx的高8位和低8位)
6个段寄存器
3个控制寄存器
AT&T汇编语法(2)——立即数
使用立即数,要在数前面加符号$
$0x04 \lab1\boot\boot.S
(1)
testb$0x2,%al .set CR0_PE_ON,0x1 orl $CR0_PE_ON, %eax
ELF文件结构
如何在ELF中找到某一段
重要的数据结构 ELF文件头: struct Elf{} 程序头表相对于文件开头的偏 移: Elf->e_phoff 程序头表中段个数: Elf->e_phnum 程序头表中的段: struct Proghdr 段相对于文件开头的偏移: Proghdr->p_offset
AT&T汇编语法(5)——内存寻址
寻址方式
AT&T: displacement(base,index,scale) Intel: [base+index*scale+displacement] -4(%ebp)
《x86汇编语言:从实模式到保护模式》检测点和习题答案
《x86汇编语⾔:从实模式到保护模式》检测点和习题答案检测点1.1:按顺序分别为:13 15 78 255 128 56091检测点1.2:按顺序分别为:1000 1010 1100 1111 11001 1000000 1100100 11111111 1111101000 1111111111111111 100000000000000000000检测点1.3:按顺序分别为:8 10 11 12 13 14 15 16 31 1741 1022 4092 65535检测点1.4:按顺序分别为:8 a c f 19 40 64 ff 3e8 ffff 100000检测点1.5:1.按顺序分别为:11 1010 1100 1111 100000 111111 1011111110 1111111111111111 100111111100000001011101 11111001100111111111110111111112.按顺序分别为:1/1 11/3 0101/5 111/7 1001/9 1011/A 1101/D 1111/F 0/0 10/2 100/4 110/6 1000/8 1100/C 1110/E检测点1.6:1.4092/111111111100 2.27B6100/10011110110110000100000000第1章习题:1.5 C =15D=1111B =12D=1100B =10D=1010B =8H=1000B =11D=1011B =14D=1110B =16D=10000B 2.12 10101 10001111 1000000000 1FF检测点2.1:1.(2) (16) (4) (32) 2. (7) (8) 最⾼位 3. (00) (0F) (8) (00、02、04、06、08、0A、0C、0E) 双字时,是00、04、08、0C检测点2.2:A3D8H检测点2.3:1.8 (AX BX CX DX SI DI BP SP) (AH AL BH BL CH CL DH DL) 2.(A) (C) (D F) 3.(A B C D F)第2章习题:1. 64个 2. 25BC0H~35BBFH检测点3.1:1.(略) 2. (B) (A) (C)第3章习题:1. 00H、35H、40H 2. 49H(即73个字节)检测点4.1:1.(0) (0) (1) (0) (0) (1) 2. (A B C)检测点4.2:1.(略) 2. (略) 3.应在屏幕克上⾓显⽰a、s、m三个字母检测点5.1:1.(0xB8000) (0xB800) (0xF9E) (0x27) (0x48) 2. (E F G H J L) A错误的原因是企图向8位寄存器传送16位字; B错误的原因是向段寄存器传送⽴即数; C错误的原因是通过8位寄存器AL向段寄存器传送; D错误的原因是未指⽰内存操作数的长度; I错误的原因是两个寄存器不匹配; K错误的原因是在两个内存单元之间传送。
从实模式到保护模式中断技术的教学认识
长江 大学计算机科 学学 院 李
LI Pe ng
鹏
( Co l l e g e o f Co mp u t e r S c i e n c e ,YANGTZ E Un i v e r s i t y,J i n g z h o u Hu b e i 4 3 4 0 2 3 ,Ch i n a)
在 《 微 机 原 理 及 应 用 》 课 程 中 , 中 断 机 制 和 中 断 技 术 是 很 重 要 的 内容 ,它 是 微 机 系 统 的 主 要 组 成 部 分 之 一 。 随 着 计 算 机 技 术 的 不 断 发 展 ,尤 其 是 计 算 机 运 行 的速 度 越 来 越 高 ,对 计 算 机 的 性 能 要 求 也 随 之 愈 来 愈 高 , 不仅要求 外设 与C P U 并行操作 ,而且要求计算 机 能够随时通 过中断方 式发现错误 ,计算机 出现异常时 能够 及时 处理 故障等 。在实模式 下 和 保 护 模 式 下 分 别 转 到 中 断 服 务 程 序 入 口 地 址 的 方 式 区 别 很 大 , 工 作 在 保 护 模 式 下 的 微 型计算机 ,其中断 的功能越来越 强, 中断 系统越来越 复杂,组 成中断系统 的中断技术 成 为 了计 算机 系 统 中 十 分 重 要 的 技 术 ,它 是 《 微 机 原 理 及 应 用 》 课 程 教 学 中 的 重 点 ,也 是难 点 。 1 . 实 模 式 下 中 断 系统 的要 点 3 2 位机 在 实模 式 下 的 中断机 制与 8 0 8 6 的中断机制完 全兼容 。8 0 8 6 有一 个简单而灵 活 的 中断 系 统 ,每 个 中 断 都 有 一 个 中 断 类 型 码 , 以供 C P U 进行识别 ,8 0 8 6 最 多能处理2 5 6 种 不 同 的 中 断 类 型 。 中 断 可 以 由C P U 以 外 的 硬 件 设 备 驱 动 , 也 可 由 软 件 中 断指 令 启 动 。在 某 些 情 况 下 , 也 可 由C P U自身 启 动 。8 0 8 6 的 中 断源可分 为两类 ,即外部 中断和 内部 中断, 外部中 断分为可屏蔽 中断 I N T R 和 非 屏 蔽 中 断 N M I , 可屏 蔽 中 断 请 求 线 I N T R 通 常 由 中 断 控 制 器8 2 C 5 9 A 驱动 , N M I 的优 先 级 比 I N T R 高 。 内部 中 断 是 通 过 软 件 调 用 的 不 可 屏 蔽 中断 , 包 括 溢 出 、单 步 等 陷 阱 中 断 和 I R T T i 指 令 中断 等 8 0 8 6 的 中 断 系 统 以位 于 内存 0 段 内偏 移 地 址从0  ̄0 3 F F H 区域 的 中断 向 量 表 为 基 础 , 中 断 向量 表 中最 多 可 以存 放 2 5 6 个 中断 向量 , 中 断 向量 是 指 中断 服 务 程 序 的 首 地 址 ,包 括 1 6 位 的代 码 段 值 和 1 6 位 的偏 移 地 址 值 ,共 有 4 个 字 节 。 每 个 中 断类 型 码 对 应 一 个 中断 向 量 , C P U 通 过 中 断 类 型 码 找 到 对 应 的 一 个 中 断 向 量 ,于 是 ,执 行 相 应 的 中断 服 务程 序 。 2 . 保护模式下中断 系统的 中断过程 保 护 模 式 下 为 每 一 个 中断 和 异 常 都 分 配 了一个唯一 的识别码 ,称 为中断类 型码 ,微 处理器 用分配给 每个异常 或者 中断的类型码 作 为 访 问 中断 描 述 符 表 ( I 【 r r ) 的 索 引 , 以确 定 中断 或 异 常 处理 程 序 的首 地 址 所 在 的表 项 。 保 护 模 式下 ,仍 然 根 据 2 5 6 个 中 断类 型 码 ,从 中断描述 符表 I D T 和全 局描述 符表 G D T ( 或 局 部 描 述 符表 L D T ) 中经 两 级 查 找 后 ,形 成3 2 位 的 中 断 服 务 程 序 的 首 地 址 ,保 护 模 式 下 进入 中断服 务程 序 的过程 如 图1 所 示 , 以 中 断 类 型 码 乘 以8 作为访 问I D T 的偏 移 地 址 , 读取相应 的中断f q / 陷 阱 门描 述 符 ( 表项) , 门 描 述符给 出了1 6 位 的段 值 ( 选择符) 和 中断 服 务程序 的偏移 地址 ( 偏移 量) , 其 中3 2 位偏移
操作系统概念第七版10-12章课后题答案(中文版)
10.1 假设有一个文件系统,它里面的文件被删除后,当连接到该文件的链接依然存在时,文件的磁盘空间会再度被利用。
如果一个新的文件被创建在同一个存储区域或具有同样的绝对路径名,这会产生什么问题?如何才能避免这些问题?Answer:令旧的文件为F1,新文件为F2。
用户希望通过存在的链接进入F1,实际上将进入F2。
注意,使用的是文件F1的访问保护,而不是F2的。
这个问题可以通过确保所有被删除文件的链接也被删除来避免。
可以从几个方面来完成:a.保存一份文件所有链接的列表,删除文件时,删除每一个链接b.保留链接,当试图访问一个已删除文件时删除他们c.保存一个文件引用清单(或计数器),只有在文件所有链接或引用被删除后,删除该文件10.2 打开文件表被用以保持当前打开文件的信息,操作系统应该为每个用户保持一个单独的表吗?或者只是保持一个包含当前所有用户访问文件的引用的表?如果两个不同程序或用户访问同样的文件,在打开文件表中应包含单独的条目吗?Answer:保持一个中央的打开文件表,操作系统可以执行下列操作,否则不可执行:假设一个当前有一个或一个以上进程访问的文件。
如果该文件被删除,那么应该直到所有正在访问文件的进程关闭它时,它才能从磁盘上删除。
只要有正在访问文件的进程数目的集中核算,该检查就可以执行。
另一方面,如果两个进程正在访问该文件,则需要保持两个单独的状态来跟踪当前位置,其中部分文件正被两个进程访问。
这就要求操作系统为两个进程保持单独的条目。
10.3 一个提供强制锁,而非使用由用户决定的咨询锁的进程有何优点和缺点?Answer:在许多情况下,单独的程序可能愿意容忍同时访问一个文件,而不需要获得锁,从而确保文件的相互排斥。
其他程序结构也可以确保相互排斥,如内存锁;或其他同步的形式。
在这种情况下,强制锁将限制访问文件的灵活性,也可能增加与访问文件相关的开销。
10.4 在文件的属性中记录下创建程序的名字,其优点和缺点是什么?(在Macintosh操作系统中就是这样做的)Answer:记录下创建程序的名字,操作系统能够实现基于此信息的功能(如文件被访问时的程序自动调用)。
《x86汇编语言:从实模式到保护模式》勘误表
1,第42页,检测点4.2,第1题。
本程序有误,正确的内容是:(由网易邮箱读者'小小鸟'、QQ读者'闪耀'、'流星梦'和'二玉'发现)mov ax,0xb800mov ds,axmov byte [0x00],'a'mov byte [0x02],'s'mov byte [0x04],'m'jmp $times 510-($-$$) db 0db 0x55,0xaa2,第52页,第24行,正确的内容是:(由QQ读者'闪耀'发现)mov ax,[0x02] ;按字操作3,第53页,第4行,正确的内容是:(由QQ读者'tome'发现)mov [0x02],bl4,第65、80、94、129、138页中,需要更正和明确loop指令、短转移指令jmp short、相对近转移指令jmp near和相对近调用指令call near的操作数计算方法和执行过程。
(由网易邮箱读者'小小鸟'、QQ读者'艾小羊'提出)首先,这些指令的操作数都是相对于目标位置处的偏移量。
但需要指出的是,偏移量的计算方法取决于实际的编译器,书中所说的“用目标位置处的汇编地址减去当前指令的汇编地址,再减去当前指令的长度”,不应算错。
其次,处理器的执行过程严格地说,是非IA-32架构的组成部分。
因此,除了结果是确定的,各步骤的先后次序取决于处理器的设计。
历史上,指令的执行过程有不同的解释和说法。
但本书对这些指令执行过程的解释比较模糊和武断。
为严谨起见,再统一描述如下:在以上指令的编译阶段,编译器用目标位置处的汇编地址减去当前指令的下一条指令的汇编地址,结果做为操作数;处理器在执行一条指令时,指令指针寄存器IP会自动指向下一条指令。
因此,当以上指令执行时,IP的内容就是下一条指令的偏移地址。
x86汇编语言:从实模式到保护模式笔记(二)
x86汇编语⾔:从实模式到保护模式笔记(⼆)1.我们都知道,8086可以访问1MB内存,其中,0xF0000~9FFFF属于常规内存,由内存条提供;0xF0000~0xFFFFF由主板上的⼀个芯⽚提供,即ROM-BIOS。
这样⼀来,中间还有⼀个320KB的空间,即0xA0000~0xEFFFF。
传统上,这段地址空间由特定的外围设备来提供,其中就包括显卡。
因为显⽰功能对于现代计算机来说实在太重要了。
2.由于历史原因,所有在个⼈计算机上使⽤的显卡,在加电⾃检之后都会把⾃⼰初始化到80*25的⽂本格式。
在这种模式下,屏幕上可以显⽰25⾏,每⾏80个字符(⼀个字符两个字节组成)。
每屏总共2000个字符(4000字节)。
3.⼀直以来,0xB8000~0xBFFFF这段物理地址空间,是留给显卡的。
tip:不允许将⽴即数传送到段寄存器。
4.屏幕上的每个字节对应着显存中的两个连续字节,前⼀个是字符的ASCLL代码,后⾯是字符的显⽰属性,包括字符颜⾊(前景⾊)和底⾊(背景⾊)。
字符的显⽰属性(1字节)分为两部分,低4位定义的是前景⾊,⾼4位定义的是背景⾊。
格式:K R G B + I R B G(K是闪烁位,为0时不闪烁,为1时闪烁;I是亮度位,为0时正常,为1时⾼亮)RGB:(000⿊;001蓝;010绿;011青;100红;101品红;110棕;111⽩)tip:mov指令的⽬的操作数不允许为⽴即数,⽽且,⽬的操作数和源操作数不允许同时为内存单元。
5.在源程序的编译阶段,编译器会把源程序整体上作为⼀个独⽴的段来处理,并从0开始计算和跟踪每⼀条指令的地址。
因为该地址是在编译期间计算的,故称汇编地址。
汇编地址是在源程序编译期间,编译器为每条指令确定的汇编位置,指⽰该指令相对于程序或者段起始处的距离,以字节计。
当编译后的程序装⼊物理内存后,它⼜是该指令在内存段内的偏移地址。
6.在NASM汇编语⾔中,每条指令的前⾯都可以拥有⼀个标号,以代表和指⽰指令所在的汇编地址。
计算机网络安全试题及答案
计算机网络安全试题及答案(1)一、单项选择题1、当你感觉到你的Win2000运行速度明显减慢,当你打开任务管理器后发现CPU的使用率达到了百分之百,你最有可能认为你受到了哪一种攻击。
BA、特洛伊木马B、拒绝服务C、欺骗D、中间人攻击2、RC4是由RIVEST在1987年开发的,是一种流式的密文,就是实时的把信息加密成一个整体,它在美国一般密钥长度是128位,因为受到美国出口法的限制,向外出口时限制到多少位? CA、64位B、56位C、40位D、32位3、假如你向一台远程主机发送特定的数据包,却不想远程主机响应你的数据包。
这时你使用哪一种类型的进攻手段? BA、缓冲区溢出B、地址欺骗C、拒绝服务D、暴力攻击4、小李在使用super scan对目标网络进行扫描时发现,某一个主机开放了25和110端口,此主机最有可能是什么? BA、文件服务器B、邮件服务器C、WEB服务器D、DNS服务器5、你想发现到达目标网络需要经过哪些路由器,你应该使用什么命令? CA、pingB、nslookupC、tracertD、ipconfig6、以下关于VPN的说法中的哪一项是正确的? CA、VPN是虚拟专用网的简称,它只能只好ISP维护和实施B、VPN是只能在第二层数据链路层上实现加密C、IPSEC是也是VPN的一种D、VPN使用通道技术加密,但没有身份验证功能7、下列哪项不属于window2000的安全组件? DA、访问控制B、强制登陆C、审计D、自动安全更新8、以下哪个不是属于window2000的漏洞? DA、UnicodeB、IIS hackerC、输入法漏洞D、单用户登陆9、你是一企业网络管理员,你使用的防火墙在UNIX下的IPTABLES,你现在需要通过对防火墙的配置不允许192.168.0.2这台主机登陆到你的服务器,你应该怎么设置防火墙规则? BA、iptables—A input—p tcp—s 192.168.0.2—source—port 23—j DENYB、iptables—A input—p tcp—s 192.168.0.2—destination—port 23—j DENYC、iptables—A input—p tcp—d 192.168.0.2—source—port 23—j DENYD、iptables—A input—p tcp—d 192.168.0.2—destination—port 23—j DENY10、你的window2000开启了远程登陆telnet,但你发现你的window98和unix计算机没有办法远程登陆,只有win2000的系统才能远程登陆,你应该怎么办? DA、重设防火墙规则B、检查入侵检测系统C、运用杀毒软件,查杀病毒D、将NTLM的值改为011、你所使用的系统为win2000,所有的分区均是NTFS的分区,C区的权限为everyone读取和运行,D区的权限为everyone完全控制,现在你将一名为test的文件夹,由C区移动到D区之后,test文件夹的权限为? BA、everyone读取和运行B、everyone完全控制C、everyone读取、运行、写入D、以上都不对12、你所使用的系统为UNIX,你通过umask命令求出当前用户的umask值为0023,请问该用户在新建一文件夹,具体有什么样的权限? AA、当前用户读、写和执行,当前组读取和执行,其它用户和组只读B、当前用户读、写,当前组读取,其它用户和组不能访问C、当前用户读、写,当前组读取和执行,其它用户和组只读D、当前用户读、写和执行,当前组读取和写入,其它用户和组只读13、作为一个管理员,把系统资源分为三个级别是有必要的,以下关于级别1的说法正确的是? AA、对于那些运行至关重要的系统,如电子商务公司的用户帐号数据库B、对于那些必须的但对于日常工作不是至关重要的系统C、本地电脑即级别1D、以上说法均不正确14、以下关于window NT 4.0的服务包的说法正确的是? CA、sp5包含了sp6的所有内容B、sp6包含了sp5的所有内容C、sp6不包含sp5的某些内容D、sp6不包含sp4的某些内容15、你有一个共享文件夹,你将它的NTFS权限设置为sam用户可以修改,共享权限设置为sam用户可以读取,当sam从网络访问这个共享文件夹的时候,他有什么样的权限? AA、读取B、写入C、修改D、完全控制16、SSL安全套接字协议所使用的端口是: BA、80B、443C、1433D、338917、Window2000域或默认的身份验证协议是: BA、HTMLB、Kerberos V5C、TCP/IPD、Apptalk18、在Linux下umask的八进制模式位6代表: CA、拒绝访问B、写入C、读取和写入D、读取、写入和执行19、你是一个公司的网络管理员,你经常在远程不同的地点管理你的网络(如家里),你公司使用win2000操作系统,你为了方便远程管理,在一台服务器上安装并启用了终端服务。
实模式与保护模式
实模式与保护模式1. 实模式,⼜叫实地址模式,CPU完全按照8086的实际寻址⽅法访问从00000h--FFFFFh(1MB⼤⼩)的地址范围的内存,在这种模式下,CPU只能做单任务运⾏;寻址公式为:物理地址=左移4位的段地址+偏移地址,即:物理地址是由16位的段地址和16位的段内偏移地址组成的。
2.保护模式,⼜叫内存保护模式,寻址采⽤32位段和偏移量,最⼤寻址空间4GB,在这种模式下,系统运⾏于多任务,设计这种模式的原因和好处是:保护模式增加了寻址空间,增加了对多任务的⽀持,增加了段页式寻址机制的内存管理(分段机制使得段具有访问权限和特权级,各应⽤程序和操作系统的代码和核⼼是被保护的,这也是多任务⽀持的实现关键和保护这个名字的由来)。
寻址过程为:物理地址=由段地址查询全局描述符表中给出的段基址+偏移地址,即:物理地址由影像寄存器中的基址加上16位或者32位的偏移组成。
==============================================1:实模式是CPU启动的时候的模式这时候就相当于⼀个速度超快的8086不能使⽤多线程不能实现权限分级还不能访问20位以上地址线,也就是说只能访问1M内存()2:保护模式操作系统接管CPU后.会使CPU进⼊保护模式.这时候可以发挥80x86的所有威⼒..包括权限分级.内存分页.等等等等各种功能============================================1.虚拟8086模式是运⾏在保护模式中的实模式,为了在32位保护模式下执⾏纯16位程序。
它不是⼀个真正的CPU模式,还属于保护模式。
2.保护模式同实模式的根本区别是进程内存受保护与否。
可寻址空间的区别只是这⼀原因的果。
实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和⽤户程序没有区别对待,⽽且每⼀个指针都是指向"实在"的物理地址。
ASM:《X86汇编语言-从实模式到保护模式》第14章:保护模式下的特权保护和任务概述
ASM:《X86汇编语⾔-从实模式到保护模式》第14章:保护模式下的特权保护和任务概述★PART1:32位保护模式下任务的隔离和特权级保护 这⼀章是全书的重点之⼀,这⼀张必须要理解特权级(包括CPL,RPL和DPL的含义)是什么,调⽤门的使⽤,还有LDT和TSS的⼯作原理(15章着重讲TSS如何进⾏任务切换)。
1. 任务,任务的LDT和TSS 程序是记录在载体上的指令和数据,其正在执⾏的⼀个副本,叫做任务(Task)。
如果⼀个程序有多个副本正在内存中运⾏,那么他对应多个任务,每⼀个副本都是⼀个任务。
为了有效地在任务之间进⾏隔离,处理器建议每个任务都应该具有他⾃⼰的描述符表,称为局部描述符表LDT(Local Descriptor Table)。
LDT和GDT⼀样也是⽤来储存描述符的,但是LDT是只属于某个任务的。
每个任务是有的段,都应该在LDT中进⾏描述,和GDT不同的是,LDT的0位也是有效的,也可以使⽤。
LDT可以有很多个(有多少个任务就有多少个LDT),处理器使⽤局部描述符寄存器(LDT Register: LDTR)。
在⼀个多任务的系统中,会有很多任务在轮流执⾏,正在执⾏中的那个任务,称为当前任务(Current Task)。
因为LDTR只有⼀个,所以他⽤于指向当前任务的LDT,当发⽣任务切换(会在15章讲),LDTR会被⾃动更新成新的任务的LDT,和GDTR⼀样,LDTR包含了32位线性基地址字段和16位段界限。
以指⽰当前LDT的位置和⼤⼩。
如果要访问LDT中的⼀个描述符,和访问GDT的时候是差不多的,也是要向段寄存器传输⼀个16位的段选择⼦,只是和指向GDT的选择⼦不同,指向LDT的选择⼦的TI位是1。
因为索引号只能是13位的,所以每个LDT所能容纳的描述符个数为213,也就是8192个。
⼜因为每个描述符是8个字节,所以LDT最⼤长度是64KB。
同时,为了保存任务的状态,并且在下次重新执⾏的时候恢复他们,每个任务都应该⽤⼀个额外的内存区域保存相关信息,这就叫做任务状态段(Task State Segment: TSS)。
实模式和保护模式的区别
实模式和保护模式的区别实模式和保护模式的区别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.保护模式同实模式的根本区别是进程内存受保护与否。
可寻址空间的区别只是这一原因的果。
实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。
这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。
为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。
这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。
至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的虚拟地址范围内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行库。
计算机病毒与反病毒技术 课后习题答案
注:12.19更新第三章第2题、第5题的感染机制答案《计算机病毒》复习思考题第一章计算机病毒概述1. 简述计算机病毒的定义和特征。
计算机病毒(Computer Virus),是一种人为制造的、能够进行自我复制的、具有对计算机资源进行破坏作用的一组程序或指令集合。
计算机病毒的可执行性(程序性)、传染性、非授权性、隐蔽性、潜伏性、可触发性、破坏性、攻击的主动性、针对性、衍生性、寄生性(依附性)、不可预见性、诱惑欺骗性、持久性。
2. 计算机病毒有哪些分类方法?根据每种分类方法,试举出一到两个病毒。
3. 为什么同一个病毒会有多个不同的名称?如何通过病毒的名称识别病毒的类型?国际上对病毒命名的一般惯例为“前缀+病毒名+后缀”,即三元组命名规则。
1、系统病毒系统病毒的前缀为:Win32、PE、Win95、W32、W95等。
2、蠕虫病毒蠕虫病毒的前缀是:Worm。
3、木马病毒、黑客病毒木马病毒其前缀是:Trojan,黑客病毒前缀名一般为Hack 。
4、脚本病毒脚本病毒的前缀是:Script。
5、宏病毒其实宏病毒是也是脚本病毒的一种,由于它的特殊性,因此在这里单独算成一类。
宏病毒的前缀是:Macro。
6、后门病毒后门病毒的前缀是:Backdoor。
7、病毒种植程序病毒后门病毒的前缀是:Dropper。
这类病毒的公有特性是运行时会从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。
8.破坏性程序病毒破坏性程序病毒的前缀是:Harm。
这类病毒的公有特性是本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒便会直接对用户计算机产生破坏。
9.玩笑病毒玩笑病毒的前缀是:Joke。
10.捆绑机病毒捆绑机病毒的前缀是:Binder。
4. 简述计算机病毒产生的背景。
5. 计算机病毒有哪些传播途径?传播途径有两种,一种是通过网络传播,一种是通过硬件设备传播(软盘、U盘、光盘、硬盘、存储卡等)。
网络传播,又分为因特网传播和局域网传播两种。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十二章模式转换——从实模式进入保护模式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%elseorg 07c00h%endif;告诉编译器加载到0100处生成,这样方便生成com文件。
;或者告诉编译器加载到7c00处生成,这样方便mov ax,cs;将当前段地址放入ax,可以不要mov ds,ax;将当前段地址放入数据寄存器,可以不要mov es,ax;将当前段地址放入extra寄存器,可以不要call DispStr;调用显示字符串程序jmp $;无限循环(跳转到当前地址)DispStr:mov ax,BootMessage ;BootMessage的首地址送axmov bp,ax; 段内地址送到bp,至此地址完成——CS:BP = 串地址mov cx,16; CX = 串长度mov ax,01301h; AH = 13,AL = 01hmov 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个字节。
(引导扇区的结束标志)显示界面运行程序界面如图12-1所示。
图12-1 运行程序界面12.1.2 实验补充资料一. 内存引导地址7C00Intel公司当初设计8086系统内存时对内存(1M)是这样规定的:内存包括暂驻程序区640K和系统内存区384K,在640K中把BIOS和驻留操作系统的数据和程序安排在低地址处,在保留一定的可扩展空间后,为配合BIOS和磁盘操作系统就把7C00规定为硬件及软件都支持的启动引导的内存地址,并写成引导规范。
在当时各个公司都有自己的一些未公开的标准,而IBM公开推行IBM计算机的内部详细的结构时,他采用的是Intel的芯片,所以他遵循了这个标准,又由于大批的公司知道了这个标准之后,都兼容这个标准,以后也继续兼容,就真正成为一个共同的标准了,现在的CPU都是向下兼容的,还在用7C00。
由于引导扇区被加载到了7c00h处,代码中BootMessage的首地址放入bp中时,只是将8位放入了bp,缺省了高8位,这高8位需要由org指定,否则无法将正确的字符串相对偏移地址放入bp中:BootMessage变量对应字符串在内存中首地址=0000(es段值):{7c00(org指定)+BootMessage在程序段内偏移(8位2进制)}org会在编译期影响到内存寻址指令的编译(编译器会把所有程序用到的段内偏移地址自动加上org 后跟的数值),而其自身并不会被编译成机器码。
就是为程序中所有的引用地址(需要计算的相对地址)增加一个段内偏移值。
二. 10h中断说明10h中断表示,功能号为AH=13h时为写入字符串;AL=01h表示字符串包含属性;BH=页数;BL=显示属性;CX=字符串中的字符数量;DL,DH=从哪一列,行开始写;ES:BP 指向该字符串12.1.3 实验21 ——反编译通过反编译,可以将程序返回至源代码内容反编译方法:ndisasmw -o 0x7c00 >> 1.asm显示1.asm内容如下:00007C00 8CC8 mov ax,cs00007C02 8ED8 mov ds,ax00007C04 8EC0 mov es,ax00007C06 E80200 call 0x7c0b00007C09 EBFE jmp short 0x7c0900007C0B B81E01 mov ax,0x11e00007C0E 89C5 mov bp,ax00007C10 B91000 mov cx,0x1000007C13 B80113 mov ax,0x130100007C16 BB0C00 mov bx,0xc00007C19 B200 mov dl,0x000007C1B CD10 int 0x1000007C1D C3 ret以下为数据区00007C1E 48 H00007C1F 65 e00007C20 6C l00007C21 6C l00007C22 6F o00007C23 2C ,00007C24 20 空格00007C25 4F O00007C26 53 S00007C27 20 空格00007C28 77 w00007C29 6F 000007C2A 72 r00007C2B 6C l00007C2C 64 d00007C2D 21 !以下数据为000007C2E 00 无……00007DFC 00 无00007DFD 00 无00007DFE 55AA 55AA12.2 保护模式12.2.1 保护模式介绍保护模式(Protected Mode,或有时简写为pmode)是一种80286系列和之后的x86兼容CPU操作模式。
保护模式有一些新的特色,设计用来增强多工和系统稳定度,像是内存保护,分页系统,以及硬件支援的虚拟内存。
大部分的现今x86操作系统都在保护模式下运行,包含Linux、FreeBSD、以及微软Windows 2.0 和之后版本。
PM是处理器的native模式,在这种模式下,处理器支持所有的指令和所有的体系结构特性提供最高的性能和兼容性。
对于所有的应用程序和操作系统来说,建议都使用这种模式。
另外一种286和其之后CPU的操作模式是真实模式(Real Mode),一种向前兼容且关闭这些特色的模式。
设计用来让新的芯片可以执行旧的软件。
依照设计的规格,所有的x86 CPU都是在真实模式下开机来确保传统操作系统的向前兼容性。
在任何保护模式的特色可用前,他们必须要由某些程序手动地切换到保护模式。
在现今的电脑,这种切换通常是由操作系统在开机时候必须完成的第一件工作的其中内容之一。
为了保证PM的兼容性,处理器允许在受保护的,多任务的环境下执行RM程序。
这个特性被称做虚拟8086模式(Virtual -8086 Mode),尽管它并不是一个真正的处理器模式。
Virtual-8086模式实际上是一个PM的属性,任何任务都可以使用它。
它也可能当CPU在保护模式下运行时,使用虚拟86模式来执行设计给真实模式的程序码。
RM提供了Intel 8086处理器的编程环境,另外有一些扩展(比如切换到PM或SMM 的能力)。
当主机被Power-up或Reset后,处理器处于RM下。
对于Intel 80386以及其后的芯片,只有使用PM才能发挥作用。
因此需要解决从RM切换到PM的问题。
12.2.2 GDT(Global Descriptor Table)在保护模式下,一个重要的数据结构就是GDT。
在实模式下,我们对一个内存地址的访问是通过(Segment:Offset)的方式来进行的。
其中Segment是一个段的基地址,而一个段的最大长度是64 KB(2^16),这是16位系统所能表示的最大长度。
而Offset则是相对于该段基地址的偏移量。
因此Base Address+Offset 就是一个内存绝对地址。
由此,我们可以看出,一个段具备两个因素:Base Address和Limit (段的最大长度),而对一个内存地址的访问,则是需要指出:使用哪个段?以及相对于这个段Base Address的Offset(这个Offset应该小于此段的Limit)。
当然对于16-bit系统,Limit 不要指定,默认为最大长度64KB,而16-bit的Offset也永远不可能大于此Limit。
我们在实际编程的时候,使用16-bit段寄存器CS(Code Segment),DS(Data Segment),SS(Stack Segment)来指定Segment,CPU将段寄存器中的数值向左偏移4-bit,放到20-bit的地址线上就成为20-bit的Base Address。
(因此内存为2^20,不会超过1M)到了保护模式,内存的管理模式分为两种,段模式和页模式,其中页模式也是基于段模式的。
也就是说,保护模式的内存管理模式事实上是:纯段模式和段页式。
进一步说,段模式必不可少。
对于段模式来讲,访问一个内存地址仍然使用Segment:Offset的方式,其中由于保护模式运行在32位系统上,那么Segment的两个因素:Base Address和Limit也都应该是32位的。
IA-32允许将一个段的Base Address设为32-bit所能表示的任何值(Limit则可以被设为32-bit所能表示的,以2^12为倍数的任何数字。
而不象Real Mode下,一个段的Base Address只能是16的倍数(因为其低4-bit是通过左移运算得来的,只能为0,从而达到使用16-bit段寄存器表示20-bit Base Address的目的),而一个段的Limit只能为固定值64 KB。
)另外,Protected Mode又为段模式提供了保护机制,也就说一个段的描述符需要规定对自身的访问权限(Access)。
所以在Protected Mode下,对一个段的描述则包括3方面因素:[Base Address, Limit, Access],它们加在一起被放在一个64-bit长的数据结构中,被称为段描述符。
这样如果直接通过一个64-bit段描述符来引用一个段的时候,就必须使用一个64-bit长的段寄存器装入这个段描述符。
但Intel为了保持向后兼容,将段寄存器仍然规定为16-bit(尽管每个段寄存器事实上有一个64-bit长的不可见部分,但对于程序员来说,段寄存器就是16-bit的),那么很明显,无法通过16-bit长度的段寄存器来直接引用64-bit的段描述符。
解决的方法就是把这些长度为64-bit的段描述符放入一个数组中,而将段寄存器中的值作为下标索引来间接引用(事实上,是将段寄存器中的高13 -bit的内容作为索引)。