文档库 最新最全的文档下载
当前位置:文档库 › (第五讲磁盘调度算法)

(第五讲磁盘调度算法)

(第五讲磁盘调度算法)
(第五讲磁盘调度算法)

操作系统

实验报告

哈尔滨工程大学

计算机科学与技术学院

一、实验概述

1. 实验名称磁盘调度算法

2.实验目的

(1)通过学习EOS实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机。

(2)观察EOS实现的FCFS、SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法。

(3)编写CSCAN和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。

3. 实验类型验证,设计

4. 实验内容

(1)准备实验

(2)验证先来先服务(FCFS)磁盘调度算法

(3)验证最短寻道时间优先(SSTF)磁盘调度算法

(4)验证SSTF算法造成的线程“饥饿”现象

(5.1)验证扫描(SCAN)磁盘调度算法

(5.2)验证SCAN 算法能够解决“饥饿”现象

(6)改写SCAN调度算法

二、实验环境

EOS操作系统与IDE环境组成的“操作系统集成实验环境OS Lab”。

三、实验过程

(一)实验问题及解答

1.实验指导P176-3.2验证先来先服务(FCFS)磁盘调度算法,要求请给出在“输出”窗口中的结果。

答:输出结果复制如下:

制作软盘镜像...

正在启动Virtual PC...

开始调试...

****** Disk schedule start working ******

Start Cylinder: 10

TID: 31 Cylinder: 8 Offset: 2 -

TID: 32 Cylinder: 21 Offset: 13 +

TID: 33 Cylinder: 9 Offset: 12 -

TID: 34 Cylinder: 78 Offset: 69 +

TID: 35 Cylinder: 0 Offset: 78 -

TID: 36 Cylinder: 41 Offset: 41 +

TID: 37 Cylinder: 10 Offset: 31 -

TID: 38 Cylinder: 67 Offset: 57 +

TID: 39 Cylinder: 12 Offset: 55 -

TID: 40 Cylinder: 10 Offset: 2 -

Total offset: 360 Transfer times: 10 Average offset: 36

2.实验指导P177-

3.3验证验证最短寻道时间优先(SSTF)磁盘调度算法,要求请给出在“输出”窗口中的结果。

答:输出结果复制如下:

制作软盘镜像...

正在启动Virtual PC...

开始调试...

****** Disk schedule start working ******

Start Cylinder: 10

TID: 37 Cylinder: 10 Offset: 0 =

TID: 40 Cylinder: 10 Offset: 0 =

TID: 33 Cylinder: 9 Offset: 1 -

TID: 31 Cylinder: 8 Offset: 1 -

TID: 39 Cylinder: 12 Offset: 4 +

TID: 32 Cylinder: 21 Offset: 9 +

TID: 36 Cylinder: 41 Offset: 20 +

TID: 38 Cylinder: 67 Offset: 26 +

TID: 34 Cylinder: 78 Offset: 11 +

TID: 35 Cylinder: 0 Offset: 78 -

Total offset: 150 Transfer times: 10 Average offset: 15

3.实验指导P178-3.4验证SSTF算法造成的线程“饥饿”现象,要求请给出在“输出”窗口中的结果。

答:输出结果复制如下:

制作软盘镜像...

正在启动Virtual PC...

开始调试...

****** Disk schedule start working ******

Start Cylinder: 10

TID: 37 Cylinder: 10 Offset: 0 =

TID: 40 Cylinder: 10 Offset: 0 =

TID: 33 Cylinder: 9 Offset: 1 -

TID: 34 Cylinder: 8 Offset: 1 -

TID: 35 Cylinder: 11 Offset: 3 +

TID: 39 Cylinder: 12 Offset: 1 +

TID: 32 Cylinder: 21 Offset: 9 +

TID: 36 Cylinder: 41 Offset: 20 +

TID: 38 Cylinder: 67 Offset: 26 +

TID: 31 Cylinder: 78 Offset: 11 +

Total offset: 72 Transfer times: 10 Average offset: 7

4.实验指导P179-3.5验证扫描(SCAN)磁盘调度算法,要求在非饥饿(即《实验指导》P176-3.2节中的数据)和饥饿(即《实验指导》P178-3.4节中的数据)请给出在“输出”窗口中的结果,并且要求在每次输入两次“ds”命令(注意不要连续输入,要等第一次“ds”命令执行完,再输入第二次“ds”命令),分析结果为什么不同。

答:输出结果复制如下:

(1)非饥饿状态,两次输入ds指令

制作软盘镜像...

正在启动Virtual PC...

开始调试...

****** Disk schedule start working ******

Start Cylinder: 10

