最短寻道时间优先算法c语言程序,操作系统先来先服务、最短寻道时间优先(SSTf)、扫描算法(SCAN)、循环扫描算法(CSCAN)的c++实现.doc...

该博客详细介绍了磁盘调度算法,包括FCFS(先来先服务)、SSTF(最短寻道时间优先)的实现过程。通过示例展示了如何输入初始磁道号、磁头运动方向和要访问的柱面号,并分别应用两种算法进行磁道访问,计算总移动距离。此外,还提及了SCAN和CSCAN算法,但未提供具体实现。
摘要由CSDN通过智能技术生成

先来先服务(FCFS)、最短寻道时间优先(SSTf)、扫描算法(SCAN)、循环扫描算法(CSCAN)

最后有运行截图。

#include

#include

#include

#include

int a; //当前磁道号

int b; //磁头运动方向

int c[10]; //要访问的柱面号

int num; //需要输入的磁道数量

const int MAXQUEUE=200; //定义队列最大数

//结构体定义

typedef struct node{ //定义200磁道结构体

int value; //磁道的值

int visited; //磁道是否被访问标识

}CiDao;

CiDao queue[MAXQUEUE]; //声明最大磁道队列数

//输入需要输入的磁道数量

void shuru2()

{

printf("请输入需要输入的磁道数量:");

scanf("%d",&num);

}

//初始化函数

void initial()

{

for(int i=0;i

{

queue[i].value=-1; //初始化每个队列的值为-1

queue[i].visited=0; //初始化每个队列的访问标识为未访问

}

}

//输入当前磁道号和磁头运动方向

void shuru1()

{

printf("请输入初始磁道号:"); //输入初始磁道号

scanf("%d",&a);

printf("请选择磁头运动方向: \n"); //选择磁头运动方向

printf("******************\n");

printf(" 1.向里 \n");

printf(" 2.向外 \n");

printf("******************\n");

scanf("%d",&b);

printf("请输入要访问的柱面号: \n");

for(int j=0;j

scanf("%d",&queue[j].value);

printf("\n");

printf("当前磁道号为:%d\n",a);

printf("磁头运动方向为:%d\n",b);

printf("要访问的柱面号: ");

for(int i=0;i

printf("%d ",queue[i].value);

printf("\n");

printf("\n");

}

//先来先服务算法

void FCFS()

{

int i; //用来计数的局部参数

int total=0; //总的移过的柱面数

int current; //当前磁道号

cout<

cout<

current=a; //将输入的初始磁道号赋给当前磁道号

for(i=0;i

cout<

total+=abs(queue[i].value-current); //依次拿要访问的磁道号与当前磁道号相减并求其绝对值然后加到总的移过的柱面数上

current=queue[i].value; //将此次访问过的磁道号赋给当前磁道号

}

cout<

cout<

cout<

cout<

}

//最短寻道时间优先算法

void SSTF()

{

int i,j,p; //用来计数的局部参数

int total=0; //总的移过的柱面数

int current; //当前磁道号

for(i=0;i

queue[i].visited=0;

cout<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值