1、现在内存管理系统都是基于页式管理的, 段式管理说白了可有可无, 那是Intel老古董阶段留下来的遗毒, 以至于Intel的硬件构架白白地复杂了. Linux kernel直接让段式管理透明.

2.全局描述符表GDT(Global Descriptor Table)在整个系统中,全局描述符表GDT只有一张(一个处理器对应一个GDT),GDT可以被放在内存的任何位置,但CPU必须知道GDT的入口,也就是基地址放在哪里,Intel的设计者门提供了一个寄存器GDTR用来存放GDT的入口地址,程序员将GDT设定在内存中某个位置之后,可以通过LGDT指令将GDT的入口地址装入此寄存器,从此以后,CPU就根据此寄存器中的内容作为GDT的入口来访问GDT了。GDTR中存放的是GDT在内存中的基地址和其表长界限。

基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。指令LGDT和SGDT分别用于加载和保存GDTR寄存器的内容。在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。在保护模式初始化过程中必须给GDTR加载一个新值。

3、局部描述符表LDT(Local Descriptor Table)局部描述符表可以有若干张,每个任务可以有一张。我们可以这样理解GDT和LDT:GDT为一级描述符表,LDT为二级描述符表。LDT和GDT从本质上说是相同的,只是LDT嵌套在GDT之中。LDTR记录局部描述符表的起始位置,与GDTR不同,LDTR的内容是一个段选择子。由于LDT本身同样是一段内存,也是一个段,所以它也有个描述符描述它,这个描述符就存储在GDT中,对应这个表述符也会有一个选择子,LDTR装载的就是这样一个选择子。LDTR可以在程序中随时改变,通过使用lldt指令

由于每个进程都有自己的一套程序段、数据段、堆栈段,有了局部描述符表则可以将每个进程的程序段、数据段、堆栈段封装在一起,只要改变LDTR就可以实现对不同进程的段进行访问。

当进行任务切换时,处理器会把新任务LDT的段选择符和段描述符自动地加载进LDTR中。在机器加电或处理器复位后,段选择符和基地址被默认地设置为0,而段长度被设置成0xFFFF。

除了GDTR、LDTR外还有IDTR和TR

(1)中断描述符表寄存器IDTR

与GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。

(2)任务寄存器TR

TR用于寻址一个特殊的任务状态段(Task State Segment,TSS)。TSS中包含着当前执行任务的重要信息。

TR寄存器用于存放当前任务TSS段的16位段选择符、32位基地址、16位段长度和描述符属性值。它引用GDT表中的一个TSS类型的描述符。指令LTR和STR分别用于加载和保存TR寄存器的段选择符部分。当使用LTR指令把选择符加载进任务寄存器时,TSS描述符中的段基地址、段限长度以及描述符属性会被自动加载到任务寄存器中。当执行任务切换时,处理器会把新任务的TSS的段选择符和段描述符自动加载进任务寄存器TR中。

