下载此文档

操作系统第一次实验报告.docx


文档分类:IT计算机 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
操作系统
课程实验报告
题目: Lab 2
学生姓名: 王家威
学生学号: 201308070217
专业班级: 智能 1302
指导老师: 李蕊
完成日期:2015年12月24日
实验内容
实现first_fit连续物理内存分配算法
实现寻找虚拟地址对应页表项
释放某虚地址所在页并取消对应二级页表的映射
实验原理
首次适配算法指存储管理器,沿着段链表进行搜索直到找到一个足够大的空闲区域。如果空闲区域和进程所需要的区域刚好相等那么刚好,如果大则将该区域分为两部分,一部分供进程使用,另一部分成为新的空闲区域。首次适配算法很快因为它减少了搜索的次数,只要搜索到就分配。
在改写代码前,需要弄清楚描述物理页的数据结构,双向链表以及管理物理页的数据结构Page。
双向链表结构用来表示每个页帧,链表头用free_area_t结构体表示,包含了一个list_entry的双向链表指针和纪录当前空闲页的个数的无符号整型变量nr_free。
typedef struct {
list_entry_t free_list; // the list header
unsigned int nr_free; // # of free pages in this free list
} free_area_t;
Page结构体是实现连续物理内存分配算法的关键数据结构,可通过此数据结构来完成空闲块的链接和信息存储,而基于这个数据结构的管理物理页数组起始地址就是全局变量pages
struct Page {
int ref; // 映射此物理页的虚拟页个数
uint32_t flags; // 物理页属性(空或不空)
unsigned int property; // 连续空页有多少(只在地址最低页有值,其余为0)
list_entry_t page_link; // 双向链接各个Page结构的page_link双向链表(用于释放)
};
实验内容与实现
练****1:实现first_fit连续物理内存分配算法;
整体思路:物理内存页管理器顺着双向链表进行搜索空闲内存区域,直到找到一个足够大的空闲区域,这是一种速度很快的算法,因为它尽可能少地搜索链表。如果空闲区域的大小和申请分配的大小正好一样,则把这个空闲区域分配出去,成功返回;否则将该空闲区分为两部分,一部分区域与申请分配的大小相等,把它分配出去,剩下的一部分区域形成新的空闲区。其释放内存的设计思路很简单,只需把这块区域重新放回双向链表中即可。
实现目标:重写default_init_memmap(),default_alloc_pages(),
default_free_pages()函数。
(1)default_init_memmap()函数用于内存块的初始化,base块中首页,通过指针遍历块中的n页,将每个页的flags位设置为0,表明当前页空闲可用,然后将页的property属性设置为set_page_ref
default_init_memmap(struct Page *base, size_t n) {
assert(n > 0);
struct Page *p = base;
for (; p != base + n; p ++)

操作系统第一次实验报告 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人w447750
  • 文件大小91 KB
  • 时间2017-10-20