---- 整理自狄泰软件唐佐林老师课程
文章目录
- 1. 什么是局部段描述符表(LDT)
- 1.1 局部段描述符选择子
- 1.2 局部段描述符表LDT
- 1.3 问题
- 1.4 LDT的定义和使用
- 2. 编程实验:使用LDT实现新功能
- 3. 多任务程序设计的实现思路
- 4. 待解决的问题:
- 5. 小结
1. 什么是局部段描述符表(LDT)
- 本质是一个段描述符表,用于定义段描述符
- 与GDT类似,可以看作 “段描述符的数组”
- 通过定义选择子访问局部段描述符表中的元素
1.1 局部段描述符选择子
1.2 局部段描述符表LDT
- 注意事项:
- 局部段描述符表 需要在全局描述符表中注册(增加描述项)
- 通过对应的选择子加载局部段描述符( lldt )
- 局部段描述符表从 第0项 开始使用
1.3 问题
- LDT具体用来干什么?
- 为什么还需要一个 “额外的” 段描述符表 ?
- LDT的意义:
- 代码层面 的意义:
- 分级管理功能相同意义不同的段(如:多个代码段)
- 系统层面 的意义:
- 实现多任务的基础要素(每个任务对应一系列不同的段)
- 代码层面 的意义:
1.4 LDT的定义和使用
- 定义独立功能相关的段(代码段、数据段、栈段)
- 将目标段描述符组成局部段描述符表(LDT)
- 为各个段描述符定义选择子(SA_TIL)
- 在GDT中定义LDT的段描述符,并定义选择子
2. 编程实验:使用LDT实现新功能
【参看链接】:14 - 局部段描述符表 / 14
3. 多任务程序设计的实现思路
4. 待解决的问题:
- 保护模式下的不同段之间如何进行代码复用?
(如:调用一个函数?例如上述实验中的字符串打印,是通过定义两个相同函数体实现的,怎么进行代码复用?)
5. 小结
- 局部段描述表用于组织功能相关的段
- 局部段描述符表需要加载后才能正常使用(lldt)
- 局部段描述符表必须在全局描述符表中注册
- 通过局部段描述符表的选择子对其进行访问
- 局部段描述符表是实现多任务的基础