本文在页表方面参考了这篇博客,特别鸣谢!
1. 页帧和页框
页帧(page frame)是内存的最小可分配单元,也开始称作页框,Linux下页帧的大小为4KB。
内核需要将他们用于所有的内存需求,例如有些页帧需要将物理内存映射到用户模式进程的虚拟地址空间。为了有效管理这些操作,就需要区分当前使用的页帧和空闲的可用页帧。通过数据结构struct page来实现
缺页中断:OS通过页表寻址时,发现目标内容不在物理内存中
页表有标记位,通过标记位来判断,而且这时页表填的是文件在磁盘中的地址(可以理解为LBA地址)
缺页中断处理流程:
- 申请内存
- 在磁盘中找到目标内容的地址
- 把内容加载到内存指定的位置
- 重新填充页表
- 返回用户,终止异常