控制寄存器和系统地址寄存器

控制寄存器    crx

cr0   指示cpu工作方式的控制位  包含启用和禁止分页管理机制的控制位  包含控制浮点协处理器操作的控制位   注意必须为0的位
cr2和cr3   分页管理机制使用   
1.保护控制位
cr0中位0  pe表示  为0实模式   为1  保护模式
位31 pg表示 为0 禁用分页      为1启用分页管理机制
注意1.不存在   pe为0  且pg为1的情况   即   实模式下开启分页机制
2.改变pg位     只有当所执行的程序的代码和至少有一部分数据在线性地址空间和物理地址空间具有相同的地址的情况下   才能改变pg位的值
 
2.协处理器控制位  cr0中的位1-位4分别标记mp     em    ts    et   具体略
3.cr2和cr3
控制寄存器由分页管理机制使用
cr2用于发生页异常时报告出错信息   当发生页异常时    cpu把引起异常的线性地址保存到cr2中   
cr3用于保存页目录表的物理地址    目录为页对其齐 所以仅仅高20位是有效的   低12位保留不用  
mov重置cr3的值    会导致分页机制高速缓冲区的内容无效    用此方法  可以在启用分页机制之前   就把pg位置为之前   预先杀心分页机制的告诉缓存
实模式下可以设置cr3   即初始化分页机制    
任务切换  cr3要被改变   如果新任务中cr3的值与原任务中cr3的值相同(两个任务共享页表)  那么cpu不刷新分页高速缓存    以便当任务共享页表时有比较快的执行速度
 
二  系统地址寄存器
GDTR   LDTR    IDTR      TR
 全局描述符表gdt    ldt    和idt  等都是保护方式下非常重要的特殊段  包含有位段机制所用的重要表格    
cpu采用一些特殊的寄存器保存这些段的基地址和界限    称为系统地址寄存器
GDTR    48位长   其中32位为基地址    16位为界限
  由于gdt本身不能由在gdt表中的描述符来描述   所以cpu需要采用GDTR位gdt这一特殊的系统段提供一个伪描述符     

段界限以字节为单位    由于段选择子中只有13位作为索引    每个描述符长度为8个字节    所有用16位的界限够了。
通常对于含有N个描述符的描述符表的段界限设为8*N-1
结构类型定义  伪描述符
  PDESC STRUC
LIMIT DW 0 ;段界限 16位
    BASE  DD 0		;段基地址    GDT表的首地址  32位
PDESC ENDS
2.局部描述符表寄存器LDTR
此寄存器规定当前任务使用的局部描述符表ldt	
a 16位段寄存器和不可见的高速缓冲寄存器组成
b 每个任务的ldt作为系统的一个特殊的段   其描述符位于gdt中
c 初始化和任务切换时  将对应任务的ldt的描述符的选择子装入LDTR中
d 装入ldtr的选择子必须确定一个位于gdt中的类型为LDT的系统段描述符   也即选择子中的TI 位必须是0  而且描述符中的类型字段位LDT
技巧  :空选择子装入LDTR,表示当前任务没有LDT  ,装入到段寄存器的选择子都必须指示GDT中的描述符,也即当前任务涉及的段均有GDT中的描述符来描述。如果再把一个TI位为1的选择子(LDT)装入到段寄存器会引起异常。
3.中断描述符表寄存器IDTR
IDTR指向中断描述符表IDT IDTR长度为48位 其中32位的基地址规定IDT基地址,16位的界限规定IDT的段界限。由于386
仅仅支持256个中断或者异常 所以idt最大长度为2k 以字节为单位的界限为7ffh
4.任务状态段寄存器TR
此寄存器指示描述当前任务的任务状态段的描述符选择子 定义了状态段 同时也有高速缓冲寄存器 为程序员不可见
由硬件完成 选择子不能为空 必须索引位于GDT中的描述符 类型必须为tss

