操作系统(Java)移动臂调度算法SSTF

该代码实现了一个基于Java的SSTF(ShortestSeekTimeFirst)磁盘调度算法。用户输入当前磁道号、要访问的磁道数、移过每个柱面的时间和磁盘请求序列,程序计算出服务序列、总寻道长度、平均寻道长度和寻道时间。
摘要由CSDN通过智能技术生成

public class SSTF {

private static int maxsize = 100;

private static int Disc[] = new int [maxsize]; //请求序列

private static int count;// 要访问的磁道数

private static int disc; //当前磁道号

private static int perTime;//移过每个柱面需要时间

private static int Distance=0;//总寻道长度

private static int FindTime;// 查找时间

private static double AvgDistance;//平均寻道长度

public SSTF(int disc, int count, int perTime ,int Disc[])

{

this.disc=disc;

this.count=count;

this.perTime=perTime ;

for(int i=0;i<Disc.length;i++)

Disc[i]=Disc[i] ;

}

public void input()

{

System. out. print("请输入当前磁道号:");

Scanner s1=new Scanner(System.in);

disc=s1.nextInt();

System.out.print("请输入要访问的磁道数:");

Scanner s2=new Scanner(System.in);

count=s2.nextInt();

System.out.print("请输入移过每个柱面需要的时间:");

Scanner s3=new Scanner(System.in);

perTime=s3.nextInt();

System.out.print("请输入磁盘请求序列(以空格隔开) :");

Scanner s4=new Scanner(System.in);

for(int i=0;i<count;i++)

Disc[i]=s4.nextInt( );

}

public void Delete(int arr[],int n)

{

for(int i=n;i<arr.length-1;i++)

arr[i]=arr[i+1];

}

public void running()

{

int j=0, count1=count;

int min;

int discc=disc;

int Discc[]=new int[count];

while(j<count)

{

int num=0;

min=(Disc[0]>=discc)?(Disc[0]-discc):(discc-Disc[0]);

for(int i=0;i<count1;i++)

if(((Disc[i]>=discc)&&(Disc[i]-disc<min))||((Disc[i]<discc)&&(discc-Disc[i]<min)))

{

min=(Disc[i]>=discc)?(Disc[i]-discc):(discc-Disc[i]);

num=i;

}

Discc[j++]=Disc[num];

Distance+=min;

discc=Disc[num];

Delete(Disc ,num);

count1-- ;

}

AvgDistance=(double )Distance/count;

FindTime=perTime*Distance;

System.out.print("\n服务序列:"+disc+" ");

for(int i=0; i<count;i++)

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

System.out.println("\n总寻道长度:"+Distance);

System.out.println("平均寻道长度: "+AvgDistance);

System.out.println("寻道时间:"+FindTime+"ms");

}

public static void main(String[] args)

{

System. out. println("---------最短寻找时间优先算法---------");

SSTF SSTF=new SSTF( disc, count, perTime ,Disc);

SSTF.input();

SSTF.running();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值