资源简介
课题八:存储管理---动态分区分配算法的模拟:
要求设计主界面以灵活选择某算法,且以下算法都要实现:首次适应算法、循环首次适应算法、最佳适应算法;
代码片段和文件信息
package system;
public class best_fit {
static int change;//用于交换数据
static int num = 0;//作业号
static int []count;//空闲分区大小
static int []new_begin;//存储分区分配后的首址
static int []already_begin;//已分配的作业首址
static int []flag;//标记属于某一空闲分区
static boolean is_run = false;//是否有作业分配主存
static String str = ““;
public static void best_fit( int n int m int job[] int begin[] int end[]){
count = new int[m];//空闲分区大小
boolean is_fit = true;
flag = new int[m];
new_begin = new int[m];//存储分区分配后的首址
already_begin = new int[m];
is_run = true;
for( int i = 0; i < m; i ++){
new_begin[i] = begin[i];
}
System.out.print(“\n---最佳适应算法过程如下:\n“);
for( int i = 0; i < m; i ++ ){//计算空闲分区大小并保存
count[i] = end[i] - new_begin[i];
flag[i] = i;
}
while(num < n){
str = ““;
is_fit = false;
System.out.print(“将所有空闲分区按其容量以从小到大顺序形成一空闲分区链(只显示空闲分区大小):“);
for( int i = 0; i < m-1; i ++){
for( int j = 0; j < m-i-1; j ++){
if( count[j] > count[j+1] ){
change = count[j];
count[j] = count[j+1];
count[j+1] = change;
change = flag[j];
flag[j] = flag[j+1];
flag[j+1] = change;
}
}
}
for( int i = 0; i < m; i ++){
count[i] = end[flag[i]] - new_begin[flag[i]];
if( i != m-1 ){
str =str + “|“ + count[i] + “|——>“;
}
else{
str =str + “|“ + count[i] + “|“;
}
}
System.out.print(str);
for( int i = 0; i < m; i ++){//为作业分配存储空间
if( job[num] <= count[i] ){
already_begin[num] = new_begin[flag[i]];
new_begin[flag[i]] = new_begin[flag[i]] + job[num];
count[i] = end[flag[i]] - new_begin[flag[i]];
is_fit = true;
System.out.print(“作业“ + (num+1) + “已成功分配“ + job[num] + “KB存储空间!“);
num ++;
break;
}
}
if( is_fit == false ){
already_begin[num] = -1;
num ++;
System.out.print(“找不到合适的空闲分区分配给作业“ + num + “!“);
}
}
}
public static void callback( int n int m int job_num int job[] int begin[] int end[] ){//回收主存
if( !is_run ){
System.out.print(“\n作业“ + job_num + “不在主存中!“);
}
else{
for(int i = 0; i < m-1; i ++){
for(int j = 0; j < m-i-1; j ++){
if(flag[j] > flag[j+1]){
change = count[j];
count[j] = count[j+1];
count[j+1] = change;
}
}
}
if( already_begin[job_num-1] == -1){
System.out.print(“\n作业“ + job_num + “不在主存中!“);
}
else{
for( int i = 0; i < m; i ++){
if( begin[i] <= already_begin[job_num-1] && end[i] > already_begin[job_num-1]){
if( job[job_num-1] + count[i] == end[i] - begin[i] ){
count[i] = end[i] - begin[i];
already_begin[job_num-1] = -1;
}
else if( already_begin[job_num-1] + job[job_num-1] == new_begin[i] ){
new_begin[i] = already_begin[job_num-1];
already_begin[job_num-1] = -1;
}
else{
already_begin[job_num-1]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 427 2011-07-07 23:50 操作系统课程设计\存储管理—动态分区分配算法的模拟\.classpath
文件 393 2011-07-07 23:50 操作系统课程设计\存储管理—动态分区分配算法的模拟\.project
文件 629 2011-07-07 23:50 操作系统课程设计\存储管理—动态分区分配算法的模拟\.settings\org.eclipse.jdt.core.prefs
文件 4993 2011-07-08 12:57 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\best_fit.class
文件 4305 2011-07-08 12:51 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\first_fit.class
文件 1269 2011-07-08 01:14 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\MyPrintStream$1.class
文件 1269 2011-07-08 01:14 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\MyPrintStream.class
文件 4388 2011-07-08 12:54 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\next_fit.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$1.class
文件 565 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$10.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$2.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$3.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$4.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$5.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$6.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$7.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$8.class
文件 788 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management$9.class
文件 17485 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management.class
文件 35834 2011-07-08 12:38 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system\System_Management.form
文件 2850 2011-07-07 23:50 操作系统课程设计\存储管理—动态分区分配算法的模拟\lib\AbsoluteLayout.jar
文件 118103 2011-07-07 23:50 操作系统课程设计\存储管理—动态分区分配算法的模拟\lib\swing-layout-1.0.3.jar
文件 7842 2011-07-08 12:57 操作系统课程设计\存储管理—动态分区分配算法的模拟\src\system\best_fit.java
文件 6844 2011-07-08 12:51 操作系统课程设计\存储管理—动态分区分配算法的模拟\src\system\first_fit.java
文件 672 2011-07-07 14:31 操作系统课程设计\存储管理—动态分区分配算法的模拟\src\system\MyPrintStream.java
文件 7018 2011-07-08 12:54 操作系统课程设计\存储管理—动态分区分配算法的模拟\src\system\next_fit.java
文件 35834 2011-07-08 12:38 操作系统课程设计\存储管理—动态分区分配算法的模拟\src\system\System_Management.form
文件 35763 2011-07-08 14:39 操作系统课程设计\存储管理—动态分区分配算法的模拟\src\system\System_Management.java
文件 178688 2011-07-09 22:22 操作系统课程设计\操作系统课程设计报告.doc
目录 0 2011-07-09 14:55 操作系统课程设计\存储管理—动态分区分配算法的模拟\bin\system
............此处省略10个文件信息
- 上一篇:AD7705初始化基于STM32
- 下一篇:出版物输入输出系统设计与实现
相关资源
- 模拟分页式存储管理中硬件的地址转
- 模拟系统请求分页式存储管理
- 页式虚拟存储管理中地址转换和缺页
- 操作系统-页式存储管理
- 动态分区存储管理方式的主存分配回
- 操作系统实验报告 存储管理
- 动态分区存储管理的模拟实现
- 模拟设计动态分区存储管理中地址转
- 操作系统实验报告-动态存储管理
- 请求调页存储管理系统的模拟实现
- 药品存储管理系统课程设计文档
- 存储管理—基本分页存储管理,带报
- Dell PowerVault MD存储管理软件ISO
- 基本分页存储管理系统设计 课程设计
- 操作系统课程设计进程调度 存储管理
- 三种存储管理方式的地址换算过程
- 动态可变分区存储管理模拟系统
- 计算机操作系统 存储管理 FIFO LRU
- 请求分页存储管理模拟.c
- 操作系统 存储管理 实验报告
- 操作系统的课程设计、请求调页存储
- 段页式虚拟存储管理
- 操作系统存储管理页面置换算法(O
- 操作系统实验四 动态分区分配算法
- 可变式分区存储管理 实验报告和源代
- 请求分页存储管理模拟实验
- 请求页式存储管理实验
- 北京邮电大学操作系统实验实验报告
- 操作系统 实验 模拟分页式虚拟存储管
- 请求分页存储管理系统设计与实现顾
评论
共有 条评论