存储管理实验报告 - 范文中心

存储管理实验报告

03/07

GDOU-B-11-112

广东海洋大学学生实验报告书(学生用表)

实验名称 存储管理 学院(系) 学生姓名

课程名称

专业

学号

操作系统 课程号 班级 实验日期

软件学院

软件工程 实验地点

一、实验目的

修改MINIX操作系统内存管理的源程序,将MINIX的首次适应算法改为最佳适应和最差适应算法,对修改之后的MINIX源代码进行重新编译和重新启动,以测试你修改的正确性。 二、实验内容

1、 打开Minix3,进入alloc.c所在目录

2、修改原算法为最佳适应算法(BEST_FIT)和最差适应算法(WORST_FIT)的程序如下: #include "pm.h"

#include #include #include #include #include "mproc.h"

#include "../../kernel/const.h" #include "../../kernel/config.h" #include "../../kernel/type.h"

#define NR_HOLES (2*NR_PROCS) /* max # entries in hole table */ #define NIL_HOLE (struct hole *) 0

PRIVATE struct hole { struct hole *h_next; /* pointer to next entry on the list */ phys_clicks h_base; /* where does the hole begin? */ phys_clicks h_len; /* how big is the hole? */ } hole[NR_HOLES];

PRIVATE u32_t high_watermark=0;

PRIVATE struct hole *hole_head; /* pointer to first hole */

PRIVATE struct hole *free_slots;/* ptr to list of unused table slots */ #define swap_base ((phys_clicks) -1)

FORWARD _PROTOTYPE( void del_slot, (struct hole *prev_ptr, struct hole *hp) ); FORWARD _PROTOTYPE( void merge, (struct hole *hp) ); #define swap_out() (0)

/*===========================================================================* * alloc_mem *

*===========================================================================*/ PUBLIC phys_clicks alloc_mem(clicks) phys_clicks clicks; /* amount of memory requested */

#define USING_BEST_FIT #ifdef USING_BEST_FIT {

//先找到第一个满足要求的空洞,

//再以第一个为标准寻找最适合的空洞。 //当最适合的空洞完全吻合

//就直接划给它,当空洞较大时就切割。

//首先注册目标指针、目标前一个指针、头指针 //记录目标大小和目前最适合大小 register struct hole *hp;

register struct hole *prevAim_ptr; register struct hole *Aim_ptr; phys_clicks old_base;

//如果循环一次都没找到

//就把可以退出内存的进程赶出去 //再循环 do{

hp = hole_head;

prevAim_ptr = NIL_HOLE; Aim_ptr = NIL_HOLE;

for(;hp != NIL_HOLE && hp->h_base h_next) {

//find the best hole if(hp->h_len == clicks) {

old_base = hp->h_base; /* remember where it started */ hp->h_base += clicks; /* bite off */ hp->h_len -= clicks; /* ditto */

del_slot(prevAim_ptr, hp);/* Delete the hole which used up completely. */

/* Remember new high watermark of used memory. */ if(hp->h_base > high_watermark) high_watermark = hp->h_base;

return(old_base); }

//当从没记录过合适内存时

//把遇到的第一个合适节点保存在aim中

if(hp->h_len > clicks && Aim_ptr == NIL_HOLE) {

Aim_ptr=hp; }

//当找到一个比原来aim更合适的空间 //记录新的空间

if(hp->h_len > clicks && hp->h_len h_len) {

//mark it down Aim_ptr=hp; } }

//we found it

if(Aim_ptr != NIL_HOLE) {

old_base = Aim_ptr->h_base; /* remember where it started */ Aim_ptr->h_base += clicks; /* bite off */ Aim_ptr->h_len -= clicks; /* ditto */

/* Remember new high watermark of used memory. */ if(Aim_ptr->h_base > high_watermark) high_watermark = Aim_ptr->h_base;

return(old_base); }

}while(swap_out()); return(NO_MEM); } #endif

#ifdef USING_WORST_FIT {

//先找到第一个满足要求的空洞,

//再以第一个为标准寻找最适合的空洞。 //当最适合的空洞完全吻合

//就直接划给它,当空洞较大时就切割。

//首先注册目标指针、目标前一个指针、头指针 //记录目标大小和目前最适合大小 register struct hole *hp;

register struct hole *prevAim_ptr; register struct hole *Aim_ptr; phys_clicks old_base;

//如果循环一次都没找到

//就把可以退出内存的进程赶出去 //再循环 ; do{

hp = hole_head;

prevAim_ptr = NIL_HOLE; Aim_ptr = NIL_HOLE;

