GeekOS-project4
一、项目设计目的
了解虚拟存储器管理设计原理,掌握请求分页虚拟存储管理的具体实现技术。
二、项目设计要求
1.在<~/geekos-0.3.0/src/project4/src/geekos/paging.c>文件中编写代码完成以下函数:
(1) Init_VM()(defined in )函数将建立一个初始的内存页目录和页表,并且安装一个页面出错处理函数。
(2) Init_Paging()函数(定义在src/geekos/paging.c)初始化操作页面调度文件所需的所有数据结构。就如前面说到的,Get_Paging_Device()函数指定分页调度文件定位在哪一个设备和占用磁盘块的地址范围。
(3) Find_Space_On_Paging_File()函数应该在分页调度文件里面找到一个空闲的足够大的页空间。它将返回这个大块的索引,或者当没有合适的空间就返回-1。
(4)Free_Space_On_Paging_File()函数将释放由Find_Space_On_Paging_File()函数在分页调度文件里所分配的的磁盘块。
(5)Write_To_Paging_File()函数将把存储在内存的一页数据写出到分页调度文件里。
(6)Read_From_Paging_File()函数将读取分页调度文件里的一页数据到内存空间。
2.在<~/geekos-0.3.0/src/project4/src/geekos/uservm.c>文件中编写代码完成以下函数:
(1) Destroy_User_Context()释放进程所占用的所有内存和其它资源。
(2) Load_User_Program()装载可执行文件到内存里,创建一个就绪的用户地址空间,功能类似于分段系统的实现。
(3) Copy_From_User()从一个用户缓冲区复制数据到一个内核缓冲区。
(4) Copy_To_User()从一个内核缓冲区复制数据到一个用户缓冲区。
(5)Switch_To_Address_Space()利用它装载相应页目录和LDT来切换到一个用户地址空间。