磁盘调度算法的实现 - 范文中心

磁盘调度算法的实现

01/16

《操作系统--磁盘调度算法》

实验报告

姓 名: 范学升

学 号:1001050903

班 级:电科10-1班

专 业:电子信息科学与技术

一、实验目的:

通过模拟设计磁盘驱动调度程序,观察驱动调度程序的动态运行过程,理解和掌握磁盘驱动调度的职能,并比较各种算法的调度结果。

二、实验内容:

要求设计主界面能灵活选择某算法,且实现以下算法:

(1)先来先服务算法(FCFS)

(2)最短寻道时间优先算法(SSTF)

(3)扫描算法(SCAN)

(4)循环扫描算法(CSCAN)

三、实验步骤

详细设计:

源代码

#include

#include

using namespace std;

void FCFS(int a[],int n);

void SSTF(int a[],int n);

void SCAN(int a[],int n);

void CSCAN(int a[],int n);

int main()

{

int n;//磁道的个数

int s;//功能号

cout

cin>>n;

int *a=new int[n];

cout

srand((unsigned)time(NULL));

for(int i=0;i

{

a[i]=(rand()%100)+1;

cout

}

cout

while(1)

{ cout

cout

cout

cout

cout

cout

cout

cout

cin>>s;

if(s>4)

{

cout

}

else

{

switch(s)

{ case 0: exit(0);break ;

case 1:FCFS(a,n); break;

case 2:SSTF(a, n);break;

case 3:SCAN(a, n);break;

case 4:CSCAN(a,n);break;

}

}

}

return 0;

}

//先来先服务调度算法(FCFS)

void FCFS(int a[],int n)

{

int sum=0,j,i,first=0,now;

cout

cin>>now;//确定当前磁头所在位置

cout

for( i=0;i

{

cout

}

//计算sum

for(i=0,j=1;j

{

first+=abs(a[j]-a[i]);//外围磁道与最里面磁道的距离

}

sum+=first+abs(now-a[0]);

cout

cout

}

最短寻道时间算法(SSTF)

void SSTF(int a[],int n)

{

int temp;

int k=1;

int now,l,r;

int i,j,sum=0;

//将磁道号按递增排序

for(i=0;i

for(j=i+1;j

{

if(a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

cout

for( i=0;i

{

cout

}

cout

cout

cin>>now;//确定当前磁头所在位置

cout

if(a[n-1]

{

for(i=n-1;i>=0;i--)

cout

sum=now-a[0];

}

else

if(a[0]>=now)//当前磁头位置小于最里欲访问磁道

{

for(i=0;i

cout

sum=a[n-1]-now;

}

else

{

while(a[k]

{

k++;

}

l=k-1;//在磁头位置的前一个欲访问磁道

r=k;//磁头欲访问磁道

while((l>=0)&&(r

{

if((now-a[l])

{

cout

sum+=now-a[l];

now=a[l];

l=l-1;

}

else

{

cout

sum+=a[r]-now;

now=a[r];

r=r+1;

}

}

if(l=-1)//磁头位置里侧的磁道已访问完

{

for(j=r;j

{

cout

}

sum+=a[n-1]-a[0];

}

if(r==n)//磁头位置外侧的磁道已访问完

{

for(j=k-1;j>-1;j--) //访问磁头位置里侧的磁道

{

cout

}

sum+=a[n-1]-a[0];

}

}

cout

cout

}

扫描算法(SCAN)

void SCAN(int a[],int n)

{

int temp;

int k=1;

int now,l,r;

int i,j,sum=0;

for(i=0;i

for(j=i+1;j

{

if(a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

cout

for( i=0;i

{

cout

}

cout

cout

cin>>now;

//以下算法确定磁道访问顺序

if(a[n-1]

{

for(i=n-1;i>=0;i--)

cout

sum=now-a[0];

}

else

if(a[0]>=now) //磁头位置小于最里欲访问磁道

{

for(i=0;i

cout

sum=a[n-1]-now;

}

else //磁头位置在最里侧磁道与最外侧磁道之间 { int d;

while(a[k]

{ //确定当前磁道在已排的序列中的位置

k++;

}

l=k-1;//在磁头位置的前一个欲访问磁道

r=k; //磁头欲访问磁道

cout>d; //确定磁头访问的方向

cout

if(d==0||d==1)

{

if(d==0) //磁头向内

{

for(j=l;j>=0;j--)

{

cout

}

for(j=r;j

{

cout

}

sum=now-2*a[0]+a[n-1];

}

if(d==1) //磁头向外

{

for(j=r;j

{

cout

}

for(j=l;j>=0;j--)

{

cout

}

sum=2*a[n-1]-now-a[0];

}

}

else

cout

}

cout

cout

}

循环扫描算法(CSCAN)

void CSCAN(int a[],int n)

{

int temp;

int now,l,r;

int i,j,sum=0;

int k=1;

for(i=0;i

for(j=i+1;j

{

if(a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

cout

for( i=0;i

{

cout

}

cout

cout

cin>>now;//确定当前磁道号

if(a[n-1]

{

for(i=0;i

cout

sum=now-2*a[0]+a[n-1];

}

else

if(a[0]>=now)//磁头位置小于最里欲访问磁道

{

for(i=0;i

cout

sum=a[n-1]-now;

}

else //磁头位置在最里侧磁道与最外侧磁道之间

{ int d;

while(a[k]

{

k++;

}

l=k-1;//在磁头位置的前一个欲访问磁道

r=k; //磁头欲访问磁道

cout>d; //确定磁头访问的方向

cout

if(d==0||d==1)

{

if(d==1) //磁头向外侧访问

{

for(j=r;j

cout

}

for(j=0;j

{

cout

}

sum=2*a[n-1]-now-2*a[0]+a[l];

}

if(d==0) //磁头向内侧访问

{

for(j=r-1;j>=0;j--)

{

cout

}

for(j=n-1;j>=r;j--)//

{

cout

}

sum=2*a[n-1]-2*a[0]+now-a[r]; }

}

else

cout

}

cout

cout

}

(3)测试结果:

1.先来先服务算法(FCFS)测试结果

2.最短寻道时间算法(SSTF)测试结果

3.循环扫描算法(SCAN)测试结果

4.循环扫描算法(CSCAN)测试结果

10


相关内容

  • 磁盘调度算法的编程实现及评估
    操作系统课程设计报告 --磁盘调度算法的编程实现及评估 姓名 学号 日期 一.课程设计题目 磁盘调度算法的编程实现及评估 二.课程设计目的 通过编程实现磁盘调度算法设计,加深理解磁盘调度算法的理解及提高编程能力. 三.课程设计内容 编程实现 ...
  • 操作系统 磁盘管理 实验报告
    实 验 报 告 课程名称:院 系:专业班级:姓 名:指导老师: 操作系统 信息与控制工程学院 计算机0801 2010年 12月 31日 目录 一.实验目的 ......................................... ...
  • 磁盘调度算法图形界面
    这是别的网上要收费的文档,磁盘调度算法,用tc实现的,有图形化演示. #include"graphics.h" #include"stdio.h" #include"math.h" ...
  • 20XX年全国计算机三级数据库考点知识大全
    2017年全国计算机三级数据库考点知识大全 1.ISP(internet 服务提供商) 是用户接入internet 的入口点,一方面他为用户提供接入internet 服务,另一方面,他也为用户提供各类信息资源.一般用户接入internet ...
  • 实验二(存储管理)虚拟页式管理
    实验二 虚拟页式管理 1.实验内容:模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO )处理缺页中断: 2.要求: ① 指令序列的设定可以执行拟定,格式如表3: ② 在完成了FIFO 换页策略后,可以选做LRU ...
  • 操作系统课程设计-模拟文件系统
    目录 第1章 需求分析--...-.........--------------1 第2章 概要设计--...-.........--------------1 2.1 系统的主要功能--...-.........-----------.1 ...
  • 第七章 信息安全和病毒防范(选择题后含答案)
    第七章 信息安全和病毒防护 单项选择题 1.下列叙述中, A 是不正确的 2.下述不属于计算机病毒的特征. A .传染性,隐蔽性 B .侵略性,破坏性 C .潜伏性,自灭性 D .破坏性,传染性 3.目前常用的保护计算机网络安全的技术措施是 ...
  • windows文件系统调研报告
    鲁 东 大 学 ( 2013 - 2014 学年第 二 学期) 论文题目: windows 文件系统 课程名称: : 年 级: 评 语: 专 业: 计算机科学 学院(部):信息与电气工程学院 注意事项: (注:页面不足请在 背面续写) Wi ...
  • 高可用系统部署方案
    高可用性系统部署方案 2010年2月5日 1.1 概述 1.1.1 前言 在金融工程系统应用中,对服务器的安全性.可靠性要求较高,在服务器故障情况下,要求尽可能短的时间内恢复运行,并且能对故障发生时的数据进行恢复和处理,而能否实现这一功能是 ...
  • 基于遗传算法的网格资源调度算法
    第41卷第12期2004年12月 计算机研究与发展 JOURNAL OF COM PUTER RESEARCH AND DEVELOPM EN T V ol . 41, No . 12Dec . 2004 基于遗传算法的网格资源调度算法 林 ...