TID: 37 Cylinder: 10 Offset: 0 =

TID: 40 Cylinder: 10 Offset: 0 =

TID: 39 Cylinder: 12 Offset: 2 +

TID: 32 Cylinder: 21 Offset: 9 +

TID: 36 Cylinder: 41 Offset: 20 +

TID: 38 Cylinder: 67 Offset: 26 +

TID: 34 Cylinder: 78 Offset: 11 +

TID: 33 Cylinder: 9 Offset: 69 -

TID: 31 Cylinder: 8 Offset: 1 -

TID: 35 Cylinder: 0 Offset: 8 -

Total offset: 146 Transfer times: 10 Average offset: 14 ****** Disk schedule stop working ******

****** Disk schedule start working ******

Start Cylinder: 10

TID: 47 Cylinder: 10 Offset: 0 =

TID: 50 Cylinder: 10 Offset: 0 =

TID: 43 Cylinder: 9 Offset: 1 -

TID: 41 Cylinder: 8 Offset: 1 -

TID: 45 Cylinder: 0 Offset: 8 -

TID: 49 Cylinder: 12 Offset: 12 +

TID: 42 Cylinder: 21 Offset: 9 +

TID: 46 Cylinder: 41 Offset: 20 +

TID: 48 Cylinder: 67 Offset: 26 +

TID: 44 Cylinder: 78 Offset: 11 +

Total offset: 88 Transfer times: 10 Average offset: 8 (2)饥饿状态,两次输入ds指令

制作软盘镜像...

正在启动Virtual PC...

开始调试...

****** Disk schedule start working ******

Start Cylinder: 10

TID: 37 Cylinder: 10 Offset: 0 =

TID: 40 Cylinder: 10 Offset: 0 =

TID: 35 Cylinder: 11 Offset: 1 +

TID: 39 Cylinder: 12 Offset: 1 +

TID: 32 Cylinder: 21 Offset: 9 +

TID: 36 Cylinder: 41 Offset: 20 +

TID: 38 Cylinder: 67 Offset: 26 +

TID: 31 Cylinder: 78 Offset: 11 +

TID: 33 Cylinder: 9 Offset: 69 -

TID: 34 Cylinder: 8 Offset: 1 -

Total offset: 138 Transfer times: 10 Average offset: 13 ****** Disk schedule stop working ******

****** Disk schedule start working ******

Start Cylinder: 10

TID: 47 Cylinder: 10 Offset: 0 =

TID: 50 Cylinder: 10 Offset: 0 =

TID: 43 Cylinder: 9 Offset: 1 -

TID: 44 Cylinder: 8 Offset: 1 -

TID: 45 Cylinder: 11 Offset: 3 +

TID: 49 Cylinder: 12 Offset: 1 +

TID: 42 Cylinder: 21 Offset: 9 +

TID: 46 Cylinder: 41 Offset: 20 +

TID: 48 Cylinder: 67 Offset: 26 +

TID: 41 Cylinder: 78 Offset: 11 +

Total offset: 72 Transfer times: 10 Average offset: 7

分析两次结果为何不同:执行完一次ds命令后,该次搜索的指针方向被保存,但是和初始值相比,搜索的方向发生了变化。根据SCAN算法,按一个方向访问磁盘,一个方向访问到尽头后再换一个方向继续访问。下次访问,按上次访问结束时的方向继续访问。于是第二次访问的方向会与第一次不同,造成两次DS命令输出的结果不同。

(二)实验代码及解释

实验结果:

制作软盘镜像...

正在启动Virtual PC...

开始调试...

****** Disk schedule start working ******

Start Cylinder: 10

TID: 37 Cylinder: 10 Offset: 0 =

TID: 40 Cylinder: 10 Offset: 0 =

TID: 39 Cylinder: 12 Offset: 2 +

TID: 32 Cylinder: 21 Offset: 9 +

TID: 36 Cylinder: 41 Offset: 20 +

TID: 38 Cylinder: 67 Offset: 26 +

TID: 34 Cylinder: 78 Offset: 11 +

TID: 33 Cylinder: 9 Offset: 69 -

TID: 31 Cylinder: 8 Offset: 1 -

TID: 35 Cylinder: 0 Offset: 8 -

Total offset: 146 Transfer times: 10 Average offset: 14 ****** Disk schedule stop working ******

****** Disk schedule start working ******

Start Cylinder: 10

TID: 47 Cylinder: 10 Offset: 0 =

TID: 50 Cylinder: 10 Offset: 0 =

TID: 43 Cylinder: 9 Offset: 1 -

TID: 41 Cylinder: 8 Offset: 1 -

TID: 45 Cylinder: 0 Offset: 8 -

TID: 49 Cylinder: 12 Offset: 12 +

TID: 42 Cylinder: 21 Offset: 9 +

TID: 46 Cylinder: 41 Offset: 20 +

TID: 48 Cylinder: 67 Offset: 26 +

TID: 44 Cylinder: 78 Offset: 11 +

Total offset: 88 Transfer times: 10 Average offset: 8

源代码:

PREQUEST

IopDiskSchedule(

VOID

)

{

PLIST_ENTRY pListEntry;

PREQUEST pRequest;

LONG Offset;

ULONG InsideShortestDistance = 0xFFFFFFFF;

ULONG OutsideShortestDistance = 0xFFFFFFFF;

PREQUEST pNextRequest0 = NULL,pNextRequest1=NULL,pNextRequest2=NULL;

//

// 需要遍历请求队列一次或两次

//

for (pListEntry = RequestListHead.Next; // 请求队列中的第一个请求是链表头指向的下一个请求。

pListEntry != &RequestListHead; // 遍历到请求队列头时结束循环。

pListEntry = pListEntry->Next) {

//

// 根据链表项获得请求的指针

//

pRequest = CONTAINING_RECORD(pListEntry, REQUEST, ListEntry);

//

// 计算请求对应的线程所访问的磁道与当前磁头所在磁道的偏移(方向由正负表示)

//

Offset = pRequest->Cylinder - CurrentCylinder;

if (0 == Offset) {

//

// 如果线程要访问的磁道与当前磁头所在磁道相同,可立即返回。

//

pNextRequest0 = pRequest;

return pNextRequest0;

} if (Offset > 0) {

//

// 记录向内移动距离最短的线程

//

if (Offset < InsideShortestDistance) {

InsideShortestDistance = Offset;

pNextRequest1 = pRequest;

}

} if ( Offset < 0) {

//

// 记录向外移动距离最短的线程

//

if (-Offset < OutsideShortestDistance) {

OutsideShortestDistance = -Offset;

pNextRequest2= pRequest;

}

}

}

if(ScanInside)//判断磁头是否有向内移动。如果是则执行下面指令

{

if(pNextRequest1)//判断是否有向内移动的线程。

{

return pNextRequest1;//有则返回向内移动距离最短的线程

}

else

{

ScanInside=!ScanInside;//改变磁头运动方向向外

return pNextRequest2;//没有则返回向外移动距离最短的

线程

}

}

else//如果否则执行下边的指令

{

if(pNextRequest2) //判断是否有向外移动的线程

{

return pNextRequest2; //有则返回向外移动距离最短的线程

}

else

{

ScanInside=!ScanInside;//并改变磁头运动方向向内

return pNextRequest1;//没有则返回向内移动距离最短的线程

}

}

}

四、实验体会

这是操作系统实验的最后一次实验课,反观这一系列的实验,收获很多。实际的操作过程中遇到了很多问题,上机实验就是给我们机会去遇到问题,然后让我们去提高解决问题的能力。编程能力一直是弱点,经过几次试验之后这个短板有所改善,但还是不够,这需要在接下来的学习生活中努力加强。操作系统这门课我一直很重视,上课听得很认真,实验课也是非常重视,加深对理论的理解并且应用到实际中去。这一系列的实验我自己感觉,收获很大。

操作系统实验六磁盘调度算法正确C代码

操作系统实验六磁盘调度算法正确C代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

《操作系统》实验报告 【实验题目】:磁盘调度算法 【实验目的】 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的实现方法。【实验内容】 问题描述: 设计程序模拟先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 程序要求如下: 1)利用先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法模拟磁道访问过程。 2)模拟四种算法的磁道访问过程,给出每个磁道访问的磁头移动距离。 3)输入:磁道个数n和磁道访问序列,开始磁道号m和磁头移动方向(对SCAN和循环SCAN算法有效),算法选择1-FCFS,2-SSTF,3-SCAN,4-循环SCAN。 4)输出:每种算法的平均寻道长度。 实验要求:

1) 上机前认真复习磁盘调度算法,熟悉FCFS,SSTF,SCAN和循环SCAN算法的过程; 2) 上机时独立编程、调试程序; 3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。 实验代码: #include #include #include<> using namespace std; const int MaxNumber=100; int TrackOrder[MaxNumber]; int MoveDistance[MaxNumber];//移动距离 int FindOrder[MaxNumber];//寻好序列 double AverageDistance;//平均寻道长度 bool direction;//方向 true时为向外,false为向里 int BeginNum;//开始磁道号 int M=500;//磁道数 int N;//提出磁盘I/O申请的进程数 int SortOrder[MaxNumber];//排序后的序列 bool Finished[MaxNumber]; void Inith() { cout<<"请输入提出磁盘I/O申请的进程数: "; cin>>N; cout<<"请依次输入要访问的磁道号: "; for(int i=0;i>TrackOrder[i]; for(int j=0;j

