磁盘调度可视化实现-创新互联
如需源码请关注并私信博主哦(本文实现了先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN))
成都创新互联-专业网站定制、快速模板网站建设、高性价比汝南网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式汝南网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖汝南地区。费用合理售后完善,10年实体公司更值得信赖。【设计目的】
掌握文件的存取方法;掌握文件的逻辑结构和物理结构;掌握存储空间的分配和回收;掌握磁盘管理与调度。
【设计内容】
用程序模拟磁盘的调度过程,并计算各磁盘调度算法包括先来先服务算法、最短寻道时间优先算法、扫描算法和循环扫描算法的平均寻道长度。
【设计步骤】
- 分析常用的磁盘调度算法,熟悉其基本原理。
(篇幅有限,以SSTF算法为例)
- 用提供的GUI界面自行设定起始扫描磁道号及大磁道号数,程序根据设定值产生磁道号进行模拟。
- 编写程序实现磁盘调度算法,并显示该算法寻道顺序并计算出寻道总数和平均寻道数;
static int[] a;
static Integer direction;
static String master;
static int first;
static int[] SSTF(int a[],int index){
if (a[index]==a[0]){
//不做变化
}else if (a[index]==a[a.length-1]){
//数组对调
for (int start = 0, end = a.length - 1; start< end; start++, end--) {
int temp = a[end];
a[end] = a[start];
a[start] = temp;
}
}else {
//int c[a.length-1];
int []c = Arrays.copyOf(a,a.length); //数组复制,不能直接复制!!!
a[0] = c[index];
int left=index-1,right=index+1; //左右指针
for (int i = 1; i< a.length;i++) {
if ((c[index] - c[left]) >(c[right] - c[index])) { //index右移一位
if (c[right]< c[c.length - 1]) {
a[i] = c[right];
index = right;
right++;
} else {
a[i] = c[c.length - 1]; //到右端点又变成SCAN
for (int k = 1; c[left] >c[0]; k++) {
a[i + k] = c[left];
left--;
}
break;
}
} else {
if (c[left] >c[0]) {
a[i] = c[left];
index = left;
left--;
}else{
a[i] = c[0]; //到左端点又变成SCAN
for (int k = 1; c[right]< c[c.length - 1]; k++) {
a[i + k] = c[right];
right++;
}
break;
}
}
}
}
return a;
}
- 测试并运行程序,给出运行界面。
以SSTF为例:
磁道访问序列: 55 58 39 18 90 160 150 38 184
预期输出:100 90 58 55 39 38 18 150 160 184
测试结果
主界面
运行效果
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:磁盘调度可视化实现-创新互联
文章转载:http://scyanting.com/article/psieh.html