我正在搜索Windows内存如何与X86配合使用 我学到了一些东西,但我处于两难境地是不是真的。 我没有找到关于VAD和GDT之间的互联网关系的任何文档
Windows操作系统使用VAD(虚拟地址描述符)从LDT或GDT阵列分配地址。
正如我所读到的,每个VAD条目只是一个"页表"
所以:
对于进程,每个页表都是LDT条目 对于内核,每个页面表都是GDT条目
操作系统启动进入VAD时,NTOSKRNL.EXE 通过调用RtlInitializeGenericTable 此函数生成二叉树,每个节点包含空闲的LDT或GDT条目。 这个二叉树根存储在GDT本身。
当我们从用户模式malloc分配内存时,二叉树从LDT池和VAD树根中减去一个LDT节点。
我的第二个问题: Windows可以运行多个进程是GDT条目的限制 x86可以有16位GDT条目,因此我们可以添加65536个LDT条目 每个进程可以有1个LDT条目。 因此GDT最多可包含60K条目。 这意味着Windows可以运行最多~60k的进程 这是真的吗?