参考资料:

  1.  http://blog.chinaunix.net/uid-20797642-id-2495244.html

  2.  http://www.techbulo.com/708.html

  3. 《Intel微处理器》

  4. http://blog.csdn.net/cbl709/article/details/7523951

  5. 操作系统类指令:http://blog.chinaunix.net/uid-49717-id-2392897.html

  6. http://blog.chinaunix.net/uid-24410388-id-34060.html

  7. Intel® 64 and IA-32 Architectures Software Developer Manuals

  这些不可见寄存器是入门OS原理的钥匙。主要有Cache、GDTR、LDTR、IDTR以及TR。它们工作在保护模式下。不可见的意思是程序不可见的意思。^_^

  1. Cache,即高速缓冲存储器,非1级缓存后2级缓冲。当一个新段号放入到段寄存器后,微处理器访问某一描述符表,并将描述符装入该段寄存器的程序不可见高速缓冲存储器,期且一直保存在此处。

  2. GDTR(global descriptor table register,全局描述符表寄存器):包含存放全局描述符表GDT的32位线性基地址和16位表长度值。由于描述符表的最大长度为64KB,所以每个表的界限为16位。当工作于保护模式时,全局描述符表地址和它的界限被装入到GDTR。在加电或复位后,默认基地址为0,默认长度为0xFFFF。在保护模式初始化过程中,必须给GDTR加载一个合法的值。指令LGDTSGDT分别用于加载和保存IDTR寄存器的内容。

  3. LDTR(local descriptor table register,局部描述符表寄存器):局部描述符表的位置是从全局描述符表中选择的(即,包含LDT表的段必须在GDT表中有一个段描述符项),为寻址局部描述符表,需建立了一个全局描述符,LDTR本身存了一个段选择子,通过段描述符确定其32位基地址和表长。为访问局部描述符表,将选择子装入LDTR,如同在段寄存器中装入选择子一样。这个选择子访问全局描述符表,并且将局部描述符表的基地址、界限和访问权限装入LDTR的高速缓冲存储区。指令LLDTSLDT分别用于加载和保存IDTR寄存器的内容。

  

图1 GDTR与LDTR的联系

  4. IDTR(interrupt descriptor table register,中断描述符寄存器):中断描述符寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。指令LIDTSIDT分别用于加载和保存IDTR寄存器的内容。加电后或复位后,基地址默认为0,长度默认为0xFFFF。在使用保护模式之前,必须初始化中断描述符表和IDTR。

  5. TR(task register,任务寄存器) 包含当前任务TSS段的16位段选择子、32位基地址、16位段长度和描述符属性值。它引用GDT表中的一个TSS类型的描述符。指令LTRSTR分别用于加载和保存TR寄存器的内容。当使用LTR指令把选择符加载进任务寄存器时,TSS描述符中的段基地址、段限长度以及描述符属性会被自动加载到任务寄存器中。任务通常就是过程或应用程序。过程或应用程序的描述符存储在全局描述符表中,因此可通过优先级控制它的访问。任务寄存器允许在约17us内完成上下文或任务的切换。任务切换机制使微处理器在足够短的时间内实现任务之间的切换,也使多任务系统以简单而有序的方式从一个任务切换到另一个任务。

  6. 当TI = 0时,表示段描述符在GDT中。

                        图2 段描述符在GDT中

  7. 当TI = 1时,表示段描述符在LDT中。

图3 段描述符在LDT中

Intel微处理器学习笔记(三) 不可见寄存器的更多相关文章

  1. Intel微处理器学习笔记(二) 三种模式

    三种模式:实模式.保护模式和平展模式. 实模式存储器(DOS存储器)位于00000H~FFFFFH,共1M空间(任何型号微处理器都支持). 保护模式存储器(Windows存储器)可位于整个保护存储系统 ...

  2. Intel微处理器学习笔记(五) 中断

    ▼ 中断是一个由硬件激发的过程,它中断当前正在执行的任何程序. ▼ 在Intel系列微处理器中,包括INTR和NMI(Non Maskable Interrupt)两个申请中断的引脚和一个响应INTR ...

  3. Intel微处理器学习笔记(四) 内存分页

    内存分页机制(memory paging mechanism)是从386开始的.线性地址通过分页机制透明转换为物理地址. 从这里知道:1. 如果不分页,则线性地址等于物理地址:2. 如果分页,则线性地 ...

  4. Intel微处理器学习笔记(一) 实模式内存结构

    图一 奔腾概念示意图 存储系统一般划分为三个主要部分:TPA(transient program area),System Area和XMS(extended memory system). 图二 内 ...

  5. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  6. DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析

    DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...

  7. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  8. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  9. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

随机推荐

  1. Redis日常使用随笔

    Redis常用配置:1.采用master与slave互为主从的方式,两条重要命令:redis 127.0.0.1:6379> SLAVEOF NO ONEredis 127.0.0.1:6379 ...

  2. python sys.path[0] 的解释

    sys.path是python的搜索模块的路径集,返回的结果是一个list path[0] 此列表的第一项,path[0],在程序启动时初始化,是包含用来调用Python解释器的脚本的目录.如果脚本目 ...

  3. python-计算器实现

    # 开发一个简单的python计算器# 实现加减乘除及括号优先级解析# 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * ...

  4. js实现轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. swoole线程和进程

    pstree -a | grep php |   |       `-php server.php   主进程      |   |           |-php server.php   管理线程 ...

  6. wcf 服务器无法处理请求由于内部错误

    The server was unable to process the request due to an internal error.  For more information about t ...

  7. apache源码安装

    1.apr和apr-util,下载地址: http://apr.apache.org/download.cgi yum install gcc yum install libtool yum inst ...

  8. Impala和Hive的关系(详解)

    Impala和Hive的关系  Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中.并且im ...

  9. JS多重判断 / ES6 includes

    Array.includes ()  判断数组是否包含某个元素 直接返回true或者false表示是否包含元素,对NaN一样能有有效 const arr = ['1', '2', 'a', 'b' , ...

  10. Node.js最新技术栈之Promise篇

    前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ...