1、 要求设计主界面能灵活选择某算法,且以下算法都要实现。 (1)先来先服务算法(FCFS) (2)最短寻道时间优先算法(SSTF) (3)扫描算法(SCAN) (4)循环扫描算法(CSCAN) 三、 设计步骤(1)需求分析: 本设计中可在运行时随机产生一个请求序列,先把序列排序,以方便找 到下一个要寻找的磁道。要求用户选择磁头移动方向,向里和向外移动用1和0表示,若输入值不为0或1,则报错。选择某种调度算法后,要求显示调度顺序和移动的总磁道数。(2)详细设计:1.先来先服务算法(FCFS)2.最短寻道时间算法(SSTF)3.扫描算法(SCAN)4.循环扫描算法(CSCAN) (3)算法及测试结果
2、:1.先来先服务算法(FCFS)及测试结果2.最短寻道时间算法(SSTF)及测试结果3.循环扫描算法(SCAN)及测试结果4.循环扫描算法(CSCAN)测试及结果四、设计总结: 此次设计基本完成了本实验所规定的功能,但是还不够完善,很多东西 做的不够好,程序不够完善和严谨。由于我的编程基础不是很好,其中不免会 有些纰 漏,出错处理不够完善等多方面问题,这些都有进一步改善。 在编程设计过程中,由于不知道怎产生不相等的随机数,以及后来的扫描算法和循环扫描算法计算移动总的磁道数都遇到了一点问题,通过上网查询,最后在老师以及同学的指导下很快完成了设计。此次课程设计中我学到了很多东西,无论在理论上还是实
3、践中,都得到不少的提高,这对于我以后的工作和学习都是一种巨大的帮助!5、参考资料:计算机操作系统(第三版)西安电子科技大学出版社6、源码#define _CRT_SECURE_NO_WARNINGS#includestdlib.htime.hWindows.h/*先来先服务 (FCFS)*/void FCFS(int a, int n) int sum = 0, i, j, now; printf(请输入当前磁道号:n); scanf(%d, &now); sum += abs(a0 - now);从当前位置到第1个磁道移动的磁道数:t%dn, sum); for (i = 0, j = 1;
4、 j n; j+, i+) sum += abs(aj - ai); printf(从第%d磁道到第%d磁道移动的磁道数:, i + 1, j + 1, abs(aj - ai); 移动的总磁道数:%dn移动的平均磁道数:%.2lfn, 1.0*sum / n);请再次输入你想使用的方法:/*最短寻道时间函数SSTF*/void SSTF(int a, int n) int temp; int now; int sum = 0, i, j, k=0; /冒泡排序法对磁道号进行排序排序后的磁道分布: for (i = 0; i aj) temp = ai; ai = aj; aj = temp;
5、 %d t, ai); if (i % 10 = 9) printf(请输入当前磁道号: if (a0 =now)当前访问的磁道%dn, a0); for (i = 0; n-1;当前访问的磁道:,ai+1); sum = an - 1 - now; else if (an - 1 = now), an-1); for (j=n-1; in-1;j-),aj-1); sum = now-a0; else while (ak =0)&(k= ak - now) printf(, ak); sum += ak - now; now = ak; k+; else, aj); sum += now -
6、 aj; now = aj; j-; if (k n-1) for (int t = j; t 0; t-) i+; if (t = j) printf(,aj); else, at+1); sum += an - 1 - a0; if (j 0) for (int t = k; t ,aj - 1); if (d = 1) int i = 0; sum += at - now; now = at; for (int t = 0; k; sum += an-1 - a0+aj-a0; else if (d = 0) sum += now - at; for (int t = n-1;=k; s
7、um += an - 1 - a0+an-1-ak; else/* 主函数*/void main() int n;/磁道数 int control=1;/控制处理的方式请输入要处理的磁道数:,&n); int c1000;随机生成磁道号: srand(unsigned)time(NULL); /srand(unsigned)time(NULL); for (int i = 0; ci = (rand() % 100) + 1;, ci); if (i % 10 =9)n 数据生成成功!*n- -n-算法选择-n- 1.先来先服务算法 -n- 2.最短寻道时间算法 -n- 3.扫描算法 -n- 4.循环扫描算法 -n- 0.退出程序 -n /*算法选择*/请输入你想使用的方法: while (control)control); switch (control) case 0: break; case 1: FCFS(c, n); case 2: SSTF(c, n); case 3: SCAN(c, n); case 4: CSCAN(c, n); default:选项错误!重新选择!程序退出成功,谢谢使用! system(pause
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1