视觉和物理记忆分为几页。要检查页面是否有效,页表条目中有一个有效位。但是在一个页面中,MMU如何知道地址是否有效?例如,属于堆的一部分的页面。并非该页面的所有地址都有效,那么MMU如何检查地址以查看其是否有效?
答案 0 :(得分:0)
页面是MMU存储信息的最小内存单位;这基本上是'page'的定义。因此,页面中的所有地址都同样有效。如果页面的某些部分是您无法访问的内容(可能在任何已分配的对象之外),那么这不是MMU可以检测到的内容。
答案 1 :(得分:0)
逻辑内存分为PAGES。物理内存分为PAGE FRAMES。页表:
内存访问的有效性取决于访问类型,当前处理器模式和页表状态。
逻辑上,当处理器进行内存访问时:
查找逻辑页面的页表条目。可能不存在页表条目。在线性页表中,可以限制表的大小。在多级页表中,可能没有页面的嵌套表。如果有相应的条目=>访问违规。
检查页表条目是否表示有效页面。这通常使用有效位来完成,但还有其他方法可以执行此操作。如果页面无效=>访问违规。
检查当前处理器模式下页面是否允许访问类型(读/写/执行)。如果不是=>访问违规
检查逻辑页面是否映射到物理页面框架(这通常是作为步骤#3的一部分完成的)。如果不是=>页面错误
A"堆"只是记忆。一个进程可以同时拥有多个堆。堆管理器将页面映射到逻辑地址空间,然后管理这些页面。堆甚至不需要驻留在连续的内存中。
高级内存图通常显示"堆"这些都是对正在发生的事情的粗略简化。