1 / 14
文档名称:

操作系统内存分配算法模拟实现.docx

格式:docx   大小:88KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统内存分配算法模拟实现.docx

上传人:cjc201601 2021/10/23 文件大小:88 KB

下载得到文件列表

操作系统内存分配算法模拟实现.docx

相关文档

文档介绍

文档介绍:.专业整理.
.学****帮手.
实验名称
内存分配与回收算法实现
同组人姓名
实验性质
□基本操作-验证性□综合性 □设计

实验日期
2010-5-17
实验成绩
教师评价:
实验预****口 实验操作口 实验结果口 实验报告口 其它口
教师签名:
一、实验目的及要求
1)掌握为实现多道程序并发执行,操作系统是如何通过作业调度选择作业进
入内存
2)系统如何为进入内存的作业分配内存空间,实现多道作业何时驻留内存,
就绪进程队列中的多个进程是如何以分式方式共享 CPU作业运行完成离开
系统时,系统如何进行内存回收,计算进程周转时间。
3)掌握各种调度算法,以及实现所需的各种数据结构。
二、实验内容
根据给定的动态分区分配算法流程图,用你熟悉的计算机编程语言编写一程序,该程 序实现内存的合理分配后回收。
三、主要设备及软件
PC Windows2000操作系统、Linux操作系统
.专业整理.
.学****帮手.
四、实验流程、操作步骤或核心代码、算法片段 1、分配算法流程出
空闲分区块类:class FreeBlock
空闲分区链类:class FreeList
.专业整理.
.学****帮手.
内存分配回收算法类:class MemoryMa nager
测试类(主类):class TestForMemManage
②具体实现
请允许我先列出核心部分,内存分配回收算法类的实现:
package in nage;// 个人包
import nner;
public class MemoryMa nager {
FreeList flist; // 空闲分区类对象
public MemoryMa nager(){
flist = new FreeList();
nitFBIock();
}
public void memAllocati on (i nt size, Stri ng n ewjob _n ame){// 内存分酉己
(首次适应算法)
FreeBlock q=;
FreeBlock p=. next;
while— != n ull){
if(size v= 0){
(H\n
申请的空间不能小于1!H);
break;
)
if( == false && >= size){
q = new FreeBlock( - size);
= size;
state = true;
job_ name = newjob_n ame;
n ext = ext;
ext = q;
break; 〃完成分配
}
else
p = ext; 〃 移动到足够分配的空闲块
.专业整理.
.学****帮手.
}
)
if(p == n ull){
if( >= size){ ntl n(" 目前尚无足够大的空闲块,系统将进行
重定位操作
relocation(); // 重定向
memAllocation(size,new」ob_name);
//重新分配内存
} else{ (^^ 作业"+new job name+”内存尚未分配成
功!】
} ) else{〃分配内存后可能存在大小为 0的空间,将其清除
作业"+new_job_name+”内存分配成功!〉 p = .n ext; 〃 q = ; whileg != n ull){ if( == 0){
(p);
} p = ext;
}
}
)
private void memRecovery(FreeBlock target){ // 内存回收
FreeBlock p = .n ext;
.专业整理.
.学****帮手.
while(p != null){
〃回收区与插入点的前一个空闲分区相邻接
if( == target && == false){
+= ;
ext = target.