Intel微处理器学习笔记(三) 不可见寄存器
参考资料:
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加载一个合法的值。指令LGDT和SGDT分别用于加载和保存IDTR寄存器的内容。
3. LDTR(local descriptor table register,局部描述符表寄存器):局部描述符表的位置是从全局描述符表中选择的(即,包含LDT表的段必须在GDT表中有一个段描述符项),为寻址局部描述符表,需建立了一个全局描述符,LDTR本身存了一个段选择子,通过段描述符确定其32位基地址和表长。为访问局部描述符表,将选择子装入LDTR,如同在段寄存器中装入选择子一样。这个选择子访问全局描述符表,并且将局部描述符表的基地址、界限和访问权限装入LDTR的高速缓冲存储区。指令LLDT和SLDT分别用于加载和保存IDTR寄存器的内容。

图1 GDTR与LDTR的联系
4. IDTR(interrupt descriptor table register,中断描述符寄存器):中断描述符寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。加电后或复位后,基地址默认为0,长度默认为0xFFFF。在使用保护模式之前,必须初始化中断描述符表和IDTR。
5. TR(task register,任务寄存器) 包含当前任务TSS段的16位段选择子、32位基地址、16位段长度和描述符属性值。它引用GDT表中的一个TSS类型的描述符。指令LTR和STR分别用于加载和保存TR寄存器的内容。当使用LTR指令把选择符加载进任务寄存器时,TSS描述符中的段基地址、段限长度以及描述符属性会被自动加载到任务寄存器中。任务通常就是过程或应用程序。过程或应用程序的描述符存储在全局描述符表中,因此可通过优先级控制它的访问。任务寄存器允许在约17us内完成上下文或任务的切换。任务切换机制使微处理器在足够短的时间内实现任务之间的切换,也使多任务系统以简单而有序的方式从一个任务切换到另一个任务。
6. 当TI = 0时,表示段描述符在GDT中。

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

图3 段描述符在LDT中
Intel微处理器学习笔记(三) 不可见寄存器的更多相关文章
- Intel微处理器学习笔记(二) 三种模式
三种模式:实模式.保护模式和平展模式. 实模式存储器(DOS存储器)位于00000H~FFFFFH,共1M空间(任何型号微处理器都支持). 保护模式存储器(Windows存储器)可位于整个保护存储系统 ...
- Intel微处理器学习笔记(五) 中断
▼ 中断是一个由硬件激发的过程,它中断当前正在执行的任何程序. ▼ 在Intel系列微处理器中,包括INTR和NMI(Non Maskable Interrupt)两个申请中断的引脚和一个响应INTR ...
- Intel微处理器学习笔记(四) 内存分页
内存分页机制(memory paging mechanism)是从386开始的.线性地址通过分页机制透明转换为物理地址. 从这里知道:1. 如果不分页,则线性地址等于物理地址:2. 如果分页,则线性地 ...
- Intel微处理器学习笔记(一) 实模式内存结构
图一 奔腾概念示意图 存储系统一般划分为三个主要部分:TPA(transient program area),System Area和XMS(extended memory system). 图二 内 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析
DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
随机推荐
- 计划任务cmd 清理文件
forfiles.exe /p D:\mysql-back /s /m * /d -30 /c "cmd /c del /q @path" #清理目录下创建大于30天所有类型的文件
- liferay中如何实现自己定义的方法
大家看到这篇文章是不是很开心啊,我感觉是很开心,我们终于可以按照自己的意愿来写一次代码,在liferay中一些基本的增删改查的代码是自动生成的,然而我们想要实现自己的方法的话,恐怕要费一点劲,你要知道 ...
- 010-centos上安装matlab
#001-下载matlab_R2015b和破解文件(四个)到百度云盘上下载7.6g#002-上传matlab大文件先安装vm tools,然后直接复制到虚拟机桌面#003-挂载matlab镜像并安装m ...
- mov指令
一.规定 1.立即数不能作为目的操作数,如mov 110H,AX 2.立即数不能直接传给段寄存器,如mov DS,110H 2.两个操作数不能同时为段寄存器,如mov ES,DS 3.两个操作数不能同 ...
- 总结《二》MFC中WinMain和CALLBACK
MFC中WinMain和回调函数CALLBACK 一,路线 1.一般普通窗口或控件建立调用的CWnd :: CreateEx函数 2.经过资源对话框创建的即不调用的CWnd ...
- yii2 restful api——app接口编程实例
<?php namespace common\components; use common\models\Cart; use common\models\User; use Yii; use y ...
- Storm消息可靠处理机制
在很多应用场景中,分布式系统的可靠性保障尤其重要.比如电商平台中,客户的购买请求需要可靠处理,不能因为节点故障等原因丢失请求:比如告警系统中,产生的核心告警必须及时完整的知会监控人员,不能因为网络故障 ...
- 最新版Intellij IDEA插件JRebel 7.0.7官方免费激活
本文转自:http://blog.csdn.net/u012283609/article/details/70213307 开场语 有时候真实比小说更加荒诞,因为虚构是在一定逻辑下进行的,而现实往往毫 ...
- win7 xampp 验证码,session出不来的问题
win7 xampp 验证码,session出不来的问题 需要在前面加上全路径,如:"\xampp\tmp" 变成"D:\xampp\tmp" Warning: ...
- SDOI2019Round1游记
SDOI2019Round1游记 Day 0 报道日,早晨五点睡的觉,一觉醒来已经一点半了,收拾收拾东西报道去了.因为没吃饭,坐着出租车晕车了,我让师傅把我放到历下大润发,我去金拱门吃了点饭才去的23 ...