memory-management - 差异交换和分页

标签 memory-management process paging swap

SwappingPaging 引用 Process Memory Management 有什么区别?

如果有任何我可以获得更多信息的地方,还可以指导我查看教程。

最佳答案

交换是指将整个进程地址空间,或者无论如何,不​​可共享的文本数据段,一次复制到交换设备,或者复制回来(通常是磁盘)。

而分页是指复制入/出地址空间的一页或多页。特别是,这是一个更精细的粒度。例如,在 1 GB RAM 地址空间中有约 250,000 个 4 KB 页。

早期使用交换,例如DEC pdp-11 时代 Unix,1975-80 ish。对于所有你想知道的以及更多信息,我可以推荐 The Lions Document a.k.a. Lions' Commentary on Unix 6th Ed。源代码,John Lions,ISBN 1-57398-013-7?

你一定会喜欢第 14 章“程序交换”,它的开头是:“Unix 与所有分时系统和一些多道程序系统一样,使用“程序交换”(也称为“转入/转出”)来共享几个进程之间的主物理内存资源有限。”

从 1980 年左右开始,分页(在 Unix 上)随 BSD(伯克利系统发行版)在 VAX-11/780 上出现。

分页通常还与每页内存属性(不可访问、只读、读写、不可执行、可执行)以及各种虚拟内存管理技巧相关联,如需求零填充页面、写时复制页面、等等。

在硬件方面,交换可以在没有任何内存管理硬件的情况下执行,尽管早期的机器采用了简单的内存映射方案(例如基数和绑定(bind),或简单的一级固定大小的页面映射表(例如划分 64 KB 数据地址空间)在更大的物理地址空间(256 KB ... 4 MB)中分成 8、8KB 页)。

相比之下,分页需要page-granularity的虚拟内存页表项,通常对页的物理地址、有效、读、写等PTE位进行编码。机器还需要自动(对应用程序透明)取并根据需要解释页表条目以将每个虚拟地址映射到其物理地址,和/或获取页面错误异常以使操作系统能够使页面可访问和/或安排 I/O 将其加载到物理 RAM。

快乐黑客!

关于memory-management - 差异交换和分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415254/

相关文章:

ios 我的对象没有被释放

operating-system - 使用线性页表进行分页虚拟地址转换

.net - 如何从堆栈中删除值类型?

ios - 如何检测操作系统强制关闭应用程序

java - Java 应用程序终止时是否释放了所使用的资源?

c - 使用进程来计算文件数量

c++ - 如何检查进程是否在 C++ 中运行?

java - 为什么我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误?

java - 使用 Hibernate 和 Struts2 进行分页实现

paging - 基于LRU算法计算缓存