【发布时间】:2016-01-05 23:41:27
【问题描述】:
我正在阅读操作系统概念,我无法理解页表中有效-无效位的使用。每个进程都有自己的进程表,那么不是所有条目都有效吗?
附加到页表中每个条目的有效-无效位:
“有效”表示关联页在进程的逻辑地址空间中,因此是合法页
“invalid”表示页面不在进程的逻辑地址空间中
【问题讨论】:
-
换出到磁盘的页面怎么样?
标签: memory-management operating-system
我正在阅读操作系统概念,我无法理解页表中有效-无效位的使用。每个进程都有自己的进程表,那么不是所有条目都有效吗?
附加到页表中每个条目的有效-无效位:
“有效”表示关联页在进程的逻辑地址空间中,因此是合法页
“invalid”表示页面不在进程的逻辑地址空间中
【问题讨论】:
标签: memory-management operating-system
在按需分页中,仅将当前需要的页面带入主内存。
假设一个进程有5个页面:A、B、C、D、E和A和B在内存中。借助有效-无效位,系统可以在需要时知道页面C、D和E不在内存中。
简而言之:
有效-无效位中的 1 表示页面在内存中,0 表示页面可能无效或尚未进入内存。
【讨论】:
如果一个条目是无效的,那么MMU不会使用它来进行地址转换,从而在访问相应的内存区域时导致页面错误。
由于 MMU 不使用该条目,操作系统可以使用它来存储自己的信息,例如对文件系统实体(例如 inode 号)的引用,它存储数据以释放主内存对于其他一些进程(它交换了那个页面)
一旦出现页面错误,操作系统就可以做出反应,使用之前存储在该条目中的信息,将该数据从磁盘取回到主内存中。
当然,invalid bit 也被用来标记页面为无效:在大多数系统中,一个进程需要显式地向操作系统请求内存,访问尚未授予该进程的内存是访问冲突。
【讨论】:
有效表示关联页面在逻辑地址空间中。 无效表示关联页面不在逻辑地址空间中。
【讨论】:
每个进程都会有一个页表。 每页包含frame_number字段、有效/无效位等信息。
假设页表中没有有效/无效位条目。 现在 CPU 生成了一个逻辑地址,MMU 将转换为物理地址。 如何? 硬件将被触发并考虑转换相应页码槽的 frame_number 字段的值。无论是垃圾值、有效值还是零,都将考虑进行翻译。如果值为零或任何垃圾值,它可能会违反保护。
我们不希望这种情况也发生,因此我们需要指示有效性的特殊字段。
您可能希望删除页表中的条目而不是使用特殊字段,但这会导致很多混乱。现在您还可以包含页码字段来解决缺少有效位或无效位时的不一致问题。
【讨论】: