【问题思考总结】缺页时页表怎么变?【操作系统中的缺页】

问题

在做题的时候,我认为页表是不能变更的,因为页表不就是指明了这个块在哪里吗?这个地址我访问,如果页表变了,岂不是访问不到了?

tips

  1. 页表中除了物理页号还有有效位(指明该页是否在内存中)
  2. 页表中的物理页号,包含了两个情况(第一种是物理页号,第二种是磁盘地址),这个也是我主要的误区。

缺页流程

缺页的时候首先,意思就是这个块不在内存中(通过有效位推断出来)。

情况1

如果这个时候有空闲的页框,就会分配内存(把一个块,从磁盘中,复制到内存中)。
在这个过程中,页表中原来页表项代表的是磁盘地址,更换后变成了内存地址(物理块号)
因此这个过程除了内存分配外,页表同样也被更改

情况2

然后如果没有空闲的页框,就根据算法,把一个块调出到磁盘,把一个块换入磁盘,那么这两个块对应的页表项都要进行更改

实际上,页表项是干什么的呢,页表项就是指向一个固定的块,但是这个块有的时候是在磁盘中,有的时候是在内存中,在内存中的时候,可能在不同的地方,在磁盘中的时候也可能在不同的地方(不知道磁盘中可不可以移动),唯一不变的就是这个页表项指向的永远是同一个页

问题解决

访问地址的时候,用的是虚拟地址,包含页号和页内偏移,这个页号实际上就是对于一个固定的页表项的访问,而又因为这个页表项指向的永远是同一个页,因此,这个页表项不管怎么变也不会影响访问那一个块,只不过是地址改变了。

最开始的问题实际上是没有搞清楚映射,不知道一个块在内存中可以移动。

如有错误,恳请指正。

你可能感兴趣的:(笔记,操作系统,考研,操作系统)