资源简介
含本人实验报告,有具体流程图,实验课上写的,有更好的想法可以提出,大家一起学习,赚点积分不容易 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语言模拟文件管理系统844
- 操作系统课设 读写者问题 c语言实现
- ROS操作系统入门讲义
- Linux操作系统下C语言编程从零开始
- 操作系统存储管理实验报告c/c++
- 操作系统课程设计(银行家算法)附
- 现代操作系统第三版高清
- C++操作系统课设-进程管理
- 哲学家进餐问题的c++模拟实现
- 操作系统课程设计(生产者-消费者存
- 操作系统——5个实验.zip
- 操作系统进程管理实验
- 操作系统—页面置换算法C++实现
- 操作系统 内存管理 模拟 图形界面
- 银行家算法 mfc 含源代码 界面 操作系
- 操作系统生产者消费者问题MFC动态实
- 操作系统课程设计:Windows 命令接口之
- 操作系统课程大作业-文件管理系统
- C语言实现最低松弛度优先算法源代码
- 操作系统信号量PV经典问题:沉睡的理
- 基于C++的银行家算法模拟实现
- 生产者消费者问题源码-MFC实现-进程模
- 操作系统实验 进程调度 高响应比优先
- 操作系统文件管理C++代码实现
- 嗜睡的理发师进程同步与实现c++
- 安徽大学操作系统实验四主存空间的
- 操作系统——银行家算法
- 操作系统_生产者消费者c++、mfc实现
- 磁盘调度c++模拟实现计算机操作系统
- 操作系统课设源代码 模拟进程的并
评论
共有 条评论