操作系统磁盘调度算法实验报告

《操作系统原理》 课程设计报告书 题目:磁盘调度 专业:网络工程 学号: 学生姓名: 指导教师: 完成日期:

目录 第一章课程设计目的 (1) 1.1编写目的 (1) 第二章课程设计内容 (2) 2.1设计内容 (2) 2.1.1、先来先服务算法(FCFS) (2) 2.1.2、最短寻道时间优先算法(SSTF) (2) 2.1.3、扫描算法(SCAN) (3) 2.1.4、循环扫描算法(CSCAN) (3) 第三章系统概要设计 (4) 3.1模块调度关系图 (4) 3.2模块程序流程图 (4) 3.2.1 FCFS算法 (5) 3.2.2 SSTF算法 (6) 3.2.3 SCAN算法 (7) 3.2.4 CSCAN算法 (8) 第四章程序实现 (9) 4.1 主函数的代码实现 (9) 4.2.FCFS算法的代码实现 (11) 4.3 SSTF算法的代码实现 (13) 4.4 SCAN算法的代码实现 (15) 4.5 CSCAN算法的代码实现 (17) 第五章测试数据和结果 (20) 第六章总结 (23)

第一章课程设计目的 1.1编写目的 本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解 1

第二章课程设计内容 2.1设计内容 系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。 2.1.1、先来先服务算法(FCFS) 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。 2.1.2、最短寻道时间优先算法(SSTF) 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。 2

磁盘调度算法的模拟实现

磁盘调度算法的模拟实现 学院 专业 学号 学生姓名 指导教师姓名 2014年3月19日 目录

一、课设简介 (2) 1.1 课程设计题目 (2) 1.2 课程设计目的 (2) 1.3 课程设计要求 (2) 二、设计内容 (3) 2.1功能实现 (3) 2.2流程图 (3) 2.3具体内容 (3) 三、测试数据 (4) 3.3 测试用例及运行结果 (4) 四、源代码 (5) 五、总结 (12) 5.1 总结............................................ 一、课设简介 1.1课程设计题目

磁盘调度算法的模拟实现1 1.2程序设计目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 1)进一步巩固和复习操作系统的基础知识。 2)培养学生结构化程序、模块化程序设计的方法和能力。 3)提高学生调试程序的技巧和软件设计的能力。 4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 1.3 设计要求 1)磁头初始磁道号,序列长度,磁道号序列等数据可从键盘输入,也可从文件读入。 2)最好能实现磁道号序列中磁道号的动态增加。 3)磁道访问序列以链表的形式存储 4)给出各磁盘调度算法的调度顺序和平均寻道长度 二、设计内容 2.1 功能实现 设计并实现一个本别利用下列磁盘调度算法进行磁盘调度的模拟

程序。 1) 先来先服务算法FCFS 2) 最短寻道时间优先算法 SSTF 2.2流程图 2.3具体内容 1)先来先服务算法FCFS 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘 的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请 求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情 况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情开始 选择算法 F C F S S S T F 结束

磁盘调度算法

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)20 08 ~ 20 09 学年第一学期课程名称操作系统指导教师职称讲师 学生姓名专业班级学号06408100139 题目磁盘调度算法的实现与分析 成绩起止日期2008 年12 月24 日~2009 年01 月06日 目录清单 序号材料名称资料数量备注 1 课程设计任务书 1 2 课程设计说明书 1 3 课程设计图纸 1 9 张4 5 6

湖南工业大学 课程设计任务书 2008 —2009 学年第1 学期 计算机与通信学院学院(系、部)专业班级 课程名称:操作系统 设计题目:磁盘调度算法的实现与分析 完成期限:自2008 年12 月24 日至2009 年01 月06 日共 2 周 内容及任务一、设计的主要技术参数 二、设计任务 1.先来先服务算法(FCFS) 2.最短寻道时间优先算法(SSTF) 3.扫描算法(SCAN) 4.循环扫描算法(CSCAN) 三、设计工作量 通过两周的时间进行设计、编码、测试、运行、书写实验报告。 进度安排 起止日期工作内容 2008-12-24至2008-12-27数据结构设计 2008-12-28至2008-12-30编写代码 2008-12-31至2009-01-01调试运行、修改 2009-01-02至2009-01-06得出最终程序、撰写实验报告 主要参考资料[1] 袁庆龙,候文义.Ni-P合金镀层组织形貌及显微硬度研究[J].太原理工 大学学报,2001,32(1):51-53. [2] 刘国钧,王连成.图书馆史研究[M].北京:高等教育出版社,1979:15-18, 31 [3] 孙品一.高校学报编辑工作现代化特征[C].中国高等学校自然科学学报研究会.科技编辑学论文集(2).北京:北京师范大学出版社,1998:10-22 指导教师(签字):年月日 系(教研室)主任(签字):年月日

