Linux 两者都使用。它使用分段来映射所有可用的地址空间,同时提供不同的访问权限:基本上是内核和用户空间视图。对于一些示例,您可以 grep KERNEL_DS(内核数据段)的 Linux 源代码。
然后使用分页来实现虚拟内存(Grep 用于内核中的“struct gdt_page”,作为起点)
Linux 下的内存管理完全通过分页工作。
Linux 支持“小”(通常为 4kB)和“大”(2M)页面。前者在您不知道或没有做任何特殊事情的情况下“正常工作”,后者需要特殊处理(必须在启动时保留并通过特殊设备映射)。
在 Linux 下出现“段”的唯一上下文是 brk() 系统调用,它用于增加进程的数据段(您通常不需要这个,malloc 无需您关心就可以这样做)。但是无论哪种方式,内存都是按页来的,按页管理的,和x86分割没有关系。