2025年操作系统实验课第二次作业详解与实践报告.docx
湖南大学
HUNANUNIVERSITY
操作系统试验汇报
目录
一、内容………………………错误!未定义书签。
二、目的………………………错误!未定义书签。
三、试验设计思想和练习题………………错误!未定义书签。
练习0:填写已经有试验………错误!未定义书签。
练习1:实现first-fit持续物理内存分派算法(需要编程)……………错误!未定义书签。
练习2:实现寻找虚拟地址对应的页表项(需要编程)……错误!未定义书签。
练习3:释放某虚地址所在的页并取消对应二级页表项的映射(需要编程)错误!未定义书签。
运行成果………………………错误!未定义书签。
四、试验体会…………………错误!未定义书签。
一、内容
本次试验包括三个部分。首先理解怎样发现系统中的物理内存;然后理解怎样建立对物理内存的初步管理,即理解持续物理内存管理;最终理解页表有关的操作,即怎样建立页表来实现虚拟内存到物理内存之间的映射,对段页式内存管理机制有一种比较全面的理解。
二、目的
1.理解基于段页式内存地址的转换机制;2.理解页表的建立和使用措施;
3.理解物理内存的管理措施。
三、试验设计思想和练习题
练习0:填写已经有试验
使用eclipse中的diff/merge工具将试验1的代码填入本试验中代码中有“LABI”的注释对应部分。
练习1:实现first-fit持续物理内存分派算法(需要编程)
在实现firstfit内存分派算法的回收函数时,要考虑地址持续的空闲块之间的合并操作。提醒:在建立空闲页块链
表时,需要按照空闲页块起始地址来排序,形成一种有序的链表。也许会修改default_pmm.c中的default_init,
default_init_memmap,default_alloc_pages,default_free_pages等有关函数。请仔细查看和理解default_pmm.c中的注释。
请在试验汇报中简要阐明你的设计实现过程。请回答如下问题:你的firstfit算法与否有深入的改善空间。
解答:
分析思绪:
(1)数据构造:
A.每个物理页运用一种Page构造体表达,查看kern/mm/memlayout.h包括:
ref:引用计数,即映射此物理页的虚拟页个数;
tusofthe
tusofthepageframe
unsignedintproperty;
flags:描述物理页属性,bit0设置为1,即为“被保留”项,bit1设置为1,即为空闲项;
property:记录某持续内存块的大小,即地址持续的空闲页的个数:
page_link:将多种持续内存链接在一起的双向链表指针,即构建双向链接各个Page构造的双向链表。
|[~/moocos/ucore_lab/labcodes/Lab2/kern/mm]
moocos-vimmemlayout.h
intref;struct
intref;
uint32_t
uint32_tflags;
fitpmmanager
list_entry_tpage_link;
};
//pageframesreferencecounter//arrayofflagsthatdescribethesta
//pageframesreferencecounter
//thenumoffreeblock,usedinfirst//freelistlink
B.所有的持续内存空闲块可用一种双向链表管理,运用一种free_area_t构造体表达,查看kern/mm/memlayout.h
包括:
list_entry:双向链表指针,指向空闲的物理页:
nrfree:记录目前空闲页的个数的无符号整形变量。
_
Itypedefstruct{
list_entry_tfree_list;//thelistheader
}fr_sai_ti;ntnr_free;