当前位置:文档之家› 操作系统 -磁盘调度

操作系统 -磁盘调度

操作系统 -磁盘调度
操作系统 -磁盘调度

磁盘调度算法

一、实验目的

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

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

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

二、实验内容和要求

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

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

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

三、实验报告

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

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

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

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

#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; //----磁道数。

int N; //-----提出磁盘I/O申请的进程数

int SortOrder[MaxNumber]; //----排序后的序列

bool Finished[MaxNumber];

void Inith()

{

cout<<"请输入磁道数(最大磁盘数目):";

cin>>M;

cout<<"请输入提出磁盘I/O申请的进程数:";

cin>>N;

cout<<"请依次输入要访问的磁道号:";

for(int i=0;i

cin>>TrackOrder[i];

for(int j=0;j

MoveDistance[j]=0;

cout<<"请输入开始磁道号:";

cin>>BeginNum;

for(int k=0;k

Finished[k]=false;

for(int l=0;l

SortOrder[l]=TrackOrder[l];

}

//=====================排序函数,将各进程申请的磁道按从小到大排列=================

void Sort()

{ //------冒泡排序

int temp;

for(int i=N-1;i>=0;i--)

for(int j=0;j

{

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

{

temp=SortOrder[j];

SortOrder[j]=SortOrder[j+1];

SortOrder[j+1]=temp;

}

}

}

//============先来先服务=================================

void FCFS()

{

int temp;

temp=BeginNum; //--------将BeginNum赋给temp作为寻道时的当前所在磁道号for(int i=0;i

{

MoveDistance[i]=abs(TrackOrder[i]-temp); //-------计算移动磁道数

temp=TrackOrder[i]; //-------寻到后,将此道作为当前所在磁道号,赋给temp

FindOrder[i]=TrackOrder[i]; //-----寻好的赋给寻好序列}

}

//========最短寻道法=============================

void SSTF()

{

int temp,n;

int A=M;

temp=BeginNum; //--------将BeginNum赋给temp作为寻道时的当前所在磁道号

for(int i=0;i

{

for(int j=0;j

{

if(abs(TrackOrder[j]-temp)

{

A=abs(TrackOrder[j]-temp);

n=j;

}

else continue;

}

Finished[n]=true; //-------将已经寻找到的Finished赋值为true

MoveDistance[i]=A; //-------寻道长度

temp=TrackOrder[n]; //-------当前寻道号。

A=M; //-----重置A值

FindOrder[i]=TrackOrder[n]; //----寻好的赋给寻好序列

}

}

//=====================S扫描算法(电梯调度算法)==========================

void SCAN()

{

int m,n,temp;

temp=BeginNum;

Sort(); //------排序

cout<<"请选择开始方向:.向外扫描;0.向里扫描"; //------选择扫描方向

cin>>m;

if(m==1)

direction=true;

else if(m==0)

direction=false;

else

cout<<"输入错误!";

for(int i=0;i

{

if(SortOrder[i]

continue;

else

{

n=i;

break;

}

}

if(direction==true) //------选择向外

{

for(int i=n;i

{

MoveDistance[i-n]=abs(SortOrder[i]-temp);

temp=SortOrder[i];

FindOrder[i-n]=SortOrder[i];

}

for(int j=n-1;j>=0;j--)

{

MoveDistance[N-1-j]=abs(SortOrder[j]-temp);

temp=SortOrder[j];

FindOrder[N-1-j]=SortOrder[j];

}

}

else//-------选择向里

{

for(int i=n-1;i>=0;i--)

{

MoveDistance[N-i-4]=abs(SortOrder[i]-temp);

temp=SortOrder[i];

FindOrder[N-i-4]=SortOrder[i];

}

for(int j=n;j

{

MoveDistance[j]=abs(SortOrder[j]-temp);

temp=TrackOrder[j];

FindOrder[j]=SortOrder[j];

}

}

}

void Count()

{

int Total=0;

for(int i=0;i

{

Total+=MoveDistance[i];

}

AverageDistance=((double)Total)/((double)N);

}

void Show()

{

cout<<"================从"<

cout<

for(int i=0;i

{

cout<

}

cout<

cout<

}

int main()

{

int y=1;

int s;

Inith();

while(y)

{

cout<<"请选择寻道方式:.先来先服务算法; 2.最短寻道优先算法; 3.电梯调度算法(扫描算法)";

cin>>s;

switch(s)

{

case 1:FCFS();Count();Show();break;

case 2:SSTF();Count();Show();break;

case 3:SCAN();Count();Show();break;

}

cout<<"是否继续选择寻道算法?.是;.否";

int p;

cin>>p;

y=p;

}

return 0;

}

最短寻道优先算法

(1)

(2)

(范文素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

一个硬盘上安装双操作系统或多操作系统的方法

一个硬盘上安装双操作系统或多操作系统的方法 先在你用的系统里准备好二个以上的主分区,注意是主分区,不是逻辑分区,一个硬盘上最多只能有4个主分区,这是系统决定的。创建主分区有多种方法,一种是WINDOWS 自带的,另一种是用第三方软件,比如分区大师PQMagic等等。如果你已经把硬盘全部容量作为一个分区来使用了,那只能用分区大师之类的软件了,它们的一个重要功能就是可以在不破坏原有数据的情况下改变分区的大小。运行软件,创建新的主分区后退出软件,注意只有主分区,才可以改变成为活动分区,也即为开机时的引导分区。这时你还不能马上重启电脑,因为你重启电脑还是进入你原先的系统。先要右击桌面上的我的电脑,选管理,点击磁盘管理,这时你可以看到新创建的主分区,右击该分区,点击将磁盘分区标为活动的,这时会弹出一个提示对话框,提醒你如果分区上没有有效的系统文件,更改磁盘上的活动分区将使磁盘无法使用,按“是”,这时可以重启电脑了。你的电脑开机引导如果是光驱在硬盘前,就可以进行你第二个系统安装了,如果不是光驱引导在先,需要进入BIOS里改一下,保存修改后再重启,就可以顺利安装新的操作系统了。完成后在你的电脑里有两个系统,当你开机时如果没有让你选择的菜单,你要在C盘的boot.ini中加一条内容,你可以复制前一条,注意把新加的一条multi(0)disk(0)rdisk(0)partition(1)\中的“1”改为“2”,这个数字对应你的新的磁盘分区在磁盘管理中的从左到右的位置顺序,从1到4,逻辑分区没有对应的数字,因为不能标为活动分区的原因。在“\”之后的“WINDOWS=”这样的标识符,一定要与你的操作系统的安装主目录的名称一致,这一点十分重要,否则会因为找不到这个主目录而致使引导失败。一个物理磁盘可以创建四个主分区,因此一般来说可以安装四个操作系统,可以是相同的,也可以是不同的。 这样的安装法与同一引导分区上的的多个操作系统的情况有所不同,它不会因为引导分区的损坏而使得所有的操作系统都失效。也不受先装低版本后装高版本的这种要求的限制。同时也不受不能安装相同版本的操作系统的限制。

作业调度_实验报告

实验名 称 作业调度 实验内容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) 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

机械硬盘操作系统转移至固态硬盘SSD操作实录

机械硬盘操作系统转移至固态硬盘SSD操作实录 第一步使用GHOST进行硬盘对硬盘拷贝操作 硬盘的克隆就是对整个硬盘的备份和还原。选择菜单Local→Disk→To Disk,在弹出的窗口中选择源硬盘(第一个硬盘),然后选择要复制到的目标硬盘(第二个硬盘)。注意,可以设置目标硬盘各个分区的大小,Ghost 可以自动对目标硬盘按设定的分区数值进行分区和格式化。选择Yes 开始执行。 工具/原料 ?电脑一台 ?GHOST软件 方法/步骤 1、启动Ghost 2、选择:Local→Disk→ToDisk,本地→磁盘→到磁盘。

3、选择源磁盘,第一项是源磁盘 4、选择目标磁盘第二项

5、查看目标磁盘的详细资料。 6、Proceed withdiskclone? Destination drive will be overwritten意思是要进行克隆吗?那么目标磁盘将被覆盖。

7、CloneCompletedSuccessfully,成功完成克隆!点Reset Computer重新启动计算机。 END 注意事项 使用此软件前请先进行数据备份 第二步分区助手无损4K对齐 4K对齐是什么意思? 什么是”4K对齐”,其实“4K对齐”相关联的是一个叫做“高级格式化” 的分区技术。“高级格式化”是国际硬盘设备与材料协会为新型数据结构格式所采用的名称。这是主要鉴于目前的硬盘容量不断扩展,使得之前定义的每个扇区512字节不再是那么的合理,于是将每个扇区512字节改为每个扇区4096 个字节,也就是现在常说的“4K扇区”。 4K对齐的好处

使用无损4k对齐软件对分区进行4KB对齐可以增加硬盘的读写速度、系统的启动时间、程序运行响应时间,还可以良好的使用并保护硬盘。相反,如果没进行4K对齐软件操作的话,对于机械磁盘会有点降低数据读取和写入速度,针对固态磁盘(SSD),则会极大地降低数据读写速度,甚至增加硬盘不必要的写入次数。 分区助手——无损4K对齐软件的优势,4K对齐教程速度快对齐简单工具小 无损4K对齐软件不需要占用太多磁盘空间,被处理分区剩余空间很小的情况下也可以完成。对齐参数有多种选择,对于已对齐的分区可以重新以另外的参数进行再对齐。 操作教程 1、下载免费的分区助手,安装并运行它,以下图为例,选定E盘点击鼠标右键依次选择“高级操作”—“分区对齐”。

磁盘调度实验报告

计算机操作系统实验报告 班级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

天津理工大学 操作系统实验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; //----磁道数。 int N; //-----提出磁盘I/O申请的进程数 int SortOrder[MaxNumber]; //----排序后的序列 bool Finished[MaxNumber]; 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])

第三节 磁盘操作系统

第三节磁盘操作系统 磁盘操作系统(Disk Operating System,简称:DOS)是进行计算机的文件管理和设备管理。由于这些程序以文件的形式存放在磁盘上,并与磁盘联合工作,所以称为磁盘操作系统。利用DOS,计算机用户就可以对计算机的各种软、硬件,计算机的输入、输出,以及计算机的内存和计算机的工作流程等进行管理。目前最常用的DOS就是微软公司的MS-DOS。前面讲过,MS-DOS是一种单用户操作系统,尽管目前普遍流行的是微软公司的Windows系列的多用户操作系统,但是,很多情况下,我们还是离不开DOS 的。如:当我们的计算机遭受病毒感染而不能进入Windows系统时,就需要通过DOS 来消除病毒或修复数据。目前还有许多应用程序要求在DOS的环境下运行。最新版本的窗口软件Windows 2000 不也包含有MS-DOS方式。因此,我们还必须认真掌握DOS 的基本知识。(本章以MS-DOS V6.22以下版本为例介绍磁盘操作系统,对其中的一些规定与约定,不同磁盘操作系统可能有所不同。) 要掌握DOS的应用,首先必须掌握以下几个基本概念。 一、文件 文件是具有名字的一组相关信息的集合。DOS下的所有程序和数据都是以文件的形式存储在磁盘上。为了区别不同的文件,以便文件的执行、修改和检索,文件必须有一个标记,即文件的名字。文件的名字是由文件基本名(也是狭义的文件名)和扩展名两部分组成。在DOS下,文件基本名由一至八个字符组成,扩展名由一至三个字符组成,即所谓的“8.3”制。一般的文本文件可以不要扩展名。 在要DOS执行处理文件的命令时,需要准确键入文件说明(file specification, 亦称之为文件标识符),它告诉DOS到哪里去寻找文件。 其格式如下: [d:][path][filename][.ext] 从上式可以看出,文件说明包括如下四个部分: 1.d: (全称:driver) 表示驱动器号或盘符,如果省略,则表示使用当前的驱动器(又称约定驱动器)。 2.path 表示路径,也是文件所在目录(可以是根目录,也可以是子目录),如果省略,则表示在当前目录。 3.filename 表示文件基本名(1~8个字符)。注意下列字符不可以用在文件名基本名中:” / \ ? [ ] :;〈〉+=及小于20H的ASCⅡ(American Standard Information Exchange Code:美国信息交换标准代码 ) 字符。文件基本名是不可省略的。

操作系统实验六磁盘调度算法正确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

一个硬盘上安装双操作系统(步骤)

1421 一个硬盘上安装双操作系统或多操作系统的方法 先在你用的系统里准备好二个以上的主分区,注意是主分区,不是逻辑分区,一个硬盘上最多只能有4个主分区,这是系统决定的。 创建主分区有多种方法,一种是WINDOWS自带的,另一种是用第三方软件,比如分区大师PQMagic等等。 如果你已经把硬盘全部容量作为一个分区来使用了,那只能用分区大师之类的软件了,它们的一个重要功能就是可以在不破坏原有数据的情况下改变分区的大小。 运行软件,创建新的主分区后退出软件,注意只有主分区,才可以改变成为活动分区,也即为开机时的引导分区。这时你还不能马上重启电脑, 因为你重启电脑还是进入你原先的系统。先要右击桌面上的我的电脑,选管理,点击磁盘管理,这时你可以看到新创建的主分区,右击该分区,点击将磁盘分区标为活动的,这时会弹出一个提示对话框, 提醒你如果分区上没有有效的系统文件,更改磁盘上的活动分区将使磁盘无法使用,按“是”,这时可以重启电脑了。 你的电脑开机引导如果是光驱在硬盘前,就可以进行你第二个系统安装了,如果不是光驱引导在先,需要进入BIOS里改一下,保存修改后再重启,就可以顺利安装新的操作系统了。完成后在你的电脑里有两个系统, 当你开机时如果没有让你选择的菜单,你要在C盘的boot.ini中加一条内容,你可以复制前一条, 注意把新加的一条multi(0)disk(0)rdisk(0)partition(1)\中的“1”改为“2”, 这个数字对应你的新的磁盘分区在磁盘管理中的从左到右的位置顺序,从1到4,逻辑分区没有对应的数字,因为不能标为活动分区的原因。在“\”之后的“WINDOWS=”这样的标识符, 一定要与你的操作系统的安装主目录的名称一致,这一点十分重要, 否则会因为找不到这个主目录而致使引导失败。一个物理磁盘可以创建四个主分区,因此一般来说可以安装四个操作系统,可以是相同的,也可以是不同的。

作业调度实验报告

实验二作业调度 一. 实验题目 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

操作系统磁盘管理(借鉴资料)

1.需求分析 (1)设计内容和要求(包括原始数据、技术参数、条件、设计要求等)设计内容: 1)采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收; 2)采用空白块成组链接结构实现磁盘空间的分配和回收; 3)采用位示图结构实现磁盘空间的分配和回收。 基本要求: 1)具有创建文件、空间分配、删除文件、释放空间等基本功能; 2)把文件目录、磁盘空间管理的数据结构变化情况显示出来。 (2)需求分析内容 1)空白文件目录是管理磁盘空间的一种方法,该方法将文件存储设备上的每个连续空闲区看作一个空白文件,系统为所有空白文件单独建立一个目录,每个空白文件在这个目录中占一个表目.表目的内容至少包括第一个空白块的地址(物理块号),空白块的数目。 2)位示图是另一种常用的管理磁盘空间的方法,该方法通过建立一张位示图来表示为l 时表示该块已分配,当某位为0时表示该块空闲。 3)位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把“0”作为盘块已分配的标记,把“1”作为空闲标志(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。 1.1小组分工 温庭栋任务为:采用空白文件目录结构管理磁盘空间; 魏子育任务为:采用空白块成组链接结构实现磁盘空间的分配和回收; 卫虹任务为:采用位示图结构实现磁盘空间的分配和回收; 2.总体设计 (1)磁盘存储空间管理是文件系统的重要内容 采用空白文件目录结构管理磁盘空间,实现磁盘空间的分配和回收空白文件目录法进行空间分配时,需要建立相关的数据结构,记录目前空白区域和已使用区域,假设开始时全部区域空闲。当有文件需要存储时,先检查空白文件目录,找到适合区域立即分配,并修改空

先来先服务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) 代替 代替

操作系统实验第六次磁盘调度分析

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

第六讲磁盘调度算法 一、实验概述 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确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。 图 3.1.2 CSCAN算法IopDiskSchedule函数流程图 (3)编写N-Step-SCAN磁盘调度算法 在已经完成的SCAN 算法源代码的基础上进行改写,将请求队列分成若干个长度为N 的子队列,调度程序按照FCFS原则依次处理这些子队列,而每处理一个子队列时,又是按照SCAN算法。算法流程图如下图所示。

操作系统+磁盘调度算法

目录 目录 ........................................................ 错误!未定义书签。1.课程设计目的.............................................. 错误!未定义书签。 编写目的................................................. 错误!未定义书签。2.课程设计内容.............................................. 错误!未定义书签。 设计内容................................................. 错误!未定义书签。3.课程设计方案.............................................. 错误!未定义书签。 模块划分................................................. 错误!未定义书签。 模块调用关系图........................................... 错误!未定义书签。 子模块程序流程图......................................... 错误!未定义书签。4.测试数据和结果............................................ 错误!未定义书签。 测试数据................................................. 错误!未定义书签。 测试结果................................................. 错误!未定义书签。 测试抓图................................................. 错误!未定义书签。5.参考文献.................................................. 错误!未定义书签。6.总结...................................................... 错误!未定义书签。 设计体会................................................. 错误!未定义书签。 结束语................................................... 错误!未定义书签。7.程序使用说明书............................................ 错误!未定义书签。8.程序源代码................................................ 错误!未定义书签。

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