- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一.????????编写目的
熟悉磁盘的结构以及磁盘的驱动调度算法的模拟,编程实现简单常用的磁盘驱动调度算法先来先服务(FIFO)、电梯调度算法、最短寻找时间优先算法、扫描(双向扫描)算法、单向扫描(循环扫描)算法等。编程只需实现两个算法。
题目可以选取教材或习题中的相关编程实例。
编程语言建议采用c/c++或Java。模拟程序鼓励采用随机数技术、动态空间分配技术,有条件的最好能用图形界面展现甚至用动画模拟。
实验性质:验证型。
二.??????????课程设计内容
1)掌握使用一门语言进行磁盘驱动调度算法的模拟;
2)编写程序将磁盘驱动调度算法的过程和结果能以较简明直观的方式展现出来。
三.??????????设计、方法和步骤
1. 设计
磁盘驱动调度对磁盘的效率有重要影响。磁盘驱动调度算法的好坏直接影响辅助存储器的效率,从而影响计算机系统的整体效率。
常用的磁盘驱动调度算法有:最简单的磁盘驱动调度算法是先入先出(FIFO)法。这种算法的实质是,总是严格按时间顺序对磁盘请求予以处理。算法实现简单、易于理解并且相对公平,不会发生进程饿死现象。但该算法可能会移动的柱面数较多并且会经常更换移动方向,效率有待提高。
最短寻找时间优先算法:总是优先处理最靠近的请求。该算法移动的柱面距离较小,但可能会经常改变移动方向,并且可能会发生进程饥饿现象。
电梯调度:总是将一个方向上的请求全部处理完后,才改变方向继续处理其他请求。
扫描(双向扫描):总是从最外向最里进行扫描,然后在从最里向最外扫描。该算法与电梯调度算法的区别是电梯调度在没有最外或最里的请求时不会移动到最外或最里柱面,二扫描算法总是移到最外、最里柱面。两端的请求有优先服被务的迹象。
循环扫描(单向扫描):从最外向最里进行柱面请求处理,到最里柱面后,直接跳到最外柱面然后继续向里进行处理。该算法与扫描算法的区别是,回来过程不处理请求,基于这样的事实,因为里端刚被处理。
2. 设计方法
1)使用流程图描述演示程序的设计思想;
2)选取c/c++、Java等计算机语言,编程调试,最终给出运行正确的程序。
3. 程序步骤
参考程序:
1)????? c/c++版的驱动调度算法-电梯调度模拟程序
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
typedef struct _proc
{char name[32]; /*定义进程名称*/
int team; /*定义柱面号*/
int ci; /*定义磁道面号*/
int rec; /*定义记录号*/
struct _proc *prior;
struct _proc *next;
}PROC;
?
PROC *g_head=NULL,*g_curr=NULL,*local;
int record=0;
int yi=1;
void init()
{
PROC *p; /*初始化链表(初始I/O表)*/
g_head = (PROC*)malloc(sizeof(PROC));
g_head-next = NULL;
g_head-prior = NULL;
p = (PROC*)malloc(sizeof(PROC));
strcpy(p-name, P1);
p-team=100;
p-ci=10;
p-rec=1;
p-next = NULL;
p-prior = g_head;
g_head-next = p;
g_curr=g_head-next;
p = (PROC*)malloc(sizeof(PROC));
strcpy(p-name, P2);
p-team=30;
p-ci=5;
p-rec=5;
p-next = NULL;
p-prior = g_curr;
g_curr-next = p;
g_curr=p;
p = (PROC*)malloc(sizeof(PROC));
strcpy(p-name, P3);
p-team=40;
p-ci=2;
p-rec=4;
p-next = NULL;
p-prior = g_curr;
g_curr-next = p;
g_curr=p;
p = (PROC*)malloc(sizeof(PROC));
strcpy(p-name, P4);
p-team=85;
p-ci=7;
p-rec=3;
p-next = NULL;
p-prior = g_curr;
g_
原创力文档


文档评论(0)