首页 > 编程知识 正文

仿真测试内存映射值范围(linux 虚拟内存)

时间:2023-05-06 17:37:46 阅读:75604 作者:2750

什么是虚拟内存? 虚拟内存称为虚拟内存。 在电脑上运行的程序必须通过内存运行,如果运行的程序大量消耗内存或大量消耗,就会消耗内存。 为了解决这个问题,Windows利用了虚拟内存技术。 也就是说,硬盘空间的一部分用作内存。 内存耗尽后,计算机会自动调用硬盘作为内存,以缓解内存紧张的情况。 如果计算机程序和操作所需的随机内存(RAM )不足,Windows将使用虚拟内存进行补偿。 将计算机的RAM与硬盘上的临时空间组合起来。 RAM运行速度变慢时,将数据从RAM移动到称为分页文件的区域。 将数据移动到分页文件后,RAM将被释放以完成工作。 一般来说,计算机的RAM容量越大,程序运行得越快。 如果由于内存空间不足导致计算机速度变慢,请尝试通过增加虚拟内存进行校正。 但是,由于计算机从RAM读取数据的速度比从硬盘读取数据的速度快,因此增加RAM的容量(可以添加记忆棒)是最佳的选择。 虚拟内存能解决什么问题? 内存在计算机上的作用很大,在计算机上运行的所有程序都必须通过内存运行。 执行的程序大或多时,将不再消耗内存。 为了解决这个问题,WINDOWS利用了虚拟内存技术。 也就是说,取出硬盘空间的一部分作为内存使用。 这一部分称为虚拟内存,虚拟内存存在于硬盘上的格式为PAGEFILE.SYS的页面文件。

当创建虚拟内存地址如何映射物理地址的进程时,将创建虚拟中从到物理内存的映射表--------页面表。 可以基于页表将虚拟内存与物理内存相关联的内存映射通过页表。 首先,让我们考虑一下进行分页处理的理由。

a )程序运行时,进程必须从内存中读取此程序的代码。 代码的位置必须是物理内存才能执行。 由于操作系统运行的程序非常多,因此无法将所有物理页完全放入内存中。 因此,引出了虚拟内存的概念。 将哪些不常用的程序片段放入虚拟内存,需要使用时用load放入主内存(物理内存)。 这就是内存管理要做的。 内存管理还需要计算程序片段在主内存中的物理位置,以便CPU进行调度。 该调度利用内存分页从页面表中映射。 Win32通过双层表结构实现地址映射。

一楼叫页面目录,实际上是内存页。 Win32内存页面大小为4KB,该内存页面由4个字节组成,分为1024个项目,分别称为“页面目录项目”(PDE )。 第二个层次称为页面表,该层次有1024个页面表。 页面表的结构类似于页面目录,每个页面表也是一个内存页,其大小为4KB,分为1024个项目。 很容易看到,页面表中的每个项目都称为页面表条目(PTE ),有10241024个页面表条目。 每个页表项对应于一个物理内存中的一个“内存页”,共有10241024个物理内存页,每个物理内存页为4KB,因此可以对4G大小的虚拟物理内存进行索引。

当然,上述前提是此数据已经存在于物理内存中。 如果访问数据已经在物理内存中,请按照上述步骤进行地址映射以访问数据。 如果当前数据不在物理页上,则抛出页面错误,并确定数据是否在页面交换文件中。 如果不存在,访问违规将退出程序,如果存在,页表条目将检测此数据页位于哪个页文件中,并在继续地址映射之前将此数据页调用到物理内存中。 实现了每个进程都有专用4G的虚拟地址空间。 这意味着每个进程都有自己的页面目录和页面表结构。 对于不同的进程,即使是同一指针(虚拟地址),进程映射的物理地址也不同。 这意味着在进程之间传递指针是没有意义的。 虚拟存储执行过程虚拟存储由硬件和操作系统自动安排和管理存储信息。 那个工作有六个步骤。

中央处理器将主存储器的逻辑地址分解为组号a和组内地址b,对组号a进行地址转换,即以逻辑组号a为索引,检查地址转换表,判断该组信息是否存储在主存储器中。 如果该组号已经在主存储器中,则改为执行; 如果该组号不在主存储器内,则检查主存储器中是否有空闲空间,如果没有,则将暂时不使用的组调用到副存储器中,将该组的信息调用到主存储器中。 从子存储器读出期望的组,传送到主存储器的空闲区域,并将该空闲的物理组号a和逻辑组号a登记在地址转换表中。 从地址转换表中读取与逻辑组号a相对应的物理组号a。 物理地址从物理组号a和组内的字节地址b获得。 根据物理地址从主存储器访问所需的信息。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。