Operating system 当页面错误发生时,操作系统从何处获得所需的磁盘地址?
如果页表条目(PTE)未标记为有效,则表示所需的数据不在内存中,而是在磁盘上。所以现在页面错误发生了,操作系统负责将这一页数据从磁盘加载到内存Operating system 当页面错误发生时,操作系统从何处获得所需的磁盘地址?,operating-system,page-fault,Operating System,Page Fault,如果页表条目(PTE)未标记为有效,则表示所需的数据不在内存中,而是在磁盘上。所以现在页面错误发生了,操作系统负责将这一页数据从磁盘加载到内存 我的问题是,操作系统如何知道确切的磁盘地址?您是以依赖于系统的方式询问的。未标记为有效的PTE可能意味着进程地址中根本不存在该地址。系统可能有另一位来指示地址有效,但不存在逻辑到物理的映射 操作系统需要维护一个数据存放位置表 数据可以存在于许多地方。 1.它可能是在任何地方都没有映射的未初始化数据。通过清除物理页面并将其映射到进程地址空间来响应页面错误
我的问题是,操作系统如何知道确切的磁盘地址?您是以依赖于系统的方式询问的。未标记为有效的PTE可能意味着进程地址中根本不存在该地址。系统可能有另一位来指示地址有效,但不存在逻辑到物理的映射 操作系统需要维护一个数据存放位置表 数据可以存在于许多地方。 1.它可能是在任何地方都没有映射的未初始化数据。通过清除物理页面并将其映射到进程地址空间来响应页面错误
它与虚拟内存寻址相同。
程序中出现的地址是虚拟地址或程序地址。对于每次内存访问,无论是获取指令还是数据,CPU都必须将虚拟地址转换为实际物理地址。虚拟内存地址可以被视为由两部分组成:页码和页内的偏移量。页码确定包含信息的页面,偏移量指定页面中的哪个字节。偏移量字段的大小是页面大小的对数基数2。
如果虚拟地址有效,系统将检查页面框架是否可用。如果没有可用的帧,则运行页面替换算法删除页面。2014年给出的答案是正确的。处理器只知道该页丢失,或者有时该页的权限不正确(例如,写入只读页)。此时,处理器生成一个“页面错误”异常,内核得到该异常,现在必须处理该异常 在某些情况下,此页面错误需要作为SIGSEGV(“分段冲突”)信号一直传递到应用程序,例如,当用户使用空指针时。但是,正如您所说,内核通常应该并且能够处理页面错误。内核在其自己的表中保存关于每个虚拟内存页应该包含哪些内容的信息(不在页表中,页表是由处理器指定特定格式的结构)。下面是内核通过查阅自己的表可以了解到的关于出错页面的一些事情。这不是一份详尽的清单
.一般来说,这取决于。。例如,一个基于Linux的操作系统和当前交换到磁盘的内存页,请参见操作系统设计中的“鸡蛋总是先于鸡”。VMM首先必须知道如何映射内存,然后生成匹配的PTE。所以它总是知道如何维护页面错误。这是否回答了您的问题?