• 大小: 185KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 存储管理  

资源简介

课题八:存储管理---动态分区分配算法的模拟: 要求设计主界面以灵活选择某算法,且以下算法都要实现:首次适应算法、循环首次适应算法、最佳适应算法;

资源截图

代码片段和文件信息

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个文件信息

评论

共有 条评论