电梯调度算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

江西师范大学计算机信息工程学院学生实验报告

专业_ 计算机科学与技术姓名___马化梁学号____1308092042 日期__2015.6.5_ 课程名称操作系统实验室名称X4313

实验名称设备管理-电梯调度算法

指导教师朱明华成绩

1、实验目的

本实验要求学生设计一个电梯调度算法来模拟实现磁盘移臂调度过程。

2、实验原理和内容

任何一个对磁盘的访问请求,应给出访问磁盘的存储空间地址:柱面号、磁头号和扇区号。在启动磁盘执行I/O操作时,应先把移动臂移动到指定的柱面,再等待指定的扇区旋转到磁头位置下,最后让指定的磁头进行读/写,完成信息传送。移臂调度是根据访问者指定的柱面位置来决定执行次序的调度。

3、实验步骤

(1)弄清实验要求及目的;

(2)想清思路;

(3)设计代码;

(4)实现代码。

4、程序及运行结果(或实验数据记录及分析)

#include

#include

#include

#include

#include

using namespace std;

const int maxn=1024;

int N,a[maxn];

int main()

{

int flag=1,m;

while(flag)

{

cout<<"电梯调度算法"<

cout<<"请输入需要访问的柱面数"<

cin>>N;

cout<<"请输入相应的柱面号"<

for(int i=0;i

cin>>a[i];

sort(a,a+N);

cout<<"请输入执行I/O操作的起始位置(柱面号)"<

int x,flag1=1;

while(flag1)

{

int flag2=0;

cin>>x;

for(int i=0;i

if(a[i]==x) m=i,flag2=1;

if(!flag2)

{

cout<<"此起始位置不存在,请重新输入"<

flag1=1;

}

else

{

cout<<"请输入磁头移动方向1或-1(1代表磁头从外往内移动,-1代表磁头由内往外移动)"<

int y,sum=0;

cin>>y;

if(y==1)

{

for(int i=m+1;i

{

sum+=(a[i]-a[i-1]);

cout<<"柱面访问的序列号为: ";

for(int j=m;j<=i;j++)

cout<

cout<<"此时读/写磁头总共移动的距离为: "<

}

sum+=a[N-1]-a[m-1];

for(int i=m-2;i>=0;i--)

{

sum+=(a[i+1]-a[i]);

cout<<"柱面访问的序列号为: ";

for(int j=m;j

cout<

for(int j=m-1;j>=i;j--)

cout<

cout<<"此时读/写磁头总共移动的距离为: "<

}

}

else

{

for(int i=m-1;i>=0;i--)

{

sum+=(a[i+1]-a[i]);

cout<<"柱面访问的序列号为: ";

for(int j=m;j>=i;j--)

cout<

cout<<"此时读/写磁头总共移动的距离为: "<

}

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

for(int i=m+2;i

{

sum+=(a[i]-a[i-1]);

cout<<"柱面访问的序列号为: ";

for(int j=m;j>=0;j--)

cout<

for(int j=m+1;j<=i;j++)

cout<

cout<<"此时读/写磁头总共移动的距离为: "<

}

}

flag1=0;

}

}

cout<<"电梯调度算法结束,是否继续(Y or N):"<

char z;

cin>>z;

if(z=='Y'||z=='y') flag=1;

else flag=0;

}

return 0;

}

相关文档
最新文档