logo资料库

磁盘调度算法的实现.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
天津理工大学实验报告 学院(系)名称:计算机与通信工程学院 姓名 晴小天 学号 2013xxxx 专业 计算机科学与技术 班级 2013 级 2 班 实验项目 实验三:磁盘调度算法的实现 课程名称 操作系统 课程代码 实验时间 批改意见 2011 年 12 月 8 日 第 3、4 节 2011 年 12 月 12 日 第 7、8 节 2011 年 12 月 15 日 第 3、4 节 2011 年 12 月 19 日 第 7、8 节 实验地点 成绩 0668036 软件实验室 7-219 软件实验室 7-219 软件实验室 7-219 软件实验室 7-215 教师签字: 实验内容: 1. 本实验是模拟操作系统的磁盘寻道方式,运用磁盘访问顺序的不同来设计磁盘的调度算法。 2. 实现的磁盘调度算法有 FCFS,SSTF,SCAN,CSCAN 和 NStepSCAN 算法。 3. 设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。 4. 选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。 5. 按算法的寻道效率进行排序,并对各算法的性能进行分析比较。 实验要求: 1.详细描述实验设计思想、程序结构及各模块设计思路; 2. 详细描述程序所用数据结构及算法; 3. 明确给出测试用例和实验结果; 4. 为增加程序可读性,在程序中进行适当注释说明; 5. 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等; 6. 实验报告撰写要求结构清晰、描述准确逻辑性强; 7.实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。 【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 第 1页 共 10页
#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<<"请输入磁道的个数:"<>n; int *a=new int[n]; cout<<"生成随机磁道号..."<>s; if(s>4) { cout<<"输入有误!"<
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<<"磁盘调度顺序为:"<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } 第 3页 共 10页
} cout<<"按递增顺序排好的磁道:"<>now;//确定当前磁头所在位置 cout<<"磁盘调度顺序为:"<=0;i--) cout<=now)//当前磁头位置小于最里欲访问磁道 { for(i=0;i=0)&&(r
{ } cout<-1;j--) //访问磁头位置里侧的磁道 { cout<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } 第 5页 共 10页
} cout<<"按递增顺序排好的磁道:"<>now; //以下算法确定磁道访问顺序 if(a[n-1]<=now) //磁头位置大于最外围欲访问磁道 for(i=n-1;i>=0;i--) cout<=now) //磁头位置小于最里欲访问磁道 { for(i=0;i>d; cout<<"磁盘调度顺序为:"; if(d==0||d==1) { //确定磁头访问的方向 if(d==0) { //磁头向内 for(j=l;j>=0;j--) { cout<
} } sum=now-2*a[0]+a[n-1]; if(d==1) { //磁头向外 for(j=r;j=0;j--) { cout<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } cout<<"按递增顺序排好的磁道:"<
cout<>now;//确定当前磁道号 if(a[n-1]<=now)//磁头位置大于最外围欲访问磁道 { for(i=0;i=now)//磁头位置小于最里欲访问磁道 { for(i=0;i>d; cout<<"磁盘调度顺序为:"; if(d==0||d==1) { //确定磁头访问的方向 //磁头向外侧访问 if(d==1) { for(j=r;j
分享到:
收藏