Cal*_*lat 7 linux paging operating-system memory-management
根据我的理解,页面来自叠加层,这些叠层层是由虚拟内存生成的内存空间簇.但我不明白帧是什么或它们如何相关.
谁能解释一下页面和框架是什么以及它是如何工作的?
Ton*_*ous 14
页面框架是主内存的物理属性.然而,虚拟页面是......虚拟的.
frame 0 frame 1 frame 2 frame 3 frame 4
----------------------------------------------
| | | | | |
| | | | | |
---------------------------------------------- Main Memory
Run Code Online (Sandbox Code Playgroud)
物理内存被组织到PAGE FRAMES中。页帧的大小为2的幂(以字节为单位),并且在系统之间有所不同。
逻辑内存被组织成PAGES。页面大小与页面框架匹配。
逻辑地址分为页面选择器和页面偏移量。
使用页表将逻辑页映射到页框架。页表的结构在系统之间有所不同。逻辑地址的页面选择器用作页面表的索引。
在大多数系统中,页表可以指定没有关联页框的有效逻辑地址。这是一个虚拟内存系统。如果应用程序尝试访问此类页面,则会触发页面错误异常。操作系统页面故障处理程序必须分配一个物理页面框架,使用辅助存储中的数据加载该页面框架,更新页面表以将逻辑页面映射到新分配的物理页面框架,最后重新启动导致故障的指令。
操作系统管理页表。CPU(对应用程序透明)使用页表将逻辑页框架转换为物理页框架。
页(或内存页,或虚拟页,或逻辑页)是一个固定长度的连续虚拟内存块。
一个框架(或内存框架,或物理页面,或页面框架)是一个固定长度的 RAM 块(即物理内存,它存在 - 如“物理”中。虚拟内存是为了我们的数学正常有效地工作而发明的以便安全地管理内存)。
请注意,框架可能不是连续的,但页面将是连续的。我们希望进程,操作系统处理连续地址,因为它使一切变得更容易。让专用硬件芯片(MMU)将虚拟地址与正确的物理地址对应起来,反之亦然。
进程使用虚拟地址,而硬件使用物理地址,即。CPU(将地址放置在其地址总线中以请求内存访问)和 RAM 子系统(MMU、页表等)。编译程序时,编译器将程序代码转换为机器可理解的代码,在此过程之间,地址空间以虚拟地址的形式设置。当由处理器处理时,它们会在 MMU 的帮助下再次映射到内存中可用的物理位置,无论是 RAM 还是 HDD。
附注。我不容忍使用术语页框。您可能意识到这是混淆的根源。坚持“页面”和“框架”,这两个非常简单但含义明确的词。