for(;hp != NIL_HOLE && hp->h_base h_next) {

//当从没记录过合适内存时

//把遇到的第一个合适节点保存在aim中

if(hp->h_len >= clicks && Aim_ptr == NIL_HOLE) {

Aim_ptr=hp; }

//当找到一个比原来aim更合适的空间 //记录新的空间

if(hp->h_len >= clicks && hp->h_len > Aim_ptr->h_len) {

//mark it down Aim_ptr=hp; }

} //we found bigest if(hp->h_next==NIL_HOLE) { old_base =Aim_ptr->h_base; Aim_ptr->h_base+=clicks; Aim_ptr->h_len-=clicks;

/* Remember new high watermark of used memory. */ if(Aim_ptr->h_base > high_watermark) high_watermark = Aim_ptr->h_base;

return(old_base); }

}while(swap_out()); return(NO_MEM); }

#endif

3、 保持当前目录不变(即\usr\src\servers\pm),输入make命令,编译程序

4、重新编译整个minix,生成新的minix映像文件,并将minix映像文件复制到 \boot目录之中。 输入如下命令: cd \usr\src\tools make image

cp image \boot\test1

5、测试新操作系统:重启Minix3,按ESC进入如下画面,输入如图最后两行指令进入新系统

三、实验总结

通过这次实验,我了解了Minix3存储管理的首次适应算法,学会了将其算法修改为最佳适应和最差适应算法,并学会了如何激活新修改的存储管理算法。进一步理解了操作系统的存储管理,加强了实验能力。

成绩 指导教师 日期

注:请用A4纸书写,不够另附纸。


相关内容

  • 存储器实验报告
    存储器扩展实验报告 班级 姓名 学号 日期 一. 相关知识: 1. 教学机配置了6个存储器芯片插座,其中4个28芯插座可插只读存储器,2个24芯插座可插静态随机存储器6116. 2. 在教学机中,已经放置了2片8K×8位的ROM和2片2K× ...
  • 实验二(存储管理)虚拟页式管理
    实验二 虚拟页式管理 1.实验内容:模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO )处理缺页中断: 2.要求: ① 指令序列的设定可以执行拟定,格式如表3: ② 在完成了FIFO 换页策略后,可以选做LRU ...
  • 物流实验室实训报告
    物流实验室实践报告 课题名称:物流实验室参观报告 学院系别: 指导老师: 专业:工商管理 班级:12级工商2班 组号:1组 成员: 时间:2014年12月12日(第15周)上午9.30-10.20 地点:七系教学楼A201物流实验室 一.序 ...
  • 线性表及其应用实验报告
    数据结构实验报告 实验名称:线性表及其应用 班 级:12级电气本2 学 号:2012081227 姓 名:赵雪磊 指导教师:梁海丽 日 期:2013年9月9日 数学与信息技术学院 一. 实验目的 1.掌握线性表的概念,理解线性表的顺序.链式 ...
  • 可行性分析报告-范例
    可行性分析报告 实验目的 掌握可行性研究的步骤,练习撰写可行性研究报告. 实验工具 Word2000/2003 实验内容 1.分析问题描述,给出问题定义: 2.进行可行性研究,使用Word撰写可行性研究报告. 实验要求 1.硬件基本配置:I ...
  • 数据结构试验报告-文学研究助手
    实验报告:文学研究助手 题目:编写一个统计特定单词在文本中出现的次数和位置的程序 一. 需求分析 1. 文本串非空并以文件的形式存放在根目录中,统计匹配的词非空.文件名和需要匹配的词集均有用户从键盘输入: 2. 单词都是由某种类型字符的序列 ...
  • 生产系统仿真实验实验指导书
    生产系统仿真实验 实验指导书 江思定 编写 浙江科技学院经济管理学院管理科学与工程系 2008年7月 生产系统仿真实验指导书 Instruction of production system emulation experiment 一.实 ...
  • 地质信息技术
    第六章 地质信息技术 前 言 当前,在加拿大.澳大利亚等西方主要矿业大国,矿业软件是矿山生产过程中必不可少的重要工具,特别是在地质数据分析.提高矿山生产与管理效率等方面发挥了巨大作用.当前国外比较著名的商业矿业软件有Surpac .Micr ...
  • 二级保密资格标准
    武器装备科研生产单位二级保密资格标准 (2009年新修订) 1适用范围 1.1本标准为武器装备科研生产单位二级保密资格审查认证和复查的依据. 2实施原则 2.1积极防范,突出重点,严格标准,严格管理. 2.2业务工作谁主管,保密工作谁负责. ...
  • 定时器中断方式实验报告
    定时器中断方式实验报告 通信0203班 王建超 02211272 一.中断初始化及服务程序的编写 5402DSP中断有两大类,一类是可屏蔽中断:可以用软件来屏蔽或开放的硬件和软件中断.在5402中有INT3 ~INT0(外部中断),BRIN ...