昆明理工大学信息工程与自动化学院学生实验报告
( 2010 —2011 学年 第 二 学期 )
课程名称:操作系统 开课实验室:444 2011 年 5 月 12 日 年级、专业、计科103班 学号 201010405312 姓名 班 实验项目名称 教师评 教师签名: 存储管理 指导教师 杨云飞 成绩 语 年 月 日 一、实验目的
存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。通过本次实验,要求学生通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解,通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
二、实验原理及基本技术路线图(方框原理图)
用C或C++语言模拟实现请求式分页管理。要求实现:页表的数据结构、分页式内存空间的分配及回收(建议采用位图法)、地址重定位、页面置换算法(从FIFO,LRU,NRU中任选一种)。
主要变量及数据结构的定义:
(1)Free 0 //空闲状态 (2)Busy 1 //已用状态d (3)OK 1 //完成 (4)ERROR 0 //出错 (5)int ID; //分区号d (6)long size; //分区大小 (7)long address; //分区地址 (8)int state; //状态
-1-
(9)struct DuLNode *prior; //前趋指针 (10)struct DuLNode *next; //后继指针 (11)DuLinkList block_first; //头结点 (12)DuLinkList block_last; //尾结点 函数的说明:
alloc(int);//内存分配 free(int); //内存回收
LRU(int,int);//最近最少使用算法函数NUR(int,int); //最佳适应算法函数 void show();//查看分配 Status Initblock();//开创空间表 show() 显示函数 main()主函数
流程图及各功能图:
-2-
开始内存数据初始化,物理块0
-3-
检索完否 Y
N m.size>u.size? 继续检索下一个表项 返回 从开始查表
Y
返回 将该分区分配给请求者修改有关数据结构 从该分区中划出u.size大小的分区 将该分区从链中移除 m.size-u.size≦size? 分配主存示意图(1)
-4-
N 有 与 归 还 区 下 Y 有与归还区下N 邻的空闲区? Y Y 有与归还区下邻的空闲区? 邻的空闲区? L:=L+下邻空闲区长度 查空闲区说明表 开始 L:=归还区长度 S:=归还区起址 N 找一“空表目”把下邻空闲区登记栏登记始址:=S 栏中状态置成“空表 长度:=L 把下邻空闲区登目” 状态:=“未分配” 记栏中始址:=S 按地址顺序调整和 紧缩空闲区说明表 上邻空闲区登记栏中长度增加L 长度:=L 结束 (2)主存回收示意图
提示:可先用动态申请的方式申请一大块空间,然后假设该空间为内存区域,对该空间进行页框的划分、分配等。
三、所用仪器、材料(设备名称、型号、规格等)。 计算机一台
四、实验方法、步骤
-5-