提问人:Yusuf 提问时间:10/10/2023 最后编辑:Yusuf 更新时间:10/10/2023 访问量:31
内存寻址中的页表与虚拟内存中的页表
Page table in memory addressing vs page table in virtual memory
问:
内存寻址 = 概念,当操作系统为 CPU 提供要执行的进程时,它会为该进程分配一部分 RAM,并且 CPU 会为该部分生成虚拟地址。CPU 生成的虚拟地址与 RAM 上实际物理地址的映射关系存储在页表中
虚拟内存 = 将硬盘的一部分用作 RAM 的概念,使得 RAM 的大小看起来更适合处理。这里RAM地址和硬盘地址之间的映射也存储在页表中。
因此,页表在这两个概念中使用,具有不同的含义
因此,在存在虚拟内存且存在 5 个进程的方案中,此方案中存在 5(每个进程的本地)+ 1(在虚拟内存的操作系统级别)= 6 个页表。
如果我的理解正确,请告诉我。
提前致谢
答:
在大多数技术文献中,“虚拟内存”意味着第一件事:它是虚拟地址和物理地址之间的转换。它用于将进程彼此隔离并与实际硬件隔离,并简化操作系统的内存管理。
虚拟内存由页表定义,该页表包含每个虚拟页的物理地址。它还包含其他参数:页面是可写的吗?可执行?它是仅内核的吗?它真的存在吗?替换页表会更改虚拟内存的映射 - 这就是操作系统在进程之间切换的方式。在大多数 CPU 体系结构中,页表格式由 CPU 决定 - 因为它由硬件读取。然而,软件驱动的系统也存在(臭名昭著的 - MIPS)。表格的内容由操作系统填写 - 它决定哪些地址将映射到什么。
每个进程通常都有自己的页表 - 尽管实际上没有什么可以阻止两个进程共享一个页表。实际上,在某些系统中,线程只是具有相同页表的进程。
第二件事通常称为“页面交换”,或简称为“交换”。我只在外行人的半营销材料中看到它被称为“虚拟记忆”。页面交换完全由操作系统在软件中完成:
- 首先,页面从虚拟内存中取消映射 - 页面表中的记录被标记为“不存在”。然后,操作系统将物理页面存储在磁盘上。
- 如果程序访问分页内存 - CPU 会触发页面错误,并跳转到操作系统代码。然后,OS 重新加载页面,并将其映射到页面表中。
磁盘和虚拟地址之间的映射完全是操作系统的问题 - 它可以使用任何内部数据结构。我从未听说过它被称为“页表”——但我想它并非完全不准确。大多数 CPU 还允许操作系统使用页表中的空记录 - 只要它不触及“不存在”位。
评论
In most technical literature, "virtual memory" means the first thing: it is a translation between virtual addresses and physical addresses
那么,当 CPU 生成进程内存部分的每个字节的内存寻址时,这个概念叫什么?在同一个概念中,我在某处了解到 32 位 CPU 无法寻址超过 4 GB 的内存。请让我理解
下一个:从地址初始化类型
评论