操作系统实验磁盘调度扫描算法循环扫描算法(6页).doc
《操作系统实验磁盘调度扫描算法循环扫描算法(6页).doc》由会员分享,可在线阅读,更多相关《操作系统实验磁盘调度扫描算法循环扫描算法(6页).doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-操作系统实验磁盘调度扫描算法循环扫描算法-第 6 页学号P1514032 专业 计算机科学与技术 姓名 实验日期 教师签字 成绩实验报告【实验名称】 磁盘调度(二) 【实验目的】 磁盘调度中寻道时间直接影响到数据访问的快慢,处理好磁盘寻道时间是关键。分别采用扫描策略、循环扫描策略处理。【实验原理】 1. 扫描算法(SCAN算法)SCAN算法,也就是很形象的电梯调度算法。先按照一个方向(比如从外向内扫描),扫描的过程中依次调度经过的磁道。当扫描到最里层的一个磁道时反向扫描直至所有磁道都被调度。2.循环扫描算法(CSCAN算法)CSCAN算法,循环扫描算法,它的思想是,访问完最里面一个要求服务的
2、序列之后,从最外层的序号开始往里走。也就是始终保持一个方向,故称为循环扫描算法。【数据结构和符号说明】(1) 数据结构和符号说明编译语言:C+数据结构:结构体数组符号定义: typedef struct Track/磁道结构体 int id;/磁道序列 int state=0;/是否访问过,未被访问置状态为0 Track;Track trackN;/最大磁道数为100Track track1N;/复制的磁道数组用于输出int stepN;/移动距离int num,i,current_track,num1; /当前磁道即部分中间变量函数说明:void init()/初始化程序void input
3、()/输入函数void sort1()/从小到大排序int abs(int a,int b)/相减的绝对值int find_first_bignum()/寻找第一个最大值int find_first_smallnum()/寻找第一个最小值void SCAN(int up_or_down) /扫描算法void CSCAN(int up_or_down) /循环扫描算法void output(Track a)/输出函数void output_average_track()/输出平均寻道时间int show()/显示用户界面/返回值为输入的选择项流程图:SCAN算法:CSCAN算法(与SCAN算法基
4、本类似):代码:#include#define N 100typedef struct Track int id;/磁道序列 int state=0;/是否访问过,未被访问置状态为0 Track;Track trackN;/最大磁道数为100Track track1N;int stepN;/移动距离int num,i,current_track,num1;void init()/初始化程序 num=0; for (i=0; inum; i+) tracki.state=-1;/id置为1 track1i.state=-1; stepi=-1;/移动距离为-1void input()/输入函数
5、printf(输入当前磁道n); scanf(%d,¤t_track); num1=current_track; printf(输入要访问的磁道数目n); scanf(%d,&num); printf(输入要访问磁道序列n); for(i=0; inum; i+) scanf(%d,&tracki.id);void FCFS()/先来先服务 for(i=0; inum; i+) if(current_track-tracki.id)0?a-b:b-a;int Serch_min_pos()/寻找到当前磁道最短的需求磁道 int min=45536;/最小距离标志 int pos;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 磁盘 调度 扫描 算法 循环
限制150内