Update lab3_5_2_page_swapping_principles.md

This commit is contained in:
chyyuu 2019-04-04 01:09:32 +08:00 committed by GitHub
parent 1eff608645
commit e360e6fec5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1 additions and 1 deletions

View File

@ -20,7 +20,7 @@
如果一个页被置换到了硬盘上那操作系统如何能简捷来表示这种情况呢在ucore的设计上充分利用了页表中的PTE来表示这种情况当一个PTE用来描述一般意义上的物理页时显然它应该维护各种权限和映射关系以及应该有PTE\_P标记但当它用来描述一个被置换出去的物理页时它被用来维护该物理页与 swap 磁盘上扇区的映射关系,并且该 PTE 不应该由 MMU 将它解释成物理页映射(即没有 PTE\_P 标记),与此同时对应的权限则交由 mm\_struct 来维护,当对位于该页的内存地址进行访问的时候,必然导致 page fault然后ucore能够根据 PTE 描述的 swap 项将相应的物理页重新建立起来,并根据虚存所描述的权限重新设置好 PTE 使得内存访问能够继续正常进行。
如果一个页4KB/页被置换到了硬盘某8个扇区0.5KB/扇区该PTE的最低位--present位应该为0 (即 PTE\_P 标记为空表示虚实地址映射关系不存在接下来的7位暂时保留可以用作各种扩展原来用来表示页帧号的高24位地址,恰好可以用来表示此页在硬盘上的起始扇区的位置(其从第几个扇区开始)。为了在页表项中区别 0 和 swap 分区的映射,将 swap 分区的一个 page 空出来不用也就是说一个高24位不为0而最低位为0的PTE表示了一个放在硬盘上的页的起始扇区号见swap.h中对swap\_entry\_t的描述
如果一个页4KB/页被置换到了硬盘某8个扇区0.5KB/扇区该PTE的最低位--present位应该为0 (即 PTE\_P 标记为空表示虚实地址映射关系不存在接下来的7位暂时保留可以用作各种扩展包括原来高20位页帧号的高24位数据,恰好可以用来表示此页在硬盘上的起始扇区的位置(其从第几个扇区开始)。为了在页表项中区别 0 和 swap 分区的映射,将 swap 分区的一个 page 空出来不用也就是说一个高24位不为0而最低位为0的PTE表示了一个放在硬盘上的页的起始扇区号见swap.h中对swap\_entry\_t的描述
```
swap_entry_t