据我了解分页和交换,它们是完全不同的概念。而交换意味着,一个进程要么完全在物理内存中,要么在硬盘驱动器上,进程的分页部分可以在物理内存中,其他部分可以在硬盘驱动器上。
但是为什么 linux 需要一个交换分区呢?如果物理内存满了,一些进程会外包给硬盘,新的进程会从虚拟内存映射到物理内存。
我只是不明白为什么需要一个交换分区(或一般的交换)呢?
或者这只是一个术语问题swap partition == virtual memory?
在将我兄弟的笔记本升级到 2GiB 后,我有一个 512MiB DDR2 SODIMM SDRAM。看到它没有被使用,它在市场上几乎没有任何价值,如果我能用它来放置页面文件,我会喜欢它。由于 Windows Vista/7 具有通过 USB 的 ReadyBoost,我想我可以使用它,前提是我首先有一个 DIMM 到 USB 转换器解决方案。有任何想法吗?
(因为我的 1 插槽 MicroDIMM Fujitsu 平板电脑有 1GiB,而 2GiB 晶圆至少要 100 美元,我很伤心,而且我已经破产了,而且是 NEET)
退出 VMWare 播放器后,我的主操作系统 (Windows 7) 滞后并大大减慢。HDD 正在过度寻找。我看到问题在于它正在快速交换大量页面。这持续大约 5-10 分钟。
我按照这里的说明http://twigstechtips.blogspot.ca/2009/03/fix-vmware-slow-to-release-swapped.html但它们不起作用。那是 3 年前,所以我认为修复已经过时了。
或者更确切地说,我不知道这个guest.vmx文件在哪里。我能找到的最接近配置文件的是C:\Users\Jack\AppData\Roaming\VMware\preferences.ini
有人有新的解决方案吗?
好吧,这似乎是一个常见的或已经被问到的问题,但是在搜索了各种书籍、在线教程甚至 SU 之后,我仍然对这四个野兽如何在 x86 保护模式系统上协同工作感到困惑。
讨论这些事情时可以使用的正确术语是什么?
据我了解,这 4 个概念完全不同,但在我们谈论保护内存时却是相关的。这就是我搞砸的地方!
我先从交换开始。
交换:
进程必须在物理内存中才能执行。进程可以暂时从物理内存交换到后备存储,然后再带回内存继续执行。
这特别适用于同时执行多个进程的多任务环境,因此实现了 cpu 调度程序来决定将哪个进程交换到后备存储。
分页:又名简单分页:
假设一个进程拥有它使用/访问的所有地址在 0 到 16MB 的范围内,比如说。我们可以称之为进程的逻辑地址空间,因为地址是由进程生成的。
请注意,根据此定义,一个进程的逻辑地址空间可以与另一个进程的逻辑地址空间不同,因为该进程可能更大或更小。
现在我们将进程的这个逻辑地址空间划分为相同大小的块,称为pages。还将物理内存划分为称为frame 的固定大小的块。
由定义。逻辑地址 = 页#:该页的偏移量
当一个进程被 cpu 调度程序选择执行时,它的页面从后备存储加载到任何可用的内存帧中。
请注意,在将控制权从调度程序转移到该进程之前,属于该进程的所有页面都已加载到内存中。当这个进程被交换到后备存储时,它的所有页面都存储在后备存储上。
后备存储被分成与物理内存帧大小相同的固定大小的块。
这简化了交换过程,因为我们交换的是页面而不是字节。这减少了后备存储的碎片,因为我们不需要为某些字节找到空间,而是查看空间是否可用于页面。
分页技术还减少了物理内存的碎片化,因为我们将页面保留在内存中。
主内存必须为属于进程的所有页面提供空间,以便将该进程加载到内存中以供执行。如果只有这个进程的几页空间,那么一些其他进程(即属于进程的所有页面)必须交换到后备存储,然后只有要执行的进程的所有页面必须加载到内存中。
因此分页技术比简单的交换提供更好的性能。
因此,交换允许我们在不购买太多内存的情况下运行多个进程,相反,我们可以使用少量内存(这个数量必须使得要在 PC 上运行的最大程序/进程的所有页面可以加载到内存中——即你必须知道你的程序在运行之前需要多少内存。)加上一个额外的后备存储,通常是磁盘,对于比主内存大得多的容量,它的成本非常低。
所以交换+分页可以有效地管理内存,以便多个进程可以在一个系统上运行。
需求分页:
但是安装在系统中的物理内存不必与进程的要求相同。还需要运行多个进程。
解决方案是只将进程的部分页面加载到内存中,当进程访问不在内存中的页面中的地址时,就会产生页面错误,操作系统按需加载该页面, 以便进程可以继续执行. 这节省了在将控制转移到该进程之前加载该进程的所有页面的时间 - 就像分页 + 交换的情况一样。
这种仅将进程的一部分保留在内存中,并保留在后备存储(例如磁盘)上的技术称为需求分页。 …
operating-systems virtual-memory memory-management paging protected-mode
我读过这个,这让我有点困惑:
虚拟机需要物理内存而非虚拟内存,因此在计算页面文件大小时无需计算分配给 VM 的内存。
这是否意味着 VM 将仅使用物理 RAM,因为无法使用分页文件?