项目组成与执行流
项目组成
页面定义
kern/mm/memlayout.h
:修改了struct Page
,增加了两项pra_*
成员结构,其中pra_page_link
可以用来建立描述各个页访问情况(比如根据访问先后)的链表。在本实验中会涉及使用这两个成员结构,以及le2page
等宏。
虚拟内存信息
kern/mm/vmm.[ch]
:vmm.h
描述了mm_struct
,vma_struct
等表述可访问的虚存地址访问的一些信息,下面会进一步详细讲解。vmm.c
涉及mm,vma
结构数据的创建/销毁/查找/插入等函数,这些函数在check_vma
、check_vmm
等中被使用,理解即可。而page fault
处理相关的do_pgfault
函数是本次实验需要涉及完成的。
替换算法框架
kern/mm/swap.[ch]
:定义了实现页替换算法类框架struct swap_manager
。swap.c
包含了对此页替换算法类框架的初始化、页换入/换出等各种函数实现。重点是要理解何时调用swap_out
和swap_in
函数。和如何在此框架下连接具体的页替换算法实现。
FIFO算法
kern/mm/swap_fifo.[ch]
:演示的算法实现。
Clock算法
kern/mm/swap_clock.[ch]
:需要自己实现的算法,有注释提示。
执行流
结合前面所述自行理解、总结。
最后更新于