`
Tveiker
  • 浏览: 54803 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

保护模式--段式存储

阅读更多
我们都知道,现在我们用计算机时操作系统都傲游在她的保护模式上,而一开始计算机是运行在保护模式上的。那么之间是如何转换得呢?

首先温习一下实模式下的物理地址和寄存器代表得(逻辑地址)之间得关系
物理地址=段值*16+偏移地址。

但是在保护模式下(段式管理),寄存器中得值并不是物理地址得段值,而是段值得索引。这个索引指向一个数据结构得一个表项。
这个数据结构就是GDT(Global Descriptor Table) LDT(Local Descriptor Table) 以及 IDT(Interrput Descriptor Table),这结构中得表项就是Descriptor描述符。

首先看下段的描述符结构


从上面得结构看起来,这个结构在内存中被安排得非常杂乱。所以我们需要一个函数或是宏来合理安排,由于用得很频繁且代码不长,考虑效率所以选择宏定义。nasm宏:
;宏描述符  
;usage:  Descriptor Base,Limit,Attr  
;        Base  %1 :  dd   双字(基址有32位)  
;        Limit %2 :  dd   双字,但是只有低20位有效,段界限只有20位  
;        Attr  %3 :  dw   字,高字节得低四位永远是0(在赋值时注意),因为它描述的在段界限中。即与属性相关得只有12位  
所以该宏得具体做法如下。  
%macro  Descriptor 3  
        dw  %2 & 0ffffh                      ;段界限(15..0)  
        dw  %1 & 0ffffh                      ;段基址(15..0)  
        db  (%1>>16) & 0ffh                  ;段基址(23..16)  
        dw  ((%2>>8) & 0f00h)|(%3 & 0f0ffh)  ;段界限(19..16) + 属性(这里好好分析,如果没搞明白就分成两个字节分别赋值,这样更直白)  
        db  (%1>>24) & 0ffh                  ;段基址(31..24)  
%endmacro  ;以上共8个字节。 

既然现在结构已经被管理好了(即现在用得时候很直观就能给其赋值了),那么他们具体怎么和CS,ds等实模式下段寄存器相关联的呢?

此时通过段的选择子来实现保护模式下寻址。此时CS,DS等


下面介绍选择子结构(其共有16位)它就是保护模式下段寄存器中的内容


其中TI是引用描述中得表示位。TI=1时表示从LDT中读取描述符。TI=0则表示从GDT中读取描述符。
RPL则是表示请求特权级。用于特权检查。其用法如下:每当一个程序访问一个段时,要把当前特权级与所访问段的特权级进行检查,以确定该程序是否允许访问该段。

现在我觉得我们应该详细了解下GDT中每个位的含义了:

首先对于基址,和段界限我觉得没什么可说得,这两者就确定一段物理地址范围。
所以主要解说下GDT属性。
对于BYTE5


1、P位称为存在位,P=1表示描述符对地址的转换有效的,即该段地址在内存中。P=0则表示段在内存中不存在
2、DPL是该描述符得特权级(Decriptor Privilege Level),特权级可以是0 ,1 , 2 ,3。数字越小特权越大。
3、S位指明描述符是代码段/数据段(S=1)还是系统段/门描述(S=0).
4、至于TYPE[3..0](当S=1时)
    1)、TYPE[0]表示该描述符是否被访问过,用A(Accessed)表示。A=1表示被访问过,A=0未被访问。当把描述符相应得选择子装入段寄存器时A=1。
2)、TYPE[3]表示该段是数据段还是代码段,用E表示。E=0表示为数据段,则数据可读,不可执行,E=1时表示为代码段,则数据可执行,不可写。
3)、当E=0时,即该描述符指的是数据段,所以数据可读,此时TYPE[1]表示数据是否可写用W表示。W=1表示可写,否则不可写。TYPE[2]表示数据段扩展方向ED表示,ED=1表示向下扩展,否则向上扩展。
4)、E=1是,表明该描述符指代码段,所以数据可执行。此时TYPE[1]用R标记表示代码是否可读,R=1则可读,否则不可读。TYPE[2]用C表示,指明代码是否一致代码段,C=0表示不是一致代码段(普通代码段),C=1表示是一致代码段。

下面综合归纳一下TYPE属性



看到这里,一定很迷惑这个“一致”是什么意思:它的意思是当转移的目标是一个特权级更高得一致代码段,当前特权会被延续下去,而向特权级更高得非一致性代码段转移就会引起常规得特权保护,无论是不是一致性代码,如果目标代码特权级低都不能通过jmp call转移进去。
   总之通过call 和 jmp转移遵循规则


好了BYTE5就这样了
下面讲下BYTE6中得属性了


1、G就是段的界限粒度(Granularity)。G=0表示段界限粒度是字节;G=1表示段界限粒度4K字节。段的界限粒度只对段界限有效,对基址无效(一直以字节位单位)
  2、D/B大致分为以下三种情况
     1)、在可执行代码段中此位D。D=1时,在默认情况下指令使用32位地址及32位或8位操作数。D=0时默认指令使用16位地址和16位或8位操作数。
2)、在向下扩展数据段中,此位B。B=1,段得上部界限4GB,B=0段得上部界限64KB
3)、在描述堆栈段时,此位B,B=1隐式堆栈访问指令(PUSH POP Call) 使用32位堆栈指针寄存器esp。当B=0时使用16位堆栈指针寄存器sp。
  3、AVL,是软件可利用位。80386对该位未作规定。
  4、位5必须值为0,也许为以后处理器预留。
  • 大小: 17.4 KB
  • 大小: 22 KB
  • 大小: 8.1 KB
  • 大小: 3.2 KB
  • 大小: 38.8 KB
  • 大小: 24.8 KB
  • 大小: 4.6 KB
1
0
分享到:
评论

相关推荐

    asp.net知识库

    几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段...

    MySQL5.1参考手册官方简体中文版

    9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符...

    3GPP-23501-g10(中文版).pdf

    4.2.5 数据存储架构 35 3gpp 公司 邮政地址 3GPP 支持办公室地址 650 路德卢西亚-索菲亚-安提波利斯 Valbonne-法国 电话:+33 4 92 94 42 00 传真:+33 4 93 65 47 16 互联网 网址:http://www.3gpp.org 版权通知 ...

    基于ON NCV78247的汽车矩阵式大灯系统-电路方案

    (7):支持段式或者矩阵式开关。 (8):方案采用高性能ARM核心MCU,通过CAN接口实现与BCM通讯。 (9):BCM通过采集到Camera或者传感器数据后进行命令解析,从而实现远光、近光,雾灯,方向灯,昼行灯等功能切换和...

    rar压缩软件.rar

    RAR 是一个让你在命令行模式中管理压缩文件的控制台应用。RAR 提供压缩、加 密、数据恢复和许多其它此手册中描述的其它功能。 RAR 只支持 RAR 格式压缩文件,它默认有 .rar 扩展名。不支持ZIP 和其他格 式。即使...

    java源码包---java 源码 大量 实例

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    TCP-IP技术大全

    TCP/IP和Internet 8 2.1 一段历史 8 2.1.1 ARPANET 8 2.1.2 TCP/IP 9 2.1.3 国家科学基金会(NSF) 9 2.1.4 当今的Internet 12 2.2 RFC和标准化过程 12 2.2.1 获得RFC 13 2.2.2 RFC索引 13...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    3. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。常见的有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,...

    MySQL 5.1官方简体中文参考手册

    9.4.1. 结构式系统变量 9.5. 注释语法 9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符...

    stayaway-app:STAYAWAY COVID移动应用程序的官方存储库

    STAYAWAY COVID是一个项目,建立在分散式隐私保护邻近跟踪(DP ^ 3T)项目的基础上。 DP ^ 3T是在移动设备上使用Bluetooth Low Energy功能的COVID-19邻近跟踪的开放协议,可确保个人数据和计算完全保留在个人电话中...

    LTC3588 能量收集器SCH PCB开源-电路方案

    LTC3588集成了一个低损失全波桥式整流器和一个高效率降压型转换器,是一款专为高输出阻抗能源 (例如:压电换能器) 而优化的完整能量收集解决方案。该LTC3588 能量收集器不仅能收集压电能量,也能收集太阳能。其中有一...

    操作系统复习题(包含习题讲解)

    掌握分区、页式与请求页式、段式与虚拟段式的实现原理和地址变换。了解段页式存储管理技术,虚存中的置换算法。 第六章 文件系统 本章的学习目的是使学生掌握文件系统的基本概念和实现过程。要求掌握文件的逻辑结构...

    数据库架构设计.pdf

    公司的业务模式,实现业务流程、功能等 数据架构:实现数据共享、⼀致性、完整性、准确性 数据定义: 数据标准:如静态数据:元数据、业务对象;动态数据:订单等 数据概念模型:根据需求分析,进⾏综合分析,形成独...

    微机课后题目答案 答案

    在保护方式下,每个段寄存器还有一个对应的64位段描述符寄存器,段寄存器作为选择器存放选择符。在虚拟8086方式下,段寄存器的作用与8086相同。 26.试说明虚拟存储器的涵义,它与物理存储器有什么区别?80386虚拟...

    MySQL 5.1参考手册

    14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储引擎和事务 14.7. 插入存储引擎 14.8. 拔出存储引擎 14.9. 插件式存储器...

    计算机软件及应用数据库基础知识.pptx

    内模式:也称为存储模式或物理模式,是数据在数据库系统中的内部表示,即数据在数据库中存储的方式。一个数据库只有一个内模式。 计算机软件及应用数据库基础知识全文共33页,当前为第6页。 三级模式之间的关系 外...

    vc++ 开发实例源码包

    系统硬件信息、存储设备管理、鼠标及键盘、声音和视频、图形和图像、网络、数据库) 《远程控制编程技术》源代码 内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++...

Global site tag (gtag.js) - Google Analytics