操作系统实验报告—磁盘调度算法

操作系统实验报告实验3 磁盘调度算法 报告日期:2016-6-17 姓名: 学号: 班级: 任课教师:

实验3 磁盘调度算法 一、实验内容 模拟电梯调度算法,实现对磁盘的驱动调度。 二、实验目的 磁盘是一种高速、大量旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,负担着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请示等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动调度能降低为若干个输入输出请求服务所须的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。 三、实验原理 模拟电梯调度算法,对磁盘调度。 磁盘是要供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求处于等待状态,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。当存取臂仅需移到一个方向最远的所请求的柱面后,如果没有访问请求了,存取臂就改变方向。 假设磁盘有200个磁道,用C语言随机函数随机生成一个磁道请求序列(不少于15个)放入模拟的磁盘请求队列中,假定当前磁头在100号磁道上,并向磁道号增加的方向上移动。请给出按电梯调度算法进行磁盘调度时满足请求的次序,并计算出它们的平均寻道长度。 四、实验过程 1.画出算法流程图。

2.源代码 #include #include #include int *Init(int arr[]) { int i = 0; srand((unsigned int)time(0)); for (i = 0; i < 15; i++) { arr[i] = rand() % 200 + 1; printf("%d ", arr[i]); } printf("\n"); return arr; } void two_part(int arr[]) { int i = 0; int j = 0;

操作系统实验 磁盘调度算法

操作系统 实验报告 哈尔滨工程大学 计算机科学与技术学院

第六讲磁盘调度算法 一、实验概述 1. 实验名称 磁盘调度算法 2. 实验目的 (1)通过学习EOS 实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机; (2)观察 EOS 实现的FCFS、SSTF和 SCAN磁盘调度算法,了解常用的磁盘调度算法; (3)编写 CSCAN和 N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。 3. 实验类型 验证性+设计性实验 4. 实验内容 (1)验证先来先服务(FCFS)磁盘调度算法; (2)验证最短寻道时间优先(SSTF)磁盘调度算法; (3)验证SSTF算法造成的线程“饥饿”现象; (4)验证扫描(SCAN)磁盘调度算法; (5)改写SCAN算法。 二、实验环境 在OS Lab实验环境的基础上,利用EOS操作系统,由汇编语言及C语言编写代码,对需要的项目进行生成、调试、查看和修改,并通过EOS应用程序使内核从源代码变为可以在虚拟机上使用。 三、实验过程 1. 设计思路和流程图 (1)改写SCAN算法 在已有 SCAN 算法源代码的基础上进行改写,要求不再使用双重循环,而是只遍历一次请求队列中的请求,就可以选中下一个要处理的请求。算法流程图如下图所示。 图 3.1.1 SCAN算法IopDiskSchedule函数流程图(2)编写循环扫描(CSCAN)磁盘调度算法 在已经完成的SCAN算法源代码的基础上进行改写,不再使用全局变量ScanInside 确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。

磁盘调度算法文档

《操作系统原理及应用》课程设计报告 磁盘调度算法 学院(系):计算机科学与工程学院 班级:37-5 学号 学生姓名: 时间:从2013 年12 月16日到2013 年12月20日

1、课程设计的目的 本课程设计是学生学习完《操作系统原理及应用》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 2、课程设计的内容及要求 编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度: 要求设计主界面以灵活选择某算法,且以下算法都要实现 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 3、实现原理 磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘时,应采用一种最佳调度算法,以使各进程对磁盘的平均访问时间最小。由于在访问磁盘的时间中,主要是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。目前常用的磁盘调度算法有先来先服务、最短寻道时间优先、扫描和循环扫描等算法。 其中,平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即:L=(M1+M2+……+Mi+……+MN)/N 其中Mi为磁头从上一各磁道到这个磁道所需移动的距离。 4、算法 1.先来先服务算法(FCFS) 这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法只考虑访问者提出访问请求的先后次序,按照先后次序依次访问磁道号。移动距离等于上一个被访问的磁道号减去当前访问的磁道号的绝对值,平均寻道长度等于所有移动距离之和除以磁道被访问的次数。 2.短寻道时间优先算法(SSTF) 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,而不管访问者到来的先后次序。实现时可以先对磁道号进行从小到大排序保存在数组里,然后与当前磁道号比较,选择离自己最近的访问,每比较一次,当前磁道号也跟着变化,移动距离等于上一个被访问的

