资源简介
含本人实验报告,有具体流程图,实验课上写的,有更好的想法可以提出,大家一起学习,赚点积分不容易 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.em
文件 728 2018-12-05 12:59 实验8实验7基于扫描的磁盘调度算法——扫描算法(SCAN)和循环扫描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.em
文件 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.em
............此处省略59个文件信息
相关资源
- 安徽大学操作系统实验四主存空间的
- 操作系统——银行家算法
- 操作系统_生产者消费者c++、mfc实现
- 磁盘调度c++模拟实现计算机操作系统
- 操作系统课设源代码 模拟进程的并
- 最短寻道时间优先和扫描算法C++实现
- 64位操作系统下win10、win7,VC6的所有问
- 操作系统课程设计之死锁检测
- 操作系统课程设计 哲学家进餐问题完
- 2010-2011华南理工大学操作系统课程设
- 操作系统进程间通信,用mfc实现
- 2013-2014华南理工大学操作系统课程设
- 操作系统实验 请求分页存储管理(包
- 进程/作业调度:时间片轮转调度算法
- 嵌入式实时操作系统μC/OS-III(英文
- 操作系统课程设计:进程/作业调度
- 操作系统 进程调度 多级队列反馈
- 自己动手写操作系统 于渊 高清带书签
- 操作系统读者写者写优先
- 消费者与生产者
- 操作系统八大调度算法c/c++实现
- 模拟操作系统的实现 C语言
- 操作系统实验可视化界面
- 操作系统概念:进程调度算法FCFS、
- STemWin无操作系统移植-(STM32)
- 《从0到1教你写uCOS-III》pdf 图文教程(
- 计算机操作系统(修订版)ppt课件[汤
- 操作系统概论(2018版)
- 操作系统进程调度先来先服务、短进
- 操作系统实验多线程同步含C++源代码
评论
共有 条评论