Operating system 虚拟内存的分页或分段,哪个更好?

Operating system 虚拟内存的分页或分段,哪个更好?,operating-system,paging,virtual-memory,memory-segmentation,Operating System,Paging,Virtual Memory,Memory Segmentation,大多数操作系统对虚拟内存使用分页。为什么会这样?为什么不使用分段?只是因为硬件问题吗?在某些情况下,一个比另一个好吗?基本上,如果你必须选择其中一个,你会选择哪一个,为什么 为了便于讨论,我们假设它是一个x86。像windows和Linux这样的操作系统同时使用分段和分页。进程的虚拟内存首先被划分为若干段,然后每个段由许多页组成。操作系统首先进入特定段,然后在该段中定位特定页面以访问地址。注意,有时使用段来隔离进程。摘自:galvin的操作系统概念 问题之一 分段允许进程的物理地址空间是非连续的

大多数操作系统对虚拟内存使用分页。为什么会这样?为什么不使用分段?只是因为硬件问题吗?在某些情况下,一个比另一个好吗?基本上,如果你必须选择其中一个,你会选择哪一个,为什么


为了便于讨论,我们假设它是一个x86。

像windows和Linux这样的操作系统同时使用
分段
分页
。进程的虚拟内存首先被划分为若干段,然后每个段由许多页组成。操作系统首先进入特定段,然后在该段中定位特定页面以访问地址。注意,有时使用段来隔离进程。

摘自:galvin的操作系统概念

问题之一

分段允许进程的物理地址空间是非连续的- 相邻的。分页是提供此功能的另一种内存管理方案 优势。但是,分页可以避免外部碎片和压缩,而分段则不能

分段问题: 出现问题的原因是,当代码片段 如果主内存中的数据需要交换,则必须找到空间 在后备商店。备份存储也有同样的碎片问题 但是访问速度要慢得多,所以压缩是不可能的

分页通过以下方式解决此问题:

实现分页的基本方法包括将物理内存拆分为固定大小的块(称为帧)和将逻辑内存拆分为固定大小的块 相同大小的块称为页。备份存储被划分为固定大小的块,这些块的大小与内存帧或多个帧的集群的大小相同

由于页面框架,备份存储区都被划分为相同的大小,因此不会导致外部碎片。但可能存在内部碎片。 因此,必须正确选择页面大小


定义“更好”。一般来说,开发(特别是操作系统)是一个权衡的案例研究。此外,这在很大程度上受到您希望操作系统针对的系统体系结构的限制。例如,x86体系结构中存在许多限制,使分页成为一个更好的选择。@Cody Gray-让我们假设x86。为什么分页会更好?我对实际硬件的了解还不够深入。谢谢在Linux中,段是整个地址空间。所有进程都是相同的段表。