磁盘调度算法实验报告 (2)(推荐文档)

磁盘调度算法 学生姓名: 学生学号: 专业班级: 指导老师: 2013年6月20日

1、实验目的: 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。 2、问题描述: 设计程序模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN 和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 3、需求分析 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。 通过已知开始磁道数、访问磁道总数、磁道号访问序列、访问方向及访问方式得到访问序列及移动距离和平均移动距离! (1)输入的形式; int TrackOrder[MaxNumber];//被访问的磁道号序列 int direction;//寻道方向 int Num;//访问的磁道号数目

int start;// (2)输出的形式; int MoveDistance[MaxNumber]={0};//移动距离 double AverageDistance=0;//平均寻道长度 移动的序列! (3)程序所能达到的功能; 模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 (4)测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 开始磁道号:100 磁道号方向:内(0)和外(1) 磁道号数目:9 页面序列:55 58 39 18 90 160 150 38 184 4、概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

操作系统磁盘调度算法实验报告

操作系统磁盘调度算法实 验报告 Last revision on 21 December 2020

目录

1.课程设计目的 编写目的 本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。 2.课程设计内容 设计内容 系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。 1、先来先服务算法(FCFS) 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进

程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。 2、最短寻道时间优先算法(SSTF) 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。 3、扫描算法(SCAN) 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到

磁盘调度算法的实现

题目4 磁盘调度算法的实现 4.1 题目的主要研究内容及预期达到的目标 (1)设计磁盘调度请求队列(请求数≥10) (2)设定单位寻道时间; (3)可动态修改磁盘请求时间和磁道; (4)分别实现四种磁盘调度算法; A、先来先服务算法(FCFS)。 B、最短寻道时间优先算法(SSTF)。 C、扫描算法(SCAN)。 D、循环扫描算法(CSCAN)。 (5)实现动态调度并输出调度序列。 (6)理解磁盘调度相关理论; (7)掌握多种磁盘调度算法。 4.2 题目研究的工作基础或实验条件 (1)硬件环境:装有Linux操作系统(虚拟机)的计算机一台。 (2)软件环境:vim编辑器、Visual C++。 4.3 设计思 (1)磁盘调度 磁盘可供多个进程共享,当有多个进程要求访问磁盘时,应采用一种调度算法,以使各进程对磁盘的平均访问时间最小,由于在访问磁盘的时间中,主要是寻道时间,因此磁盘调度的目标就是使磁盘的平均寻道时间最短。 (2)系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。 A、先来先服务算法(FCFS) 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平

均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。因为每个请求都会按照到达先后顺序得到处理,不会出现某个进程的请求长期得不到处理的情况,算法具有一定的公平性。 B、最短寻道时间优先算法(SSTF) 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。此算法会导致与当前磁道距离较远的访问请求长期等待得不到服务,发生进程“饥饿”现象。 C、扫描算法(SCAN) 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。此算法与自然界中电梯的工作方式极为相像,故也称“电梯调度”算法。 D、循环扫描算法(CSCAN) 循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

模拟磁盘调度算法操作系统课程设计

模拟磁盘调度算法操作系 统课程设计 Final approval draft on November 22, 2020

某某大学 课程设计报告课程名称:操作系统 设计题目:模拟磁盘调度算法 系别:计算机系 专业:计算机科学与技术 组别: 学生姓名: 学号: 起止日期: 指导教师: 目录

第一章需求分析 课程设计的简介 这是一个用VC++为工具、C++为编程语言而实现模拟先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)的一个磁盘调度程序。该程序设计系统主界面可以灵活选择某种算法并算出磁头移动的总磁道数以及平均磁道数。 课程设计的目的 本课程设计的目的是通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)等磁盘调度算法的理解。 磁盘调度主要思想 设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。 平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即: L=(M1+M2+……+Mi+……+MN)/N。其中Mi为所需访问的磁道号所需移动的磁道数。 启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。因此,执行一次输入输出所花的时间有: 寻找时间——磁头在移动臂带动下移动到指定柱面所花的时间。 延迟时间——指定扇区旋转到磁头下所需的时间。 传送时间——由磁头进程读写完成信息传送的时间。

(第五讲磁盘调度算法)

实用标准文案 操作系统 实验报告

哈尔滨工程大学计算机科学与技术学院

