操作系统 磁盘调度综合算法

磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:
先来先服务算法(FCFS),
最短寻道时间优先算法(SSTF),
扫描算法(SCAN),
循环扫描算法(CSCAN)


以下代码是对算法的实现:

#include "stdio.h"
#include "stdlib.h"
#include "iostream"
using namespace std;
void Fuzhi(int Sour[],int Dist[] ,int x); //数组Sour复制到数组Dist,复制到x个数
void Dayin(int Pri[],int x);  //打印输出数组Pri
void Yidong(int Sour[],int x,int y);  //数组Sour把x位置的数删除,并把y前面的数向前移动,y后的数保持不变(即会出现2个y) 
void Shuru(int CDH[]);
void FCFS(int Han,int CDH[]);  //先来先服务算法(FCFS)
void SSTF(int Han,int CDH[]);  //最短寻道时间优先算法(SSTF)
int SCAN(int Han,int CDH[],int x,int y);  //扫描算法(SCAN)
void CSCAN(int Han,int CDH[]);  //循环扫描算法(CSCAN)
void PaiXu();  //寻道长度由低到高排序
void Pri();
int NAll=0;
int Best[5][2]; //用作寻道长度由低到高排序时存放的数组 
int Limit=0; //输入寻找的范围磁道数i
int Jage;
int Min=16383; 
float Aver=0;




int main()
{
 int i;
 int SJCDH[10];  //声明准备要生成的随机磁道号的数组
 int CDS;  //磁道数
 int Con=1;
 int n;
 int an=0;
 system("color 27"); 
 while(Con==1)
 {
  Jage=0;
  printf("\n 请输入初始的磁道数(0      scanf("%d",&CDS);
   printf("\n 输入寻找的范围:");
  scanf("%d",&Limit);
  if(Limit>16383){
   printf("超出范围!");
  } 
  else{
printf("\n                  磁盘调度算法                      \n");
    printf("             1.先来先服务算法(FCFS)                      \n");
    printf("              2.最短寻道时间优先算法(SSTF)                \n");
    printf("              3.扫描算法(SCAN)                           \n");
    printf("              4.循环扫描算法(CSCAN)                      \n");
printf("              5.四种方法以及平均寻道数                    \n");
printf("              6.退出                    \n");
  printf(" 请选择:");
 scanf("%d",&n);
 if(n==0) exit(0);
 printf("\n");
 switch(n)
 {
 case 1:
  
  Shuru(SJCDH);  //随机生成磁道数
  FCFS(CDS,SJCDH); //先来先服务算法(FCFS)
  break;
 case 2:
  Shuru(SJCDH);  //随机生成磁道数

你可能感兴趣的:(操作系统,算法,设计,磁盘)