资源简介
模拟计算机主存储器空间的分配和回收,设计一个在可变分区管理方式下的最先适应分配算法的的分配与回收程序。
代码片段和文件信息
import java.util.Scanner;
class MemoryUnit{
public boolean state = false;//内存单元的状态(0表示已使用 1表示未使用)
}
class Memory{
public MemoryUnit[] memories;//表示内存大小
Memory(int n){
//初始化内存大小
memories = new MemoryUnit[n];
for (int i = 0; i < n; i++){
memories[i] = new MemoryUnit();
}
}
}
class FirstFit{//采用最先使用算法对内存进行分配
public Memory memory;
public int mSize;//表示内存大小
public Job[] jobs;
public FirstFit(int mSize Memory memory Job[] jobs){
this.mSize = mSize;
this.memory = memory;
this.jobs = jobs;
}
public void alloc(int jOrder){//为job分配内存
int i j k count;
for (i = 0; i < mSize; i++){
//先遍历整个内存寻找最先适应的内存区域,将job装载进内存
if(memory.memories[i].state == false){
//找到未被占用的第一个内存地址,并计算从这个地址开始连续单元长度
//判断大小是否可以装载进job
count = 0;
for (j = i; j < mSize; j++){
if(memory.memories[j].state == true){
break;
}
count++;
}
if(count >= jobs[jOrder].len){
System.out.println(“~~~~第“ + jOrder + “个job分配成功!~~~~“);
System.out.println();
jobs[jOrder].state = true;
jobs[jOrder].start = i;//设置job在内存中的起始单元
//连续的内存单元长度大于job长度 可以装载进去
for(k = i; k < i + jobs[jOrder].len; k++){
memory.memories[k].state = true;
}
emptyMemory();
}
//i从j的地址开始继续循环
i = j;
}
}
if (jobs[jOrder].state == false){
System.out.println(jOrder + “~~~~分配失败!~~~~“);
}
}
public void back(int jOrder){//释放job所占用的内存
int i j endLocation = 0;
boolean flag = false;//用来标记是否找到了下一个job
//回收的时候只能回收到下一个job的起始位置
for(i = jobs[jOrder].start + 1; i < mSize; i++){
endLocation = 0;
for (j = 0; j < jobs.length; j++){
//遍历每一个job 寻找在内存中当前job的下一个job
if (jobs[j].start == i && j != jOrder){
endLocation = jobs[j].start--;
flag = true;
break;//跳出内循环
}
}
if(flag == true){//如果找到了下一个job
i = mSize;
}
}
//判断endlocation是否超出当前job的地址范围
if(endLocation > jobs[jOrder].start + jobs[jOrder].len - 1){
endLocation = jobs[jOrder].start + jobs[jOrder].len;
}
for (i = jobs[jOrder].start; i < endLocation; i++){
memory.memories[i].state = false;
}
System.out.println(“~~~~回收成功~~~~“);
emptyMemory();
}
public void emptyMemory(){//打印出当前空闲的内存单元区域
int i j k count;
System.out.println(“<======空闲的内存区域======>“);
相关资源
- 操作系统作业 (pv,作业管理,等5个
- 重庆大学操作系统试卷2015
- 操作系统 生产者消费者问题 Java代码
- 基于安卓操作系统的应用软件开发论
- 基于ARM的11种嵌入式操作系统大盘点
- 【JAVA版】操作系统课程设计题目四单
- Java模拟操作系统实验之四种进程调度
- 操作系统课程设计题目四单处理器系
- 2017-广东工业大学操作系统课程设计银
- 页面置换算法 操作系统作业 java模拟
- 操作系统,页面置换算法
- 用JAVA 编写的一个模拟操作系统含文件
- JAVA-计算机操作系统 多级反馈队列调
- 操作系统 java模拟
- 操作系统概念Linux虚拟机及源代码
- 操作系统实验一进程调度
- 操作系统课程设计 java编写 文档+代码
- 操作系统课程设计--模拟进程调度管理
- Weka 3.7.9 windows操作系统
- 操作系统课程设计——模拟生产者与
- 纯java编写的操作系统
- 操作系统 进程调度算法实现Android实现
- 基于Java的移动臂磁盘调度算法
- Java模拟银行前后台简单操作系统
- 用三个线程分别计算平均值,最大值
- 天津理工操作系统实验三java带界面
- 东北大学软件学院最新操作系统实验
- 操作系统实验报告作业调度及银行家
- java实现的仿UNIX操作系统课设
- 基于Java的移动臂磁盘调度算法动态显
评论
共有 条评论