虚拟地址空间被分割成大小相等的两半;
一半由GDT来映射变换到线性地址,另一半则由LDT来映射。
整个虚拟地址空间共含有2^14个段:一半空间(即2^13个段)是由GDT映射的全局虚拟地址空间,另一半是由LDT映射的局部虚拟地址空间。
通过指定一个描述符表,GDT或LDT,以及表中描述符号,就可以定位一个描述符。
当发生任务切换时,LDT会更换成新任务的LDT,但是GDT并不会改变。
GDT所映射的一半虚拟地址空间是系统中所有任务共有的,LDT所映射的另一半则在任务切换时被改变。
系统中所有任务共享的段由GDT来映射。
《Linux内核完全剖析》p92;
这应该是说,80386以上支持把4GB地址空间划分为2^14个段;
2^14的一半是2^13,这是令人迷惑的,一不小心弄成2^14的一半是2^7;
2^14是16384,2^13是8192;
这就对了;Windows对虚拟地址空间的管理如下;一半是进程空间,一半是系统空间;
32 位Windows的默认虚拟地址空间
下表显示了每个分区的默认内存范围。
内存范围 用法
通过 0x7FFFFFFF) 低 2GB (0x00000000 进程使用。
高 2GB (0x80000000 到 0xFFFFFFFF) 系统使用。
https://learn.microsoft.com/zh-cn/windows/win32/memory/virtual-address-space?redirectedfrom=MSDN