【问题标题】:Page faults, where are the secondary memory addresses stored [closed]页面错误,辅助内存地址存储在哪里[关闭]
【发布时间】:2013-04-04 11:16:08
【问题描述】:

当发生 TLB 未命中,并且该页面未驻留在物理内存中时,该页面将被写回物理内存并更新页表和 TLB。

但是辅助存储器的地址存储在哪里?它是如何知道在磁盘上哪里可以找到数据的?

【问题讨论】:

  • StackOverflow 用于解决实际编程问题,而不是用于考试学习。

标签: memory-management operating-system hardware paging tlb


【解决方案1】:

内存管理器维护一个数据结构,在这个数据结构中,给定一个虚拟地址,它可以在磁盘/交换文件中找到对应的位置。

显然,搜索键不仅仅是地址,它是当前地址空间或当前进程的地址和 ID 的对(您需要区分进程 1 中的地址 0x8000 处的错误)并在进程 2 中的同一地址 0x8000 处出错,因为它们可能不会在 0x8000 处共享内存)。

页表条目在这里可能很有用。当虚拟到物理映射有效时,它们存储物理地址。当它无效时(因为换出到磁盘),可以将地址设置为您喜欢的任何内容。您可以将磁盘上的位置存储在其位置。但是,如果您想避免每次重用页面时都将未更改页面的内容写入磁盘,并且它们的内容先前已写入磁盘并且仍然与内存中的内容匹配,那么这不是一个好主意。 PTE 不能同时拥有两个不同的地址(物理地址和磁盘)。因此,应该使用专用的数据结构而不是 PTE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2013-07-23
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多