当前位置:文档之家› 磁盘调度

磁盘调度

磁盘调度
磁盘调度

题目8 磁盘调度

一、实验目的

1、对磁盘调度的相关知识作进一步的了解,明确磁盘调度的原理。

2、加深理解磁盘调度的主要任务。

3、通过编程,掌握磁盘调度的主要算法。

二、实验内容和要求

1、对于如下给定的一组磁盘访问进行调度:

2、要求分别采用先来先服务、最短寻道优先以及电梯调度方法进行调度。

3、要求给出每种算法中磁盘访问的顺序,计算出平均移动道数。

4、假定当前读写头在90号,向磁道号增加的方向移动。

三、实验报告

1、程序中使用的数据结构及符号说明。

2、给出主要算法的流程图。

3、给出程序清单并附上注释。

4、给出测试数据和运行结果。

程序:

#include

#include

void main()

{

//请求服务到达 A B C D E F G H I J K //访问的磁道号30 50 100 180 20 90 150 70 80 10 160

//要求给出每种算法中磁盘访问的顺序,计算出平均移动道数。

//假定当前读写头在号,向磁道号增加的方向移动。

//初始化

int track[N],track2[N+1];

int i ;

printf("请输入访问磁道序列:\n");

for (i=0;i

{

scanf("%d",&track[i]);

track2[i] = track[i] ;

}

//先来先服务

printf("先来先服务:");

for (i=0;i

{

printf("%d ",track[i]);

}

double s = abs(90-track[0]) ;

for (i=0;i<=N-2;i++)

{

s += abs(track[i]-track[i+1]) ;

}

printf("\n平均移动磁道数:%0.1lf\n\n",s/N);

//最短寻道优先

s = 0 ;

printf("最短寻道优先:");

int temp[N];

track2[N] = 90 ;

int k = N ; //当前磁道

int flag ; //标志

int min; //最小差值

int t ; //最小差值的数组下标

int j;

for (j=0 ; j

{

flag = 0;

for (i=0;i

{

if((i!=k)&&flag==0&& track2[i]!=-1)

min = abs(track2[i]- track2[k]);

t = i;

flag++;

}

if((i!=k)&&(track2[i]!=-1)&&(abs(track2[i]-track2[k]) < min ) )

{

min =abs(track2[i]-track2[k]);

t = i;

}

}

s += min ;

temp[j] = t ;

track2[k] = -1 ;

k = t ;

}

for(i=0;i

printf("%d ",track[temp[i]]);

printf("\n平均移动磁道数:%0.1lf\n\n",s/N);

//电梯调度方法

s = 0 ;

printf("电梯调度:");

for (i=0;i

{

for (j=0;j

{

if (track[j]>track[j+1])

{

t=track[j];track[j]= track[j+1];track[j+1]=t;

}

}

}

for (i=0;i

{

if (track[i]>90)

break;

}

for (j=i;j

printf("%d ",track[j]);

for(j=i-1;j>=0;j--)

printf("%d ",track[j]);

s = (track[N-1]-90)+(track[N-1]-track[0]);

printf("\n平均移动磁道数:%0.1lf",s/N);

printf("\n");

}

运行结果:

作业6--磁盘驱动调度-答案

作业6磁盘驱动调度 1磁盘共有100各柱面,若干个等待访问磁盘者依次要访问的柱面为20 , 44, 40, 4, 80, 12, 76。假设每移动一个柱面需要3ms时间,移动臂当前位于36号柱面,试问对以下 几种磁盘请求调度算法而言,满足以上请求序列,磁头将分别如何移动?并计算为完成 上述各次访问总共花费的寻找时间。 ①先来先服务算法(FCFS)。 ②最短寻找时间优先算法(SSTF)。 ③扫描算法(SCAN)。 ④循环扫描算法(CSCAN)。 1.解 ①先来先服务算法,磁头移动示意图: 0 4 12 20 36 40 44 先来先服务算法磁头的移动顺序为:20,44,40,4,80,12,76。 花费的寻找时间为:(16+24+4+36+76+68+64)*3=864(ms) ②最短寻找时间优先算法,磁头移动示意图: 0 4 12 20 36 40 44 76 80 99 最短寻找时间优先算法磁头的移动顺序为:40,44,20,12,4,76,80 花费的寻找时间为:(4+4+24+8+8+72+4)*3=372 ( ms) 76 80 99

③扫描(电梯调度)算法,磁头移动示意图: 电梯调度算法磁头移动的顺序为:40, 44, 76, 80, 20, 12, 4 花费的寻找时间为:(44+76)*3=360(ms) ④循环扫描算法(CSCAN,磁头移动示意图: 循环扫描算法磁头移动的顺序为:40, 44, 76, 80, 4, 12, 20 花费的寻找时间为:(44+76+16)*3=408(ms) 【下载本文档,可以自由复制内容或自由编辑修改内容,更多精彩文章,期待你的好评和关注,我将一如既往为您服务】

磁盘驱动器

磁盘驱动器 磁盘驱动器分软盘驱动器和硬盘驱动器,是目前微型计算机上配置的最重要的外存储器,特别是硬盘,具有容量大,数据存取速度快,是各种计算机安装程序、保存数据的最重要存储设备。 软盘驱动器 软盘驱动器是抽取式储存装置中的一种,目前市面上流行的几种抽取式储存装置,包括磁介质的Zip,LS-120软盘,Jaz,Winchester磁盘(包括SyQuest),和磁光介面的MO,PD等。一般来说,这些介面可以配接大部份目前最流行的接驳口,包括并行接口,ATAPI(IDE硬盘接口),SCSI接口,和专为笔记本电脑而设的PCMCIA卡端子。另外,不同的储存媒介有着不同的性能和容量;一般来说,软磁盘介面的容量和速度都比较低,每储存单位的价钱则属于中游价格。硬盘式储存媒介则是最高速的一类,其每单位的价格则不算太贵,可能是因为每个储存介面的容量大,所以除开来的储存价格都算合理。磁光介面的储存媒体是价钱最便宜的,而且速度比软盘高,可是由于驱动器牵涉镭射光学装置,故一般都比较昂贵。 新型的软盘驱动 目前微型计算机已进入千兆字节时代,而与之相配的软盘已不堪重任,进入老化时期。近几年,新软盘技术不断出现,使软盘的容量越来越大,数据存取速度越来越高,甚至有些新软盘的容量超过了旧硬盘的软盘容量。目前流行的大容量软盘驱动器主要有ZIP、LS120和M.O.(Magneto Optical)等。下面分别给予介绍。 ZIP磁盘驱动器 ZIP驱动器是美国IOMEGA公司研制生产的一种大容量磁盘驱动器,每张磁盘存储量100MB,适用于DOS、Windows、Mac OS、OS/2。作为新一代可交换存储设备,ZIP适用于数据的存档、转移和共享,随着Internet的广泛应用,人们可以利用这种新存储设备方便地把网上信息拷贝下来。它是软盘驱动器的最佳替代品,在国际市场上的占有率比其他外部存储设备如IOMEGA公司的JAZ活动硬盘驱动器、SYQUEST公司的EZFILYER驱动器和可擦写MO(磁光)驱动器而言相

作业调度_实验报告

实验名 称 作业调度 实验内容1、设计可用于该实验的作业控制块; 2、动态或静态创建多个作业; 3、模拟先来先服务调度算法和短作业优先调度算法。 3、调度所创建的作业并显示调度结果(要求至少显示出各作业的到达时间,服务时间,开始时间,完成时间,周转时间和带权周转时间); 3、比较两种调度算法的优劣。 实验原理一、作业 作业(Job)是系统为完成一个用户的计算任务(或一次事物处理)所做的工作总和,它由程序、数据和作业说明书三部分组成,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。 二、作业控制块J C B(J o b C o nt r o l Bl o ck) 作业控制块JCB是记录与该作业有关的各种信息的登记表。为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块,如同进程控制块是进程在系统中存在的标志一样,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。在JCB中所包含的内容因系统而异,通常应包含的内容有:作业标识、用户名称、用户帐户、作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业已运行时间)、资源需求(预计运行时间、要求内存大小、要求I/O设备的类型和数量等)、进入系统时间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等。 三、作业调度 作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行。 四、选择调度算法的准则 1).面向用户的准则 (1) 周转时间短。通常把周转时间的长短作为评价批处理系统的性能、选择作业调度方式与算法的重要准则之一。所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称

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

操作系统磁盘调度算法 实验报告 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

目录

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

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

操作系统课程设计磁盘调度报告

题目:磁盘调度 一.设计目的 本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,我们更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了动手能力。 二.课程设计内容和要求 编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度,要求设计主界面以灵活选择某算法,且以下算法都要实现: 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 三.算法及数据结构 3.1算法的总体思想 设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。 平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即: L=(M1+M2+……+Mi+……+MN)/N 其中Mi为所需访问的磁道号所需移动的磁道数。 启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。因此,执行一次输入输出所花的时间有: 寻找时间——磁头在移动臂带动下移动到指定柱面所花的时间。 延迟时间——指定扇区旋转到磁头下所需的时间。 传送时间——由磁头进程读写完成信息传送的时间。 其中传送信息所花的时间,是在硬件设计就固定的。而寻找时间和延迟时间是与信息在磁盘上的位置有关。 为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上。而是按柱面存放,同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以各磁盘的编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。 3.2算法实现

操作系统磁盘调度SCAN算法

#include #include #include #include typedefstruct_proc { char name[100]; /*定义进程名称*/ int team; /*定义柱面号*/ int ci; /*定义磁道面号*/ int rec; /*定义记录号*/ struct_proc *prior; struct_proc *next; }PRO; PRO *g_head = NULL, *g_curr = NULL, *local; int record = 0; //初始柱面号 int yi = 1; //初始方向 int rec0 = 0; //初始记录号 void init() { PRO *p; /*初始化链表(初始I/O表)*/ g_head = (PRO*)malloc(sizeof(PRO)); g_head->next = NULL; g_head->prior = NULL; p = (PRO*)malloc(sizeof(PRO)); strcpy_s(p->name, "P1"); p->team = 100; p->ci = 10; p->rec = 1; p->next = NULL; p->prior = g_head; g_head->next = p; g_curr = g_head->next; p = (PRO*)malloc(sizeof(PRO)); strcpy_s(p->name, "P2"); p->team = 50; p->ci = 10; p->rec = 5; p->next = NULL; p->prior = g_curr;

磁盘驱动读取系统的分析设计

磁盘驱动读取系统的分析设计 一、闭环系统的性能分析 (1)确定使闭环系统稳定的Ka 的取值范围 >> G1=tf([5000],[1,1000]); >> G2=tf([1],conv([1,0],[1,20])); >> G=series(G1,G2) Transfer function: 5000 ------------------------ s^3 + 1020 s^2 + 20000 s g3= s s s K 2000010205000023++ 一一开环传函 G3=K s s s K 500002000010205000023+++ 一一闭环传函 >> syms K den >> den=[1 1020 20000 5000*K]; >> K=den(2)*den(3)/den(1)/5000 K = 4080 有劳斯判据可得k 的范围是0< K< 4080 (2)在上述取值范围内取较小和较大的两个Ka 值,仿真闭环系统的阶跃响应,并进行分析 K=100时 >> g=100*G g1=feedback(g,1) C=dcgain(g1) Transfer function:

500000 ------------------------ s^3 + 1020 s^2 + 20000 s Transfer function: 500000 --------------------------------- s^3 + 1020 s^2 + 20000 s + 500000 C = 1 [c,t]=step(g1); >> [y,k]=max(c); >> percentovershoot=100*(y-C)/C percentovershoot = 21.6918 >>t=setllingtime(g1) t = 0.3697 K=1000时 >> g=1000*G Transfer function: 5e006 -------------------------------- s^3 + 1020 s^2 + 20000 s >> g2=feedback(g,1) Transfer function: 5e006 ------------------------------------------ 调节时间函数s^3 + 1020 s^2 + 20000 s + 5e006 >> [c,t]=step(g2); >> C=dcgain(g2) C = 1 >> [y,k]=max(c) y = 1.7109 k =

磁盘调度实验报告

计算机操作系统实验报告 班级08计算机2班学号0800303226 姓名罗院

实验目的 编程模拟实现磁盘调度的常用算法或调试分析相关磁盘调度程序,加深对磁盘调度常用算法的理解和实现技巧 实验内容 1、自定义磁盘调度相关的数据结构 2、依据先来先服务(FCFS)、最短寻道时间(SSTF),编写对应函数,模拟系统 的磁盘调度服务 实验代码 #include #include #include #include #include #define TotalSearch 20 //FCFS float Averg_FCFS(int array[],int num) { int i; float averg,sum=0; printf("FCFS算法寻道:\n"); for(i=0;i

printf("SSTF算法寻道:\n"); for(i=0;i

模拟电梯调度算法,实现对磁盘的驱动调度。

操作系统实验 (第三次) 一、实验内容 模拟电梯调度算法,实现对磁盘的驱动调度。 二、实验目的

磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅 助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。 三、实验题目 模拟电梯调度算法,对磁盘进行移臂和旋转调度。 [提示]: (1)磁盘是可供多个进程共享的存储设备,但一个磁盘每时刻只能为一个进程服务。 当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出要求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。选择访问者的工作由“驱动调度”进程来完成。 由于磁盘与处理器是可以并行工作的、所以当磁盘在作为一个进程服务时,占有处理 器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的输入输出请求。为了模拟这种情况,在本实验中设置了一个“接收请求”进程。 “驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信 号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序,以代替中断四、处理和处理器调度选择的过程。因而,程序的结构可参考图3—1

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

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

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

磁盘驱动器

第7章 磁盘驱动器 7.1 IDE接口概述 在PC中用于连接磁盘驱动器的主要接口中,一类典型的接口是IDE(Integrated Drive Electronics,集成驱动器电路)接口。这个接口所反映的是接口电路或控制器内置于驱动器自身这一事实。在IDE接口出现之前,驱动器和控制器的接口是分离的,因而可以说IDE是以前接口的革命化变革。IDE的原名叫ATA (AT Attachment,AT嵌入式接口), IDE和ATA实际上描述的是同一种接口,因此可以互换使用。尽管IDE的使用更加流行和广泛,但从技术上来看,ATA才是真正的称呼。如果吹毛求疵一点儿,可以这样认为:IDE通常指任何一种将控制器嵌入到驱动器的驱动器接口;而ATA则是PC机中IDE接口所遵循的标准或具体的实现。如今,ATA不仅被用于硬盘驱动器,还用于CD-ROM驱动器,DVD驱动器,高容量超级软盘驱动器以及磁带驱动器。 ATA是一个16位并行接口,即可以通过接口电缆同时传输16位数据。2000年底,一种称为串行ATA (Serial ATA)的新接口由官方正式发布,从2002年起将被各种系统陆陆续续地采纳。串行ATA(SATA)一次向电缆上发送一位数据,这样就可以使用更短更细的电缆;同时由于速率增加,性能也有很大的提高。SATA是一种全新的物理接口,但在软件级则与并行ATA保持兼容。在本书中,术语ATA指的是并行接口,而SATA指的是串行接口。 许多系统主板上的ATA连接器实际上就是一条ISA(或AT)总线槽。在ATA的安装中,一般只使用了98针中的40针,标准的16位ISA总线槽都会提供这些针。应该注意的是,较小的2.5英寸ATA驱动器使用一种44针的连接,包含了电源和配置所需的针。使用的针仅仅是那些标准型的XT或AT硬盘控制器所必需的信号针。举例而言,由于基本的AT型磁盘控制器仅使用中断行14,那么基本的主板ATA IDE 连接器也就仅提供该中断行,其他中断行是不必要的。已经过时的8位 XT IDE主板连接器提供中断行5,那是因为XT控制器需要用到它。注意,即使所用的ATA接口连接于主板芯片组上的South Bridge芯片或I/O控制器Hub芯片(它可能出现在较新的系统中)并且以较快的总线速度运行,所用针的输出针和功能也没有什么不同。 这里要澄清一个问题,就是许多人在使用主板上装有ATA连接器的系统时,都认为硬盘控制器也安装在主板上,而实际上控制器是在驱动器中,还没有哪个PC系统将硬盘控制器安装到主板上。尽管集成于主板上的ATA端口常被称为“控制器”,他们实际上应被叫做“主机适配器”(诚然,该术语并不常见)。主机适配器可以看作是连接控制器与总线的设备。 7.2 IDE接口类型 曾经存在四种基于三种不同总线标准的主要的IDE接口类型: ·串行ATA(SATA)。 · AT嵌入式接口(ATA)IDE(16位ISA)。 · XT IDE(8位ISA)。 · MCA IDE(16位微通道)。 其中,只有ATA现在还在使用,它与串行ATA一起,已发展成为更新、更快、更强大的版本。这些发展了的ATA并行版本指的是ATA-2及其更高版本,它们也被称为EIDE(增强型IDE)、快速ATA、ultra-ATA 或Ultra-DMA,尽管ATA最终可能只能发展到ATA-6版本,但串行ATA弥补了 ATA的不足,其性能更加优越,便于以后版本的升级。

作业调度实验报告

实验二作业调度 一. 实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS,最短作业优先(SJF)、响应 比高者优先(HRN的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业, 先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准, 总是优先选取执行时间最短的作业。 (3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。 2、编写并调度一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进 行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 二. 实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解 三. 实验过程 < 一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: zuoye.c 执行程序: zuoye.exe 2)实验分析:

1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资 源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到 满足,它所占用的CPU时限等因素。 2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、 提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业 的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一 每个作业的最初状态总是等待W 3、对每种调度算法都要求打印每个作业幵始运行时刻、完成时刻、周转时 间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间 3) 流程图: .最短作业优先算法 三.高响应比算法 图一.先来先服务流程图 4) 源程序: #in elude #in elude #in elude vconi o.h> #defi ne getpeh(type) (type*)malloc(sizeof(type)) #defi ne NULL 0 int n; float T1=0,T2=0; int times=0;

磁盘调度实验报告

操作系统实验报告课程名称:计算机操作系统 实验项目名称:磁盘调度实验时间: 班级:姓名:学号: 实验目的: 对操作系统的磁盘调度基础理论和重要算法的理解,加强动手能力。 实验环境: PC机 win7 Visual C++ 实验内容: 编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度,要求设计主界面以灵 活选择某算法,且以下算法都要实现: 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 实验过程: 1.依次输入8个磁道数:123 45 31 67 20 19 38,并以0 结束 2.选择调度算法: (1)先来先服务算法(FCFS) (2)最短寻道时间优先算法(SSTF) 成绩: 指导教师(签名):

(3)扫描算法(SCAN) (4)循环扫描算法(CSCAN) 实验心得: 通过本次实验,学习了解磁盘调度的工作原理及四种调度方法的工作原理,并且在当中

发现了自己的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。 附录: #include #include #include #include #define maxsize 1000 /*********************判断输入数据是否有效**************************/ int decide(char str[]) //判断输入数据是否有效 { int i=0; while(str[i]!='\0') { if(str[i]<'0'||str[i]>'9') { return 0; break; } i++; } return i; } /******************将字符串转换成数字***********************/ int trans(char str[],int a) //将字符串转换成数字 { int i; int sum=0; for(i=0;icidao[j]) { temp=cidao[i]; cidao[i]=cidao[j]; cidao[j]=temp; } } cout<<" 排序后的磁盘序列为:"; for( i=0;i

先来先服务FCFS和短作业优先SJF进程调度算法_实验报告材料

先来先服务FCFS和短作业优先SJF进程调度算法 1、实验目的 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 2、需求分析 (1) 输入的形式和输入值的范围 输入值:进程个数Num 范围:0

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 4、详细设计 5、调试分析 (1)调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析 ○1开始的时候没有判断进程是否到达,导致短进程优先算法运行结果错误,后来加上了判断语句后就解决了改问题。 ○2 基本完成的设计所要实现的功能,总的来说,FCFS编写容易,SJF 需要先找到已经到达的进程,再从已经到达的进程里找到进程服务时间最短的进程,再进行计算。 (2)算法的改进设想 改进:即使用户输入的进程到达时间没有先后顺序也能准确的计算出结果。(就是再加个循环,判断各个进程的到达时间先后,组成一个有序的序列) (3)经验和体会 通过本次实验,深入理解了先来先服务和短进程优先进程调度算法的思想,培养了自己的动手能力,通过实践加深了记忆。 6、用户使用说明 (1)输入进程个数Num

天津理工大学操作系统实验3:磁盘调度算法的实现

人和以吟实验报告学院(系)名称:计算机与通信工程学院

【实验过程记录(源程序、测试用例、测试结果及心得体会等) 】 #include #include #include using namespace std; void Inith() { cout<<" 请输入磁道数: "; cin>>M; cout<<" 请输入提出磁盘 I/O 申请的进程数 cin>>N; cout<<" 请依次输入要访问的磁道号: "; for(int i=0;i>TrackOrder[i]; for(int j=0;j>BeginNum; for(int k=0;k=0;i--) for(int j=0;jSortOrder[j+1]) const int MaxNumber=100; int TrackOrder[MaxNumber]; int MoveDistance[MaxNumber]; // ------- int FindOrder[MaxNumber]; // ---------- double AverageDistance; // ----------- bool direction; // int BeginNum; // int M; // int N; // int SortOrder[MaxNumber]; // ------ bool Finished[MaxNumber]; 移动距离 ; 寻好序列。 平均寻道长度 方向 true 时为向外, false 开始磁道号。 磁道数。 提出磁盘 I/O 申请的进程数 排序后的序列 为向里

作业调度实验报告

作业调度实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

实验二作业调度 一.实验题目 1、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 (1)先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。 (2)最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。 (3)响应比高者优先算法:是在每次调度前都要计算所有被选作业(在后备队列中)的响应比,然后选择响应比最高的作业执行。 2、编写并调度一个多道程序系统的作业调度模拟程序。 作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。 二.实验目的: 本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解三 .实验过程 <一>单道处理系统作业调度 1)单道处理程序作业调度实验的源程序: 执行程序: 2)实验分析:

1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU 时限等因素。 2、每个作业由一个作业控制块JCB 表示,JCB 可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W 。 3、对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。 3)流程图: 二.最短作业优先算法 三.高响应比算法 图一.先来先服务流程图 4)源程序: #include <> #include <> #include <> #define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 int n; float T1=0,T2=0; int times=0; struct jcb .\n",p->name); free(p); .wait...",time); if(times>1000) 代替 代替

操作系统驱动调度

实验三驱动调度 一、实验容 模拟电梯调度算法,实现对磁盘的驱动调度。 二、实验目的 磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。 三、数据结构 #define M 20 typedef struct PCB { char proc[M];//进程名 int cylinder_num;//柱面号 int track_num;//磁道号

int phy_num;//物理记录号 struct PCB *next; }PCB; 四、实验题目 模拟电梯调度算法,对磁盘进行移臂和旋转调度。 (1)磁盘是可供多个进程共享的存储设备,但一个磁盘每时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出要求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。选择访问者的工作由“驱动调度”进程来完成。 由于磁盘与处理器是可以并行工作的、所以当磁盘在作为一个进程服务时,占有处理器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的输入输出请求。为了模拟这种情况,在本实验中设置了一个“接收请求”进程。 “驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序,以代替中断处理和处理器调度选择的过程。因而,程序的结构可参考图3—1 (2)“接收请求”进程建立一“请求I/O”表,指出访问磁盘的进程要求访问的物理地址,表的格式为:

操作系统实验报告-作业调度

作业调度 一、实验目的 1、对作业调度的相关内容作进一步的理解。 2、明白作业调度的主要任务。 3、通过编程掌握作业调度的主要算法。 二、实验内容及要求 1、对于给定的一组作业, 给出其到达时间和运行时间,例如下表所示: 2、分别用先来先服务算法、短作业优先和响应比高者优先三种算法给出作业的调度顺序。 3、计算每一种算法的平均周转时间及平均带权周转时间并比较不同算法的优劣。

测试数据 workA={'作业名':'A','到达时间':0,'服务时间':6} workB={'作业名':'B','到达时间':2,'服务时间':50} workC={'作业名':'C','到达时间':5,'服务时间':20} workD={'作业名':'D','到达时间':5,'服务时间':10} workE={'作业名':'E','到达时间':12,'服务时间':40} workF={'作业名':'F','到达时间':15,'服务时间':8} 运行结果 先来先服务算法 调度顺序:['A', 'B', 'C', 'D', 'E', 'F'] 周转时间: 带权周转时间:

短作业优先算法 调度顺序:['A', 'D', 'F', 'C', 'E', 'B'] 周转时间: 带权周转时间:1. 响应比高者优先算法 调度顺序:['A', 'D', 'F', 'E', 'C', 'B'] 周转时间: 带权周转时间: 五、代码 #encoding=gbk workA={'作业名':'A','到达时间':0,'服务时间':6,'结束时间':0,'周转时间':0,'带权周转时间':0} workB={'作业名':'B','到达时间':2,'服务时间':50} workC={'作业名':'C','到达时间':5,'服务时间':20} workD={'作业名':'D','到达时间':5,'服务时间':10} workE={'作业名':'E','到达时间':12,'服务时间':40} workF={'作业名':'F','到达时间':15,'服务时间':8} list1=[workB,workA,workC,workD,workE,workF] list2=[workB,workA,workC,workD,workE,workF] list3=[workB,workA,workC,workD,workE,workF] #先来先服务算法 def fcfs(list): resultlist = sorted(list, key=lambda s: s['到达时间']) return resultlist #短作业优先算法 def sjf(list): time=0 resultlist=[] for work1 in list: time+=work1['服务时间'] listdd=[] ctime=0 for i in range(time): for work2 in list: if work2['到达时间']<=ctime: (work2) if len(listdd)!=0: li = sorted(listdd, key=lambda s: s['服务时间']) (li[0]) (li[0]) ctime+=li[0]['服务时间'] listdd=[]

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

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

第六讲磁盘调度算法 一、实验概述 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 确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。

相关主题
文本预览
相关文档 最新文档