磁盘调度算法三个java

发布时间:2024-10-23

java磁盘调度算法 FCFS SCAN SSTF

public class exp {

public static void main(String[] args) {

int n = 6; // 用来统计需求量

double sum = 0; // 为FCFS算法准备的 用来计算总的寻到长度

double temp = 0;

int position = 100; // 用来存放磁头的出事位置

SSTF sstf = new SSTF();

SCAN scan = new SCAN();

int a[] = {100,24,37,58,81,95,150};//寻道序列

a[0]=position;

sum = 0;

System.out.println("磁头初始位置为100!磁头向磁道号增加方向寻道!"); System.out.println("初始化磁道序列:");

for(int i=1;i<=6;i++)

System.out.print(a[i]+" ");

System.out.println();

System.out.println("FCFS算法序列:");

for (int i = 1; i <= n; i++) {

System.out.print(a[i] + " ");

temp = a[i] - a[i - 1];

if (temp >= 0)

;

else if (temp < 0) {

temp = -temp;

}

sum = sum + temp;

}

System.out.println();

System.out.println("寻道长度为" + sum);

System.out.println("平均寻道长度为" + sum / n);

int b[] = {100,24,37,58,81,95,150};

sstf.Calculate(b, n, 100);

int c[] = {100,24,37,58,81,95,150};

scan.Check(c, n, 100);

}

}

class SCAN {//电梯算法

public int m=1; //用来存放磁头的初始位置

public boolean Run=true;

public int sum=0;

public void Check(int a[],int n,int position){

int temp;

java磁盘调度算法 FCFS SCAN SSTF

for (int i = n; i > 0; i--) // 冒泡排序

{

for (int j = 0; j < i; j++) {

if (a[j] > a[j + 1]) // 按顺序依次比较大小

{

temp = a[j]; // 把大的数字往前面放

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

while (Run) {//此循环用来寻找磁头的初始位置被排到了什么位置 for (int i = 0; i <= n; i++) {

if (a[i] == position) {

m = i;

Run = false;

}

}

}

System.out.println("SCAN算法序列:");

for(int i=m+1;i<=n;i++){//磁头向大号移动

sum=sum+a[i]-a[i-1];

System.out.print(a[i]+" ");

}

sum=sum+200-a[n];

sum=sum+200-a[m-1];

for(int i=m-1;i>=0;i--){

if(i!=0){

sum=sum+a[i]-a[i-1];

}

System.out.print(a[i]+" ");

}

System.out.println();

System.out.println("寻道长度为"+sum);

System.out.println("平均寻道长度为"+sum/n);

}

}

class SSTF {// 最短寻道时间优先算法

public int m=1; // 用来判断排序后 磁头所在的初始位置的下标 public int b[];

java磁盘调度算法 FCFS SCAN SSTF

} boolean flag=true; public double SUM=0; public int mleft, mright; public SSTF(){ b=new int[20]; } public void Calculate(int a[], int n, int position) {// 两个形参分别表示磁盘请求序列 int temp,p,q; System.out.println("SSTF序列为:"); while(flag){ for (int i = n; i > 0; i--) // 冒泡排序 { for (int j = m; j < i; j++) { p=a[j]-a[0];q=a[j + 1]-a[0]; if(a[j]-a[0]<0)p=-p; if(a[j+1]-a[0]<0)q=-q; if (p>q) // 按顺序依次比较大小 { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } System.out.print(a[m]+" "); a[0]=a[m]; m=m+1; if(m==7)break; p=a[0]-a[m]; if(a[0]-a[m]<0)p=-p; SUM=SUM+p; } System.out.println(); System.out.println("寻道长度为"+SUM); System.out.println("平均寻道长度为"+SUM/n); }

磁盘调度算法三个java.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219