一、实验概述 1. 实验名称磁盘调度算法 2. 实验目的 (1)通过学习EOS 实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机。 (2)观察EOS实现的FCFS、SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法。 ( 3)编写CSCAN 和N-Step-SCAN 磁盘调度算法,加深对各种扫描算法的理解。 3. 实验类型验证,设计 4. 实验内容 ( 1)准备实验 (2)验证先来先服务(FCFS)磁盘调度算法 (3)验证最短寻道时间优先(SSTF)磁盘调度算法 (4)验证SSTF 算法造成的线程“饥饿”现象 (5.1)验证扫描(SCAN)磁盘调度算法 (5.2)验证SCAN 算法能够解决“饥饿”现象 ( 6 ) 改写SCAN 调度算法 二、实验环境

EOS 操作系统与IDE 环境组成的“操作系统集成实验环境OS Lab ”。 三、实验过程 (一)实验问题及解答 1. 实验指导P176-3.2验证先来先服务(FCFS)磁盘调度算法,要求请给出在“输出”窗口中的结果。 答:输出结果复制如下: 制作软盘镜像... 正在启动Virtual PC... 开始调试... ****** Disk schedule start working ****** Start Cylinder: 10 TID: 31 Cylinder: 8 Offset: 2 - TID: 32 Cylinder: 21 Offset: 13 + TID: 33 Cylinder: 9 Offset: 12 - TID: 34 Cylinder: 78 Offset: 69 + TID: 35 Cylinder: 0 Offset: 78 - TID: 36 Cylinder: 41 Offset: 41 + TID: 37 Cylinder: 10 Offset: 31 -

操作系统磁盘调度算法源代码

1.主界面 void display(){ cout<<"\n\n\n\n Operating Systems Curriculum Design\n"; cout<<"\n ╔———————————————————————————————╗"; cout<<"\n ││"; cout<<"\n │名称: 磁盘调度│"; cout<<"\n ││"; cout<<"\n │工具: Visual Studio 2010 │"; cout<<"\n ││"; cout<<"\n │班级:1205 │"; cout<<"\n ││"; cout<<"\n │作者:xxxx │"; cout<<"\n ││"; cout<<"\n │学号:1324256688 │"; cout<<"\n ││"; cout<<"\n ╚———————————————————————————————╝\n"; system("pause"); system("cls"); 2.前言提示用户此程序实现的算法 cout<<"【载入完成】"<

操作系统实验六磁盘调度算法正确C代码

《操作系统》实验报告 【实验题目】:磁盘调度算法 【实验目的】 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的实现方法。 【实验内容】 问题描述: 设计程序模拟先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 程序要求如下: 1)利用先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN 算法模拟磁道访问过程。 2)模拟四种算法的磁道访问过程,给出每个磁道访问的磁头移动距离。 3)输入:磁道个数n和磁道访问序列,开始磁道号m和磁头移动方向(对SCAN和循环SCAN算法有效),算法选择1-FCFS,2-SSTF,3-SCAN,4-循环SCAN。 4)输出:每种算法的平均寻道长度。 实验要求: 1) 上机前认真复习磁盘调度算法,熟悉FCFS,SSTF,SCAN和循环SCAN

算法的过程; 2) 上机时独立编程、调试程序; 3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。 实验代码: #include #include #include using namespace std; const int MaxNumber=100; int TrackOrder[MaxNumber]; int MoveDistance[MaxNumber];//移动距离 int FindOrder[MaxNumber];//寻好序列 double AverageDistance;//平均寻道长度 bool direction;//方向 true时为向外,false为向里 int BeginNum;//开始磁道号 int M=500;//磁道数 int N;//提出磁盘I/O申请的进程数 int SortOrder[MaxNumber];//排序后的序列 bool Finished[MaxNumber]; void Inith() {

磁盘调度算法实验报告材料 (2)

磁盘调度算法 学生: 学生学号: 专业班级: 指导老师: 2013年6月20日

1、实验目的: 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。 2、问题描述: 设计程序模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN 和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 3、需求分析 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的实现方法。 通过已知开始磁道数、访问磁道总数、磁道号访问序列、访问方向及访问方式得到访问序列及移动距离和平均移动距离! (1)输入的形式; int TrackOrder[MaxNumber];//被访问的磁道号序列 int direction;//寻道方向 int Num;//访问的磁道号数目

int start;// (2)输出的形式; int MoveDistance[MaxNumber]={0};//移动距离 double AverageDistance=0;//平均寻道长度 移动的序列! (3)程序所能达到的功能; 模拟先来先服务FCFS、最短寻道时间优先SSTF、SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。 (4)测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 开始磁道号:100 磁道号方向:(0)和外(1) 磁道号数目:9 页面序列:55 58 39 18 90 160 150 38 184 4、概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

