文档详情

2025年操作系统实验课第二次作业详解与实践报告.docx

发布:2024-12-28约1.5万字共23页下载文档
文本预览下载声明

湖南大学

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;

显示全部
相似文档