【发布时间】:2021-10-01 12:56:54
【问题描述】:
我是本科生,所以我不确定我的写作是否 100% 准确。它主要基于我从几周前发生的在线讲座中了解到的内容以及我在网上阅读和观看的资源。
因此,在我们关于OS 中的内存管理 的在线课程中,我们谈到了MMU(每个CPU 包附带的专用硬件)的使用,它用于将虚拟地址转换为物理地址。
现在,我从 youtube 和 wikipedia 等在线资源中了解到。
当一个程序被编译时compiler or the linker would generate the virtual address space for the program(所以两个进程可能有相同的虚拟地址,它也有助于它程序获得连续的内存,而可能页面在 RAM 中的排列可能不同)我不是完全确定这如何与解释器语言一起工作。
操作系统还为每个进程维护一个页表(位于 DRAM 中),它是 DRAM 中虚拟地址到物理地址的数据结构(如哈希映射)。
CPU 也有一个名为 TLB 的专用缓存来协助 CPU 完成这项工作,以避免浪费它的周期来从页表中获取 DRAM 上的物理地址位置,因为缓存更靠近 CPU,它可能更快。
实际物理内存可能小于虚拟地址空间,这将需要操作系统将页面(也称为页面输出)交换到磁盘(并且引用维护在磁盘上存储它的位置的页表中),如果有没有空间。 (称为虚拟内存)
进程运行时,如果CPU得到一个虚拟地址,则查找TLB,如果未命中,则查找进程的Page table,以访问page的地址及其所在位置,并进行@ 987654323@
如果页面存在于 DRAM 中,一切正常。但是,如果 DRAM 中不存在该页面,它会生成一个硬件故障,操作系统会将这些页面从磁盘带到 DRAM 页面,同时使用新地址更新页面表条目。
在这整个过程中,我不理解或混淆
-
由于地址转换和页入/页出由 CPU 和操作系统完成,MMU 适合做什么?
-
解释语言中的虚拟地址空间是如何分配的?
【问题讨论】:
-
您自己说过“MMU(每个 CPU 包附带的专用硬件),用于将虚拟地址转换为物理地址。”
-
@wxz 是的,我现在意识到了。
标签: operating-system