内存寻址中的页表与虚拟内存中的页表

问题描述 投票:0回答:1

内存寻址=概念,其中当操作系统给CPU一个进程来执行时,它为该进程分配一部分RAM,并且CPU为该部分生成虚拟地址。 cpu生成的虚拟地址和ram上实际物理地址之间的映射存储在页表中

虚拟内存 = 将硬盘的一部分用作 RAM 的概念,这样 RAM 的大小似乎可以处理更多。这里RAM地址和硬盘地址之间的映射也存储在页表中。

所以页表在两个概念中都有不同的含义

因此,在存在虚拟内存且存在 5 个进程的场景中,该场景中存在 5 个(每个进程本地)+ 1(操作系统级别的虚拟内存)= 6 个页表。

请告诉我我的理解是否正确。

提前致谢

operating-system memory-address virtual-memory
1个回答
0
投票

在大多数技术文献中,“虚拟内存”意味着第一件事:它是虚拟地址和物理地址之间的转换。它用于将进程彼此隔离以及与真实硬件隔离,并简化操作系统的内存管理。

虚拟内存由页表定义,页表包含每个虚拟页的物理地址。它还包含其他参数:页面是否可写?可执行的?它是仅限内核的吗?它到底存在吗?替换页表会更改虚拟内存的映射 - 这就是操作系统在进程之间切换的方式。在大多数 CPU 架构上,页表格式由 CPU 决定 - 因为它是由硬件读取的。然而,软件驱动的系统也存在(众所周知 - MIPS)。表的内容由操作系统填写 - 它决定哪些地址将映射到哪些地址。


第二件事通常称为“页面交换”,或简称“交换”。我只在面向外行的半营销材料中看到它被称为“虚拟记忆”。页面交换完全由操作系统在软件中完成:

  • 首先,页面从虚拟内存中取消映射——页表中的记录被标记为“不存在”。然后,操作系统将物理页存储在磁盘上。
  • 如果程序访问调出的内存 - CPU 会触发页面错误,并跳转到操作系统代码。然后操作系统加载页面,并将其映射到页表中。

磁盘和虚拟地址之间的映射完全是操作系统的问题 - 它可以使用任何内部数据结构。我从来没有听说过它被称为“页表” - 但我想它并不是完全不准确。大多数 CPU 还允许操作系统使用页表中的空记录 - 只要它不触及“不存在”位。

© www.soinside.com 2019 - 2024. All rights reserved.