相关疑难解决方法(0)

使用或不使用 IO 位图创建正确的任务状态段 (TSS) 结构?

阅读 Intel 和 AMD 之间的文档并查看代码有时会让人很难理解如何创建没有 IO 端口位图 (IOPB) 的正确任务状态段 (TSS)。使用 IOPB 创建 TSS 似乎也存在混淆,因为 IO 位图 (IOPB) 是否需要尾随字节似乎不明确0xff

我知道 TSS 和 TSS 描述符(在 GDT 中)之间存在依赖关系。TSS 描述符控制 TSS 的基地址以及限制。描述符中的限制比结构的实际大小小一(本质上类似于 GDT 和 IDT 记录中指定的大小)。TSS 限制用于确定 IOPB 大小。

我知道:

  • TSS描述符限制比整个TSS结构的大小小1
  • 16位TSS没有IOPB并且结构是固定大小的
  • 基本的32位和64位TSS结构大小相似(数据含义不同)
  • 32 位 TSS 可以通过向基本结构添加额外的 DWORD 来支持控制流强制。
  • TSS 中的 IOPB 偏移量(字)指向相对于任务段开头的偏移量。
  • IOPB 偏移量指向 IOPB 结构的开头,并且在启用虚拟模式增强 (VME)的情况下,IOPB 之前的 32 个字节是中断重定向表。
  • 如果未启用 VME,内核可以在基本 TSS 结构的末尾和 IOPB 偏移之间放置额外的每个任务实例数据
  • 如果启用了 VME,内核可以在基本 TSS 结构的末尾和 IOPB 以下 32 字节的偏移量之间放置额外的每个任务实例数据。
  • 如果存在 IOPB,则每个 0 位表示端口访问权限,1 位表示拒绝权限。 …

x86 x86-64 intel osdev amd-processor

3
推荐指数
1
解决办法
2284
查看次数

标签 统计

amd-processor ×1

intel ×1

osdev ×1

x86 ×1

x86-64 ×1