package 动态分区分配算法版本5;
import java.util.Random;
import java.util.Scanner;
public class OsResource implements AlgorithmInter{
Scanner scanner = new Scanner(System.in);
JFrames jf = new JFrames();
int headIndex = 1001;
int ns = 0;
// 进程序号
int index = 1;
public Node head;
public OsResource() {
this.head = new Node();
}
@Override
public void bf() {
// 最佳适应法
// TODO Auto-generated method stub
sortBubble();
System.out.print("请输入所需要的资源数大小:");
int val = scanner.nextInt();
System.out.print("所需的资源容量为:" + val);
Node cur = this.head;
while (cur.next != null) {
if (cur.next.data.val < val) {
cur = cur.next;
}else {
cur.next.data.val -= val;
cur.next.data.used += val;
System.out.println("--申请到资源为:" + val);
// 更新
jf.UpdateJTR(nodeAndTwo(ns));
// 添加进程
String[] xpq_Val = {String.valueOf(index++),"最佳适应法",String.valueOf(val),cur.next.data.name,"yes"};
jf.AddJTP(xpq_Val);
sortBubble();
System.out.println("\n-------是否需要继续分配--------");
System.out.println("请输入: Y/N");
String n = scanner.next();
if (n.equals("Y")){
bf();
}else {
System.out.println("分配结束");
new Scanner(System.in).nextLine();
select();
}
}
}
System.out.println("没有合适的资源");
String[] xpq_Val = {String.valueOf(index++),"最佳适应法",String.valueOf(val),"null","no"};
jf.AddJTP(xpq_Val);
new Scanner(System.in).nextLine();
select();
}
@Override
public void wf() {
// 最坏适应法
// TODO Auto-generated method stub
System.out.print("请输入所需要的资源数大小:");
int val = scanner.nextInt();
System.out.print("所需的资源容量为:" + val);
Node cur = this.head;
// 排序
sortBubble1();
while (cur.next != null) {
if (cur.next.data.val < val) {
cur = cur.next;
}else {
cur.next.data.val -= val;
cur.next.data.used += val;
System.out.println("--申请到资源为:" + val);
jf.UpdateJTR(nodeAndTwo(ns));
// 添加进程
String[] xpq_Val = {String.valueOf(index++),"最坏适应法",String.valueOf(val),cur.next.data.name,"yes"};
jf.AddJTP(xpq_Val);
sortBubble1();
System.out.println("\n-------是否需要继续分配--------");
System.out.println("请输入: Y/N");
String n = scanner.next();
if (n.equals("Y")){
wf();
}else {
System.out.println("分配结束");
new Scanner(System.in).nextLine();
select();
}
}
}
System.out.println("没有合适的资源");
String[] xpq_Val = {String.valueOf(index++),"最坏适应法",String.valueOf(val),"null","no"};
jf.AddJTP(xpq_Val);
new Scanner(System.in).nextLine();
select();
}
@Override
public void ff() {
// 首次适应法
// TODO Auto-generated method stub
sortBubble2();
Node cur = this.head;
System.out.print("请输入所需要的资源数大小:");
int val = scanner.nextInt();
System.out.print("所需的资源容量为:" + val);
while (cur.next != null) {
if (cur.next.data.val < val) {
cur = cur.next;
}else {
cur.next.data.val -= val;
cur.next.data.used += val;
System.out.println("--申请到资源为:" + val);
jf.UpdateJTR(nodeAndTwo(ns));
// 添加进程
String[] xpq_Val = {String.valueOf(index++),"首次适应法",String.valueOf(val),cur.next.data.name,"yes"};
jf.AddJTP(xpq_Val);
System.out.println("\n-------是否需要继续分配--------");
System.out.println("请输入: Y/N");
String n = scanner.next();
if (n.equals("Y")){
ff();
}else {
System.out.println("分配结束");
new Scanner(System.in).nextLine();
select();
break;
}
break;
}
}
System.out.println("没有合适的资源");
String[] xpq_Val = {String.valueOf(index++),"首次适应法",String.valueOf(val),"null","no"};
jf.AddJTP(xpq_Val);
new Scanner(System.in).nextLine();
select();
}
@Override
public void nf() {
// 循环首次适应法
// TODO Auto-generated method stub
Node cur = this.head;
System.out.print("请输入所需要的资源数大小:");
int val = scanner.nextInt();
System.out.print("所需的资源容量为:" + val);
while (cur.next != null) {
if (cur.next.data.val < val) {
cur = cur.next;
}else {
cur.next.data.val -= val;
cur.next.data.used += val;
System.out.println("--申请到资源为:" + val);
jf.UpdateJTR(nodeAndTwo(ns));
// 添加进程
String[] xpq_Val = {String.valueOf(index++),"循环首次适应法",String.valueOf(val),cur.next.data.name,"yes"};
jf.AddJTP(xpq_Val);
System.out.println("\n-------是否需要继续分配--------");
System.out.println("请输入: Y/N");
String n = scanner.next();
if (n.equals("Y")){
System.out.print("请输入所需要的资源数大小:");
int newVal = scanner.nextInt();
val = newVal;
cur = cur.next;
continue;
}else {
System.out.println("分配结束");
new Scanner(System.in).nextLine();
select();
break;
}
}
}
System.out.println("没有合适的资源");
String[] xpq_Val = {String.valueOf(index++),"循环首次适应法",String.valueOf(val),"null","no"};
jf.AddJTP(xpq_Val);
new Scanner(System.in).nextLine();
select();
}
// 应用体
public void select() {
while(true) {
System.out.println();
System.out.println("---------------第八组:动态分区分配算法 -----");
System.out.print("---------------数据初始化----------------- \n");
System.out.print(" 1、输入系统资源 \n 2、随机生成系统资源 \n 3、清除系统资源 \n\n");
System.out.print("---------------资源分配算法---------------");
System.out.print("\n 4、首次适应算法(First Fit)\n 5、循环首次适应算法(Next Fit) \n 6、最佳适应算法(Best Fit)\n 7、最坏适应算法(Worst Fit)\n");
System.out.print("-------------------------------------- \n\n请选择: ");
Scanner in = new Scanner(System.in);
int choose = in.nextInt();
Scanner scan = new Scanner(System.in);
switch(choose){
case 1:
insertTail();
break;
case 2:
Randoms();
break;
case 3:
deleteALL1();
break;
case 4:
ff();
break;
case 5:
nf();
br
操作系统-动态分区分配算法代码
需积分: 5 115 浏览量
2023-05-20
16:18:23
上传
评论
收藏 5KB ZIP 举报
云端new守夜人
- 粉丝: 4378
- 资源: 19
最新资源
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
- 关于学习Python的相关资源网站链接及相关介绍.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