操作系统磁盘调度算法

操作系统课程设计任务书 题目:磁盘调度算法 院系: 专业: 班级: 姓名: 学号: 指导教师: 设计时间: 2018.1.1-2018.1.5

指导教师评语

目录 1、需求分析 (4) 1.1课题描述 (4) 1.2课题目的 (4) 1.3理论依据 (7) 2、概要设计 (8) 2.1设计方法 (8) 2.2技术 (8) 2.3运行环境 (8) 3、详细设计 (9) 3.1流程图 (11) 3.2程序主要代码 (13) 4、运行结果及分析 (14) 4.1运行结果 (15) 4.2结果详细分析 (16) 5、总结和心得 (16) 6、参考文献 (17) 7、附录:程序源代码 (23)

1、需求分析 1.1课题描述 这次课程设计我研究的题目是:磁盘调度算法。具体包括三种算法分别是:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(电梯调度算法)(SCAN)。 1.2课题目的 通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS,最短寻道时间优先SSTF,扫描SCAN算法的实现方法。 1.3理论依据 设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。 平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即:L=(M1+M2+……+Mi+……+MN)

(完整word版)磁盘调度算法的实现与分析

计算机操作系统课程设计 设计说明书 (题目) 磁盘调度算法的实现与分析 起止日期:2013 年12 月25 日至2013年12 月31 日 学生姓名 班级 学号 成绩 指导教师(签字) 计算机与通信学院 2013年12 月31 日

目录 1 课程设计简介 (3) 1.1 课程设计的目的 (3) 1.2 课程设计内容 (3) 2 数据结构的设计 (4) 2.1 变量和数组的定义 (4) 2.2函数的定义 (4) 3 功能模块(或算法)描述 (4) 3.1模块划分 (4) 3.2 模块调用关系图 (8) 4 程序运行结果..................................... 错误!未定义书签。 5 心得体会 (12) 参考文献 (13) 附源代码 (13)

1 课程设计简介 1.1 课程设计的目的 本课程设计的目的是通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解。 1.2 课程设计内容 系统主界面可以灵活选择某种算法,算法包括:先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)、循环扫描算法(CSCAN)。 1、先来先服务算法(FCFS) 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。 2、最短寻道时间优先算法(SSTF) 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。 3、扫描算法(SCAN) 扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即

磁盘调度算法实验报告

磁盘调度算法实验报告文档 1.依次输入9个磁道数:40 90 170 38 110 20 144 48 59 2.选择调度算法: 先来先服务算法访问顺序和平均寻道长度: 最短寻道时间优先的访问顺序和平均寻道长度:

扫描算法的磁道访问顺序和平均寻道长度:1.移动壁由里向外 2.移动壁由外向里 循环算法的磁道访问顺序和平均寻道长度:1.移动壁由里向外

2.移动壁由外向里 源代码为: #include #include void FCFS(int b[],int n,int init) //先来先服务{ int i,s,sum; int a[20]; for(i=0;i

{ int i,j,s,sum=0,p; int a[20]; for(i=0;i=0;i--) { s=a[0]; p=0; for(j=0;j<=i;j++) if(abs(a[j]-k)=0;i--) { biaoji=0; for(j=0;j<=i;j++) if(a[j]-k<0) { biaoji=1; p=j; break; } if(biaoji==1) { s=a[p]; for(j=0;j<=i;j++) if(a[j]

操作系统实验四-磁盘调度算法

实验四磁盘调度 一、实验目的: 本实验要求学生模拟设计一个磁盘调度程序,观察调度程序的动态运行过程。通过实验让学生理解和掌握磁盘调度的职能。 二、实验内容: 对磁盘进行移臂操作,模拟磁盘调度算法并计算平均寻道时间 三、实验准备: 1.相关理论知识: (1)假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。 (3)磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求。由于磁盘访问时间主要受寻道时间T的影响,为此需要采用合适的寻道算法,以降低寻道时间。 (2)磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求而处于等待状态时,可用磁盘调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。 2.测试数据: 磁盘读写请求队列:20,44,40,4,80,12,76 当前磁头位置:50 试问采用FCFS、SSTF、SCAN磁盘调度算法时寻道顺序及平均寻道时间分别为多少? 四、实验过程: 1.流程图 SCAN算法(扫描算法)流程图:

2. 源代码 #include #include #include #include #define maxsize 1000 /*********************判断输入数据是否有效**************************/

相关文档
相关文档 最新文档