资源简介

含本人实验报告,有具体流程图,实验课上写的,有更好的想法可以提出,大家一起学习,赚点积分不容易 C语言编写,调试过可运行,含实验报告,含具体流程图 ,有注释和变量解释,环境为VS2008 安徽大学操作系统实验(八)基于扫描的磁盘调度算法,扫描算法(SCAN)和循环扫描算法(CSCAN),(实验报告+运行结果+源代码)

资源截图

代码片段和文件信息

// oslab08_summary.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include “math.h“

// int wait_track[N]={555839189016015038184};
int sever_num;//为需要通过调度算法进行访问的磁道个数
int START_LIFT;//START_LIFT用来存放初始磁道号,即从第几道磁道号开始扫描访问
int wait_track[100]={0};//wait_track数组用来存放需要服务的磁道号队列
int floor_num;//floor_num为正在被扫描的磁道号,每扫描一次,floor_num的步长为step,step可为+1或-1
int last_served;//存放刚刚服务过的磁道号,last_served的初始值即为开始扫描的磁道号
int pre_direction=1;//1为磁道号增加方向,-1为磁道号减小方向
int step=pre_direction;//初始方向,向磁道数增加的方向扫描
int CLOCK=0i;//CLOCK用来存放已经服务过的磁道号个数,最大值为需要服务的磁道号队列中磁道号个数
int served_queue[100]={0};//用来存放服务过的磁道号
int move_distance[100];//用来存放每次到达目标磁道号,磁头的移动距离
double sum_distance=0;//sum_distance用来存放所有移动距离之和
int choice;//在主函数中用来选择相应磁盘调度算法,对需要服务的磁道号队列进行服务
int flag=1;//flag为0时,作为主函数中执行算法的停止条件

void cscan(){//循环扫描算法CSCAN
while(CLOCK {
floor_num=floor_num+step;//floor_num为正在被扫描的磁道号每扫描一次,floor_num的步长为step
for (i=0;i {
if(floor_num==wait_track[i])//若当前正在被扫描的磁道号是为需要服务的磁道号
{
served_queue[CLOCK]=wait_track[i];//将服务过的磁道号放入served_queue数组中存储
move_distance[CLOCK]=labs(last_served-wait_track[i]);//将此次服务的磁头移动距离,放入move_distance数组中存储
last_served=wait_track[i];//修改last_served的值,last_served变量存放刚刚服务过的磁道号,
wait_track[i]=0;//将刚刚访问过的磁道号移除访问队列,这里将wait_track数组中存放的磁道号置零
CLOCK++;//CLOCK用来存放已经服务过的磁道号个数,CLOCK表示已经服务过的磁道号个数增加一个
break;//跳出for循环,继续进行扫描
}
}

if(pre_direction==1)//若CSCAN算法规定的初始方向为磁道号增加的方向,则在当前磁道号到达最大值200后,回到磁道号最小值0再进行重新进行扫描
{
if(floor_num>=200)
{
floor_num=0;
}
}
else//若CSCAN算法规定的初始方向为磁道号增加的方向,则在当前磁道号到达最大值0后,回到磁道号最大值200再进行重新进行扫描
{
if(floor_num<=1)
{
floor_num=200;
}
}

}
}

void scan()//扫描算法SCAN
{

while(CLOCK {
if(floor_num>=200)//若磁头扫描已经到达最大磁道号,则改变磁头扫描方向,即向磁道号减小的方向扫描
{step = -1;}
if(floor_num<=1)//若磁头扫描已经到达最小磁道号,则改变磁头扫描方向,即向磁道号增加的方向扫描
{step = 1;}
floor_num=floor_num+step;//floor_num为正在被扫描的磁道号每扫描一次,floor_num的步长为step

for (i=0;i {
if(floor_num==wait_track[i])//若当前正在被扫描的磁道号是为需要服务的磁道号
{
served_queue[CLOCK]=wait_track[i];//将服务过的磁道号放入served_queue数组中存储
move_distance[CLOCK]=labs(last_served-wait_track[i]);//将此次服务的磁头移动距离,放入move_distance数组中存储
last_served=wait_track[i];//修改last_served的值,last_served变量存放刚刚服务过的磁道号,
wait_track[i]=0;//将刚刚访问过的磁道号移除访问队列,这里将wait_track数组中存放的磁道号置零
CLOCK++;//CLOCK用来存放已经服务过的磁道号个数,CLOCK表示已经服务过的磁道号个数增加一个
break;//跳出for循环,继续进行扫描
}
}
}
}


void display()//显示磁盘调度算法调度后的结果
{
printf(“*******调度结果如下*********\n“);
printf(“从%d号磁道开始\n“START_LIFT);

if(pre_direction==1)
printf(“向磁道数增加的方向扫描\n“);
else
printf(“向磁道数减小的方向扫描\n“);

printf(“被访问的下一个磁道号 移动距离(磁道数)\n“);
for(i=0;i {

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      35328  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\Debug\oslab08_summary.exe

     文件     347860  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\Debug\oslab08_summary.ilk

     文件     470016  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\Debug\oslab08_summary.pdb

     文件      10124  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\BuildLog.htm

     文件         65  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\mt.dep

     文件        663  2018-12-05 12:59  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.embed.manifest

     文件        728  2018-12-05 12:59  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.embed.manifest.res

     文件        621  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.intermediate.manifest

     文件      15592  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.obj

     文件    3211264  2018-12-05 12:59  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.pch

     文件      12053  2018-12-05 12:59  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\stdafx.obj

     文件      76800  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\vc90.idb

     文件     126976  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\vc90.pdb

     文件       5355  2018-12-05 15:30  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.cpp

     文件       4522  2018-12-04 23:14  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.vcproj

     文件       1403  2018-12-05 15:44  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.vcproj.C25.ACER.user

     文件       1427  2018-12-05 13:02  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.vcproj.DESKTOP-L85K5HC.Precious.user

     文件       1231  2018-12-04 23:14  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\ReadMe.txt

     文件        220  2018-12-04 23:14  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\stdafx.cpp

     文件        233  2018-12-04 23:14  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\stdafx.h

     文件        498  2018-12-04 23:14  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\targetver.h

     文件     732160  2018-12-05 15:44  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary.ncb

     文件        911  2018-12-04 23:14  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary.sln

    ..A..H.     25600  2018-12-05 15:44  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary.suo

     文件      31232  2018-12-03 17:19  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab8_scan_01\Debug\oslab8_scan_01.exe

     文件     309532  2018-12-03 17:19  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab8_scan_01\Debug\oslab8_scan_01.ilk

     文件     461824  2018-12-03 17:19  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab8_scan_01\Debug\oslab8_scan_01.pdb

     文件       6780  2018-12-03 17:19  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab8_scan_01\oslab8_scan_01\Debug\BuildLog.htm

     文件         65  2018-12-03 17:19  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab8_scan_01\oslab8_scan_01\Debug\mt.dep

     文件        663  2018-12-03 17:15  实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab8_scan_01\oslab8_scan_01\Debug\oslab8_scan_01.exe.embed.manifest

............此处省略59个文件信息

评论

共有 条评论