x86保护模式 控制寄存器和系统地址寄存器的更多相关文章

  1. X86控制寄存器和系统地址寄存器

    80386控制寄存器和系统地址寄存器如下表所示.它们用于控制工作方式,控制分段管理机制及分页管理机制的实施. 控制寄存器 CRx BIT31 BIT30—BIT12 BIT11—BIT5 BIT4 B ...

  2. x86 保护模式 十 分页管理机制

    x86   保护模式  十  分页管理机制 8.386开始支持分页管理机制 段机制实现虚拟地址到线性地址的转换,分页机制实现线性地址到物理地址的转换.如果不启用分页,那么线性就是物理地址 一  分页管 ...

  3. X86保护模式 八操作系统类指令

    X86保护模式  八操作系统类指令 通常在操作系统代码中使用,应用程序中不应用这些指令 指令分为三种:实模式指令,任何权级下使用的指令.实模式权级0下可执行的指令和仅在保护模式下执行的指令 一  实模 ...

  4. x86保护模式 任务状态段和控制门

    x86保护模式    任务状态段和控制门 每个任务都有一个任务状态段TSS     用于保存任务的有关信息     在任务内权变和任务切换时  需要用到这些信息    任务内权变的转移和任务切换  一 ...

  5. x86保护模式-七中断和异常

    x86保护模式-七中断和异常 386相比较之前的cpu   增强了中断处理能力   并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断     ...

  6. x86保护模式 实模式与保护模式切换实例

    x86保护模式     实模式与保护模式切换实例 实例一 逻辑功能   以十六进制数的形式显示从内存地址110000h开始的256个字节的值    实现步骤: 1  切换保护方式的准备 2. 切换到保 ...

  7. x86保护模式 二 分段管理机制

    分段管理机制 段选择子和偏移地址的二维虚拟地址转换为一维的线性地址 一  段定义和虚拟地址到线性地址的转换 三个参数定义段:段基地址    段界限  和段属性    同时也是段描述符的结构 段基地址为 ...

  8. x86保护模式-六 控制转移

    控制转移可以分为两大类  :同一任务内的控制转移    和   任务间的控制转移(任务切换) 同一个任务内的控制转移可以分为段内转移 .特权级不变的段间转移和特权级改变的段间转移 段内转移与实模式相同 ...

  9. CPU保护模式深入探秘

    原文链接为:http://www.chinaunix.net/old_jh/23/483510.html 保护方式的体系结构 主要问题:          保护方式的寄存器模型          保护 ...

随机推荐

  1. django-Haystack库

    本文参考自Haystack官方文档:https://django-haystack.readthedocs.io/en/master/tutorial.html#configuration 简介 Ha ...

  2. ps 进程管理

    一. 进程管理 1. pstree 2. ps 3. top 4. nice 5. free 6. screen 二. 程序与进程 程序是静态的文件,进程是动态运行的程序. 三. 进程和线程 一个程序 ...

  3. Linux下环境搭建(三)——jmeter+ant配置

    在linux环境下,使用jmeter做接口自动化,做好了前两步的准备工作后,怎能少了主角jmeter+ant了,今天就来说下jmeter+ant的配置方式. jmeter配置 jmeter下载地址:h ...

  4. OC 思维导向图

      iOS 扩展思维导向图,如下图所示:

  5. UIView和Masonry实现动画效果

    Masonry 实现动画效果如下: //button点击方法 - (void)clickedButton { static BOOL isMove; //默认是NO Weakify(weakSelf) ...

  6. MySQL从服务配置文件

    [mysql]port=3306socket=/var/lib/mysql/mysql.sockdefault-character-set = utf8mb4 [mysqld]server-id=2l ...

  7. leetcode 4.两个排序数组的中位数

    题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 你可以假设 nums1 和 nums ...

  8. softmax_loss.cu 和 softmax_loss.cpp源码

    #include <algorithm> #include <cfloat> #include <vector> #include "caffe/laye ...

  9. C05 C语言字符串和数组

    目录 数组 字符串 数组 概念 数组是有序数据的集合. 数组中的每一个元素属于同一个数据类型. 通过数组名和下标唯一确定数组中的元素. 一维数组的定义 语法格式 数据类型   数组名[常量表达式] 例 ...

  10. Java中的线程--多线程面试题

    到这里,基本上线程的并发中的知识点都是学到了,到了最后,还有三道面试题,从面试题中学习更加的加深一下,多线程中的知识点,如何在实际的问题中来解决多线程的问题,可以更好的从实际出发 一.面试题1 面试题 ...