【问题标题】:Swap Space vs Backing Store交换空间与后备存储
【发布时间】:2016-08-09 00:27:05
【问题描述】:
我目前正在阅读我的操作系统教科书中有关内存管理的内容,我很好奇交换空间和后备存储之间是否存在差异。他们似乎都在做同样的事情。据我了解,当页面错误发生时,会找到一个非活动页面并将其存储在交换空间中,以便可以存储导致错误的页面。后备存储似乎做同样的事情,除了它是针对整个过程而不仅仅是一个页面。这是两者的主要区别吗?还是有其他我在看的东西?
【问题讨论】:
标签:
memory-management
process
operating-system
paging
【解决方案1】:
术语“后备存储”通常用于图形用户界面的上下文中。背后的故事是一块存储窗口图像的内存。如果窗口被覆盖(即使是部分覆盖)然后又被覆盖,则后备存储用于重绘。
某些系统(例如 X 和 Windoze)通常不使用后备存储(对话框除外)。他们只是让应用程序重绘屏幕。
在过去,交换空间用于将整个进程移动到磁盘。页面文件用于存储单个页面。传统的交换已经消失。但是,Unix 在技术上进行分页时保留了术语交换。
一般意义上,页面文件和后备存储是相似的:
后备存储按原样存储在视频内存中
页面文件是物理内存。
但是,正如您所描述的那样,背景故事与分页并不真正相关。
【解决方案2】:
来自第 10 章:虚拟内存,来自操作系统概念一书:
一些系统试图通过以下方式限制使用的交换空间量
要求对二进制可执行文件进行分页。此类文件的需求页面
直接从文件系统中获取。但是,当页面
需要替换,这些帧可以简单地被覆盖
(因为它们从未被修改过),并且可以从
如果需要,请再次访问文件系统。使用这种方法,文件系统
本身作为后备存储。但是,交换空间仍然必须
用于与文件无关的页面(称为匿名内存);
这些页面包括进程的堆栈和堆。这种方法
似乎是一个很好的折衷方案,并在多个系统中使用,
包括 Linux 和 BSD UNIX。
据此,我收集到 交换空间 是文件系统上专门用于包含换出页面以供以后使用的空间。
后备存储可以只是用于生成需求页面的文件,例如实际上是需要读取的二进制文件。它们不必为了虚拟内存而创建,它们可以是文件本身。
但是,在另一章(9.5:交换)中,书中提到
但是,可以交换进程或进程的一部分
暂时内存不足到后备存储,然后带回来
进入内存继续执行(图 9.19)。
我认为后备存储包括交换空间,但并非所有形式的后备存储都被视为交换空间。例如,包含要运行的实际程序的文件系统被视为后备存储,而不是交换空间。