1.掌握内存管理的基本功能和分区法内存分配的基本原理。
2.学会windows操作系统下使用c语言函数和系统调用进行编程的方法。 3.利用c语言设计实现分区法内存分配算法。
4.验证无虚存的存储管理机制。 二、实验要求
1.学生应完成如下章节的学习:进程和线程、调度、存储管理。
2.在操作系统平台上,使用c语言编程,调用相关系统调用进行设计实现。 三、实验内容
1.创建空闲存储管理表和模拟内存。
2.设计并实现一个内存分配程序,分配策略可以分别采用最先适应算法、最佳适应算法和最坏适应算法等,并评价不同分配算法的优劣。 3.提供一个用户界面,利用它用户可输入不同的分配策略。
4.进程向内存管理程序发出申请、释放指定数量的内存请求,内存管理程序调用对应函数,响应请求。 四、实验方案指导
该实验方案由以下几个关键设计项目组成。 1.设计实现一个空闲分区表。
2.设计实现模拟内存。
考虑实现的便利,本方案不访问真正的内存。定义一个字符数组char
mm[mem_size]或使用Linux系统调用mm=malloc(mem_size),用来模拟内存。
利用指针对模拟内存进行访问。
3.设计一组管理物理内存空间的函数。用户接口由以下三个函数组成: void*mm_request(int n)
申请n个字节的内存空间。如申请成功,则返回所分配空间的首地址;如不能满足申请,则返回空值。 void mm_release(void*p)
释放先前申请的内存。如果释放的内存与空闲区相邻,则合并为一个大空闲区;如果与空闲区不相邻,则成为一个单独的空闲区。 void*mm_init(int mem_size)
内存初始化。返回mm指针指向的空闲区。 4.设计实现不同策略的内存分配程序。
对于采用不同分配策略的内存管理程序,从以下两个方面进行调度程序性能的比对:内存利用率以及找到一个合适的分配空间所需查找的步骤。
设置一个模拟实验。分别构建一个随机生成的请求与释放队列。释放队列中的操作总是得到满足,队列总为空;请求队列的操作能否被满足,取决于空闲区能否满足申请的空间大小。若不能满足,则该操作在队列中等待相应释放操作唤醒。请求队列采用FIFO管理,以避免饥饿现象的发生。
内存管理程序应对内存初始化,随机设定内存空间的占有、空闲情况,随机设定申请和释放的操作队列。调用释放操作开始运行,调用申请操作,如能满足,则分配空间,否则等待释放操作唤醒。
下面给出一个模拟内存管理的程序框架(伪码形式)。可对性能数据指标进行统计。
============================================================= for(i=0;i /*设定模拟程序执行次数*/ /*循环调用请求操作,直到请求不成功 get size n of next request; /*设定请求空间大小*/ /*调用请求操作*/ /*请求成功,循环继续*/ /*统计内存使用率*/ /*释放某空间p*/ mm_request(n); }while(request successful); record memory utilization; select block p to be release; release(p); } /*调用释放操作*/ ============================================================= 以上程序由主循环控制固定次数的模拟步骤。每次循环,程序完成如下处理步骤:内循环尽可能多地满足内存请求,请求内存大小值随机生成。一旦请求失败,挂起内存管理程序,直至释放操作被执行。此时进行系统内存利用率的统计、计算,随机挑选一个内存分配空间完成释放操作。本次主循环执行完毕,开始下一次循环。 需要在程序中完成以下设计:确定请求分配空间大小,统计性能数据,选择一个内存区释放。 以下部分由学生填写: 1. 程序流程图 (1) 最先适应算法流程图 (2) 最佳适应算法流程图。 (3) 最坏适应算法流程图。 2. 实验结果 (1) 分区运行结果图 (2) 分区成功后运行结果图 (3) 为分区申请资源运行结果图 (4) 最先适应算法,为分区申请1个单位的资源运行结果图 (5) 最先适应算法,为分区申请1个单位的资源运行结果图 (6) 最先适应算法,为分区申请1个单位的资源运行结果图 (7) 最先适应算法,继续为分区申请资源失败运行结果图 (8) 最佳适应算法,为分区申请1个单位的资源运行结果图 (9) 最坏适应算法,为分区申请1个单位的资源运行结果图结果分析 Xxxx。。。。。。 实验三 虚拟存储器管理之页面置换算法 一、实验目的 1.掌握内存管理基本功能和请求分页式管理的基本原理以及页面置换算法。 2.学会在Windows或Linux操作系统下使用C函数和系统调用的编程方法。 3.掌握利用C语言设计实现不同置换策略的页面置换算法。 4.验证虚存存储管理机制及其性能。对于生成的引用串,计算、比对不同页面置换算法的缺页率。 二、实验要求 1.学生应完成如下章节的学习:进程和线程、调度、存储管理。 2.使用C语言编程,利用相关系统调用实现设计。 三、实验内容 1.创建空闲存储管理表、模拟内存、页表等。 2.提供一个用户界面,用户利用它可输入不同的页面置换策略和其他附加参数。 3.运行置换程序,输出缺页率结果。 四、实验方案指导 熟悉页面置换算法及其实现,了解计算机系统性能评价方法,编制页面置换算法的模拟程序。方案设计重点提示如下。 1.假定系统有固定数目的内存块F,物理块号依次为0~F-l。进程的大小为P页,其逻辑页号依次为0~P-l。随机生成一个引用串RS,即从0~P-l组成的整数序列。定义一个整型数组int M[F]表示所有物理块,如果M[i]=n,表示逻辑页n存放在物理块i中。 2.生成引用串。用随机数方法产生页面走向,页面走向长度为L。 3.根据页面走向,分别采用FIFO和LRU算法进行页面置换,设计一个函数自动统计缺页率。 4.假定可用内存块和页表长度(进程的页面数)分别为m和k。初始时,进程的页面都不在内存。 5.参考其他设计项目,将不同置换算法设计实现为函数,能在界面上方便调用执行。 以下部分由学生填写: 1. 程序流程图
相关推荐: