当前位置: 首页 > news >正文

全局描述符表与进程有什么关系

在32位x86保护模式中,全局描述符表(GDT)是系统级别的数据结构,而进程(或任务)则有自己的局部描述符表(LDT)。它们之间的关系是:

GDT是全局的:整个系统只有一个GDT,由操作系统在启动时设置。它包含适用于所有进程的描述符,例如操作系统代码段和数据段,以及每个进程的TSS(任务状态段)和LDT描述符。

进程与LDT:每个进程可以有自己的LDT。LDT包含该进程私有的代码段和数据段描述符。这样,操作系统可以通过切换LDT来隔离不同进程的地址空间。

进程切换与GDT:当进行进程切换时,操作系统会更新当前任务的LDT选择子(在LDTR寄存器中),并可能切换TSS。GDT中的每个LDT描述符和TSS描述符都是为每个进程分配的,因此GDT中包含了所有进程的LDT和TSS的描述符。

内存保护:通过GDT和LDT,操作系统可以为每个进程提供独立的虚拟地址空间(分段机制)。每个进程的段选择子可以指向GDT中的全局描述符或自己LDT中的局部描述符。

平坦模型:在现代操作系统中,通常使用平坦内存模型,即所有段都映射到整个4GB线性地址空间,基址为0,界限为4GB。这样,分段机制实际上被绕过了,内存保护主要通过分页来实现。此时,GDT中的代码段和数据段描述符对每个进程都是一样的,进程的隔离通过分页(每个进程有自己的页表)实现。

联系总结:

GDT是系统全局的,包含所有进程共享的描述符以及每个进程的LDT和TSS的描述符。

每个进程有自己的LDT(可选),用于定义进程私有的内存段。

进程切换时,操作系统通过加载新的LDT选择子(指向GDT中该进程的LDT描述符)和TSS选择子来切换上下文。

因此,GDT与进程之间的联系在于:GDT提供了系统级别的段描述符,同时也为每个进程的LDT和TSS提供了入口,从而支持多任务环境下的内存保护和任务切换。

全局描述符表(GDT)与进程的关系是一个核心的系统设计问题。让我详细解释它们的联系和区别:

1.GDT的本质

  • 系统全局资源:整个系统只有一个GDT
  • 硬件要求:x86 CPU要求必须有一个GDT才能进入保护模式
  • 位置:由GDTR寄存器指向,包含段描述符的数组

2.GDT与进程的直接联系

A.进程标识符

; 每个进程在GDT中有两个关键条目: ; 1. TSS描述符 - 任务状态段(Task State Segment) ; 2. LDT描述符 - 局部描述符表(Local Descriptor Table) ; 进程切换时: mov ax, TSS_SELECTOR ; TSS选择子指向GDT中的TSS描述符 ltr ax ; 加载任务寄存器 mov ax, LDT_SELECTOR ; LDT选择子指向GDT中的LDT描述符 lldt ax ; 加载局部描述符表寄存器

B.任务门和任务切换

  • GDT中的任务门描述符用于任务切换
  • 每个进程对应一个TSS描述符(在GDT中)
  • 通过CALLJMP到任务门选择子触发任务切换

3.GDT与进程的间接联系

A.内核空间共享

GDT条目示例: 索引 类型 用途 0 Null 空描述符 1 Code 内核代码段(所有进程共享) 2 Data 内核数据段(所有进程共享) 3 Code 用户代码段(所有进程共享模板) 4 Data 用户数据段(所有进程共享模板) 5-7 预留 系统调用门等 8+ 进程相关 TSS、LDT等进程特定描述符

B.进程隔离机制

+------------------+ | GDT | <-- 系统全局 |------------------| | 内核段描述符 | 所有进程相同 | 用户段模板 | 所有进程相同(但权限不同) |------------------| | 进程A的TSS | \ | 进程A的LDT | | 每个进程不同 | 进程B的TSS | | | 进程B的LDT | / +------------------+ 每个进程的地址空间: 内核空间:通过GDT中的内核段访问(共享) 用户空间:通过各自的LDT或平坦模型访问(隔离)

4.现代操作系统中的实现

传统分段模型(如早期Linux)

// 每个进程在GDT中占两个槽structtask_struct{// ...unsignedshorttss_selector;// 指向GDT中该进程的TSSunsignedshortldt_selector;// 指向GDT中该进程的LDTstructdesc_structldt[3];// 进程的LDT内容// ...};

平坦模型(现代OS主流)

