gpt4 book ai didi

c++ - 大量页面错误与内存碎片有什么关系?

转载 作者:行者123 更新时间:2023-11-28 06:02:14 25 4
gpt4 key购买 nike

我想知道一个程序是否显示大量(或系统中最高的)页面错误,让我们在任务管理器或进程资源管理器中说,这表明存在内存碎片。有没有其他方法可以揭示这种问题? (内存碎片)。因此,运行时出现大页面错误的程序可能来自不在 RAM 中的数据,但操作系统会频繁中断以从磁盘加载。一个可能的原因可能是内存碎片?我想知道这两件事是否相关

最佳答案

来自维基百科:

The main functions of paging are performed when a program tries to access pages that are not currently mapped to physical memory (RAM). This situation is known as a page fault. The operating system must then take control and handle the page fault, in a manner invisible to the program. Therefore, the operating system must:

Determine the location of the data in secondary storage. Obtain an empty page frame in RAM to use as a container for the data. Load the requested data into the available page frame. Update the page table to refer to the new page frame. Return control to the program, transparently retrying the instruction that caused the page fault.

因此,我认为碎片通常与页面错误无关。后者表明 RAM 内存已满,并且该特定程序比其他程序消耗更多内存,因此他在交换区域中有更多内存,因此每次他尝试访问已被操作系统换出的页面时发生故障,操作系统必须将此页面加载到 RAM。

那是如果您正在用单个进程试验此错误。如果您在所有过程中观察到相同的问题,这表明 Thrashing .在这种情况下,物理内存量不足以容纳所有正在运行的进程,因此虚拟内存子系统将花费更多时间进行分页。因此,进程不会继续进行,因为每次发生页面错误时,进程都会失去 CPU,必须等待页面在 RAM 中就绪。

当您的内存映射包含几个无法满足新保留的小块时,通常会发生碎片,因此进程开始请求更多内存以容纳它们。因此,这种情况下的症状是内存使用率较高,或者内存未释放给操作系统,即使程序完成了一些本应分配动态内存、执行某些操作然后释放它的特定任务。

关于c++ - 大量页面错误与内存碎片有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com