GDT、LDT、IDTR、TR相关推荐

  1. GDT、GDTR、LDT、LDTR的学习

    GDT的由来: 在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table). 为什么要有GDT?我们首先考虑一下在Real Mode下的 ...

  2. 两张图看懂GDT、GDTR、LDT、LDTR的关系

    段选择器:32位汇编中16位段寄存器(CS.DS.ES.SS.FS.GS)中不再存放段基址,而 是段描述符在段描述符表中的索引值,D3-D15位是索引值,D0-D1位是优先级(RPL)用于特权检查,D ...

  3. GDT、GDTR、LDT、LDTR的理解

    GDT是全局描述附表,主要存放操作系统和各任务公用的描述符,如公用的数据和代码段描述符.各任务的TSS描述符和LDT描述符.(TSS是任务状态段,存放各个任务私有运行状态信息描述符) LDT是局部描述 ...

  4. GDT、GDTR、LDT、LDTR的理解 [zz]

    GDT是全局描述附表,主要存放操作系统和各任务公用的描述符,如公用的数据和代码段描述符.各任务的TSS描述符和LDT描述符.(TSS是任务状态段,存放各个任务私有运行状态信息描述符) LDT是局部描述 ...

  5. 个人对GDT、GDTR、LDT、LDTR的理解

    作者:lianxi1999        来源:http://hi.baidu.com/lianxi1999 GDT是全局描述附表,主要存放操作系统和各任务公用的描述符,如公用的数据和代码段描述符.各 ...

  6. 【2021.03.10】段描述符与段选择子、GDT、LDT

    要点回顾 前文提到,当写入一个段寄存器的时候,只给了一个16位的数值,但是段寄存器有96位. 那么剩下的80位从哪里来的?这个16位的数值是随便写的吗? Windbg指令 指令 功能 r 查看寄存器 ...

  7. [书]x86汇编语言:从实模式到保护模式 -- 第14章 任务和特权级保护,调用门、LDT、TSS、TCB

    # 加载用户程序 Part 1.TCB, Task Control Block, 任务控制块 分配内存作为该任务的TCB,并插入至TCB链表. Part 2.LDT, Locak Descriptor ...

  8. 带你了解GDT陶瓷气体放电管的类型、优势、特性以及工作原理

    GDT陶瓷气体放电管,主要应用于一些计算机数据系统.通讯信号端口.以及对雷击浪涌防护有需求的电子设备.那么,对于它的类型.优势.特性以及工作原理,你了解过吗?接下来,就由优恩半导体小编给大家简单介绍一 ...

  9. 四,中断:中断程序(汇编和C语言)、idt、IDTR、8259A、8253以及发生中断时候的压栈细节和特权级保护

    中断: 由于CPU获知了计算机中发生的某些事,CPU暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后,CPU继续执行刚才的程序,整个过程称为中断处理,也称为中断.没有中断,操作系统 ...

  10. Linux中断技术、门描述符、IDT(中断描述符表)、异常控制技术总结归类

    相关学习资料 <深入理解计算机系统(原书第2版)>.pdf http://zh.wikipedia.org/zh/%E4%B8%AD%E6%96%B7 独辟蹊径品内核:Linux内核源代码 ...

最新文章

  1. 在网页中动态的生成一个gif图片
  2. 【iCore4 双核心板_ARM】例程十七:USB_MSC实验——读/写U盘(大容量存储器)
  3. 优秀架构师养成记:我是如何逆袭走向“人生巅峰”的?
  4. C++中构造函数和析构函数的调用顺序
  5. C#通过Outlook发送邮件
  6. Redhat 打开防火墙某个端口
  7. drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明
  8. 4690s i5_秒杀i7?小恶魔i5-4690K对决i7-4770K
  9. whitelabel error page什么意思_什么是RESTful API?总算能说清楚了
  10. cad高程如何提取到cass软件_从CAD平面图中提取坐标生成数据表
  11. 三次技术转型,程序员的北漂奋斗史
  12. 中小企业IT建设的小看法2
  13. NFC Reader Tool 蓝牙NFC读写器使用教学
  14. alsa设置默认声卡
  15. 诺瓦科技2022数字IC设计提前批笔试
  16. A12 屏幕旋转流程
  17. 【收藏防丢】rar压缩包忘记密码怎么办?手把手教你轻松解决
  18. 《卓有成效的管理者(The Effective Executive)》读后感
  19. 计算机网络复习笔记 之协议相关
  20. pytorch第四课

热门文章

  1. 分布式配置中心-Disconf入门指南
  2. jQuery获取鼠标事件源(万能)
  3. 网站关键词编写方法,注意事项。
  4. 运维实用篇-查看IP和端口
  5. 运维监控软件 wgcloud 更新,v3.2.7 重构告警模块
  6. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编
  7. PHPMailer 报错:SMTP ERROR: Password command failed: 535 Login Fail
  8. 如何使用Navicat给表设置唯一索引
  9. mysql介绍索引类型的章节_MySQL索引类型介绍
  10. 脚本变量中包含空格的解决办法