// 大部分使用分页,GDT简化structgdt_entry{// 只有几个固定条目:// 1. 空描述符// 2. 内核代码段(基址0,限制4G)// 3. 内核数据段(基址0,限制4G)// 4. 用户代码段(基址0,限制4G)// 5. 用户数据段(基址0,限制4G)// 6. 每个CPU的TSS(用于特权级切换)// 7. 可能的每CPU数据段};

5.关键设计要点

共享与隔离的平衡

  • 共享:所有进程通过GDT访问相同的内核空间
  • 隔离:每个进程通过自己的LDT或分页表隔离用户空间

进程切换成本

; 传统任务切换(使用硬件任务切换) jmp TSS_SELECTOR ; 昂贵,保存全部状态到TSS ; 现代软件切换(Linux/Windows方式) mov cr3, new_page_directory ; 切换页目录 ; 更新少数段寄存器(通常不需要,因为平坦模型) ; 软件保存/恢复寄存器

6.实际案例

Linux 2.4之前

  • 每个进程在GDT中有2个条目(TSS和LDT)
  • 限制:最大进程数 = (GDT大小 - 固定条目) / 2

Linux 2.6+(平坦模型)

// 每个CPU一个GDT,包含:// 1. 空描述符// 2. 内核代码段// 3. 内核数据段// 4. 用户代码段// 5. 用户数据段// 6. 每CPU的TSS(用于用户态->内核态切换)// 7. 每CPU的数据段(可选)// 进程隔离完全通过分页实现// 每个进程有自己的页目录(cr3)

Windows NT

  • 类似平坦模型
  • 使用调用门系统调用指令进行特权切换
  • GDT主要维护TSS用于栈切换

总结关系

  1. 容器关系:GDT是系统级的容器,包含所有进程相关的系统段描述符
  2. 桥梁作用:GDT连接了进程的LDT和TSS到CPU硬件
  3. 权限控制:通过GDT中的DPL控制用户态到内核态的切换
  4. 演进趋势:从"每个进程在GDT中有条目"到"GDT几乎固定,通过分页隔离进程"

核心思想:GDT提供了系统级别的段描述框架,而进程通过GDT中的特定条目(TSS、LDT)和分页机制实现隔离与共享的平衡。

http://www.jsqmd.com/news/173484/

相关文章:

  • ChatGPT提示工程:架构师教你用这4个技巧,让prompt更有“互动感”!
  • 日总结 47
  • Java毕设项目推荐-基于Spring Boot的非物质文化商城系统的设计与开发基于SpringBoot的非遗传统手工艺购物系统【附源码+文档,调试定制服务】
  • 语法检查工具有推荐吗?Grammarly 适合学术写作吗?
  • 代码大全二4
  • 【语法检查工具有推荐吗?Grammarly 适合学术写作吗?】
  • 代码大全5
  • 【毕业设计】基于SpringBoot的在线招聘系统系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 代码大全6
  • 12.31.1
  • 【课程设计/毕业设计】基于SpringBoot的在线招聘系统系统设计与实现【附源码、数据库、万字文档】
  • Java计算机毕设之基于SpringBoot的在线招聘系统系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 别再熬夜改论文!8款免费AI工具一键润色,原创性飙升超省心!
  • UE_CPP学习
  • Java毕设项目:基于SpringBoot的在线招聘系统系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 基于SSM的大学生就业信息平台【源码+文档+调试】
  • 【毕业设计】基于SpringBoot的新能源二手汽车销售平台的设计与实现(源码+文档+远程调试,全bao定制等)
  • 再见,2025。你好,2026
  • 计算机Java毕设实战-基于SpringBoot的在线招聘系统系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • jspm基于JSP高校研招考研招生信息共享系统的设计与实现-vue
  • 【课程设计/毕业设计】基于SpringBoot的新能源二手汽车销售平台的设计与实现【附源码、数据库、万字文档】
  • 提示工程伦理常见风险图谱:架构师必须警惕的10大伦理陷阱
  • springboot乘用车汽车销售市场销量情况可视化分析gnsm7wu6
  • Java计算机毕设之基于SpringBoot的新能源二手汽车销售平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • windows系统中,GDT中的全局描述符和LDT中的局部描述符关系概述
  • 47. Connecting register env
  • java基于SSM线上视频学习系统设计与实现-vue
  • Java毕设项目:基于SpringBoot的新能源二手汽车销售平台的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 48. UVM Register Backdoor Access
  • AI元人文:内在的意义行为原生——意识作为第一舞台的元叙事