大多数操作系统对虚拟内存使用分页。为什么是这样?为什么不使用分段?仅仅是因为硬件问题吗?在某些情况下,一种比另一种更好吗?基本上,如果你必须选择一个而不是另一个,你想使用哪一个,为什么?
为了论证,我们假设它是 x86。
大多数操作系统对虚拟内存使用分页。为什么是这样?为什么不使用分段?仅仅是因为硬件问题吗?在某些情况下,一种比另一种更好吗?基本上,如果你必须选择一个而不是另一个,你想使用哪一个,为什么?
为了论证,我们假设它是 x86。
像 Windows 和 Linux 这样的操作系统结合使用segmentation
和paging
. 进程的虚拟内存首先被划分为段,然后每个段由很多页组成。操作系统首先进入特定段,然后在该段中定位特定页面以访问地址
摘自:galvin 的操作系统概念
问题之一。。
分段允许进程的物理地址空间是不连续的。分页是提供此优势的另一种内存管理方案。然而,分页避免了外部碎片和压缩的需要,而分段则没有。
分段问题:出现问题的原因是,当需要换出驻留在主内存中的代码片段或数据时,必须在后备存储上找到空间。后备存储也有同样的碎片问题,但访问速度要慢得多,因此不可能进行压缩。
分页通过以下方式解决它:
实现分页的基本方法包括将物理内存分成称为帧的固定大小的块,并将逻辑内存分成称为页面的相同大小的块。后备存储分为与内存帧或大小相同的固定大小的块多个帧的集群。
由于 pages-frames-Backing store 都被划分为相同的大小,因此不会导致外部碎片。但可能有内部碎片。所以必须正确选择pagesize
请注意,单地址空间操作系统有时会使用分段来隔离进程。