在分页操作中虚拟地址如何映射到交换分区上的地址
how a virtual address is mapped to address on the swap partition in paging operation
我想知道是否有人可以帮助我了解虚拟地址是如何映射到其后备存储地址的,后备存储用于保存所有用户进程的移出页面。
是静态映射还是哈希算法?如果它是静态的,那么这种映射保存在哪里?它似乎不能在 TLB 或页面 table 中,因为根据 https://en.wikipedia.org/wiki/Page_table,当页面移出时,PTE 将从 TLB 和页面 table 中删除。包含此类信息的算法和 C 结构的描述将很有帮助。
无论是静态映射还是hash算法,如何保证没有2个进程会把自己的地址映射到swap分区上的同一个位置,因为每个进程的虚拟地址space太大了(2^ 64) 交换 space 这么小?
所以:
page-in时,OS如何知道从哪里找到swap分区上的地址(对应用户进程访问的虚拟地址)搬入?
当一个物理页面需要被调出时,OS 如何知道将交换分区放在哪里?
对于你问题的第一部分:它实际上取决于硬件,但通用的方法是保留对包含换出页面的交换块的引用(取决于交换子系统的实现,它可能是table) 对应页面 table 条目中的指针或块号或偏移量。
编辑:
TLB 是一种快速关联缓存,有助于非常快速地进行虚拟到物理页面的映射。当一个页面被换出时,它在 TLB 中的条目可以被一个新的活动页面替换。但是table页中的条目不能被替换,因为table页不是关联内存。页面 table 在整个过程的整个过程中一直保留在内存中,并且无法删除或替换任何条目(由另一个虚拟页面)。页 tables 中的条目只能映射或取消映射。当它们未映射时(由于交换或释放),条目的内容可能包含对交换块的引用或只是一个无效值。
对于你问题的第二部分:系统内核在交换分区中维护了一个空闲块列表。每当它需要驱逐一个 RAM 页面时,它会分配一个空闲块,然后返回块引用,以便它可以插入到 PTE 中。当页面返回到 RAM 时,磁盘块被释放,以便其他页面可以使用它。
During page-in, how the OS know where to find the page (corresponding to the virtual address accessed by the user process) on the swap device to move in?
这实际上是一个相当复杂的过程。操作系统必须维护 table 进程页面映射到的位置。这可能很复杂,因为页面可以映射到多个设备,甚至可以映射到同一设备上的多个文件。一些系统使用 executable 文件进行分页。
when a physical page needs to be paged out, after the virtual address for a physical page is looked up in TLB, how does the OS know where to put on the swap device?
在设计合理的操作系统上,辅助存储是在虚拟页映射到进程时分配(或确定)的。该位置在节目持续期间保持不变 运行。
我想知道是否有人可以帮助我了解虚拟地址是如何映射到其后备存储地址的,后备存储用于保存所有用户进程的移出页面。
是静态映射还是哈希算法?如果它是静态的,那么这种映射保存在哪里?它似乎不能在 TLB 或页面 table 中,因为根据 https://en.wikipedia.org/wiki/Page_table,当页面移出时,PTE 将从 TLB 和页面 table 中删除。包含此类信息的算法和 C 结构的描述将很有帮助。
无论是静态映射还是hash算法,如何保证没有2个进程会把自己的地址映射到swap分区上的同一个位置,因为每个进程的虚拟地址space太大了(2^ 64) 交换 space 这么小?
所以:
page-in时,OS如何知道从哪里找到swap分区上的地址(对应用户进程访问的虚拟地址)搬入?
当一个物理页面需要被调出时,OS 如何知道将交换分区放在哪里?
对于你问题的第一部分:它实际上取决于硬件,但通用的方法是保留对包含换出页面的交换块的引用(取决于交换子系统的实现,它可能是table) 对应页面 table 条目中的指针或块号或偏移量。
编辑:
TLB 是一种快速关联缓存,有助于非常快速地进行虚拟到物理页面的映射。当一个页面被换出时,它在 TLB 中的条目可以被一个新的活动页面替换。但是table页中的条目不能被替换,因为table页不是关联内存。页面 table 在整个过程的整个过程中一直保留在内存中,并且无法删除或替换任何条目(由另一个虚拟页面)。页 tables 中的条目只能映射或取消映射。当它们未映射时(由于交换或释放),条目的内容可能包含对交换块的引用或只是一个无效值。
对于你问题的第二部分:系统内核在交换分区中维护了一个空闲块列表。每当它需要驱逐一个 RAM 页面时,它会分配一个空闲块,然后返回块引用,以便它可以插入到 PTE 中。当页面返回到 RAM 时,磁盘块被释放,以便其他页面可以使用它。
During page-in, how the OS know where to find the page (corresponding to the virtual address accessed by the user process) on the swap device to move in?
这实际上是一个相当复杂的过程。操作系统必须维护 table 进程页面映射到的位置。这可能很复杂,因为页面可以映射到多个设备,甚至可以映射到同一设备上的多个文件。一些系统使用 executable 文件进行分页。
when a physical page needs to be paged out, after the virtual address for a physical page is looked up in TLB, how does the OS know where to put on the swap device?
在设计合理的操作系统上,辅助存储是在虚拟页映射到进程时分配(或确定)的。该位置在节目持续期间保持不变 运行。