文档库 最新最全的文档下载
当前位置:文档库 › 作业调度先来先服务实验剖析

作业调度先来先服务实验剖析

作业调度先来先服务实验剖析
作业调度先来先服务实验剖析

实验二作业调度实验

一. 目的要求:

用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。

二. 例题:为单道批处理系统设计一个作业调度程序。

由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。

作业调度算法:采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。

每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。

作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。

各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。

每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。

调度算法的流程图如下图所示。

三 . 实习题:

1、编写并调试一个单道处理系统的作业等待模拟程序。

作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。

对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。

实验代码:

#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 //作业控制块

{

char name[10]; //作业名

int reachtime; //作业到达时间

int starttime; //作业开始时间

int needtime; //作业需要运行的时间

float super; //作业的响应比

int finishtime; //作业完成时间

float cycletime; //作业周转时间

float cltime; //作业带权周转时间

char state; //作业状态

struct jcb *next; //结构体指针

}*ready=NULL,*p,*q;

typedef struct jcb JCB;

void inize() //初始化界面

{

printf("\n\n\t\t****************************************** ***\t\t\n");

printf("\t\t\t\t单道批处理作业调度系统\n");

printf("\t\t*********************************************\ t\t\n");

printf("\n\n\n\t\t\t\t软件143赵媛媛\n\n");

printf("\t\t\t\t\t\n");

printf("\n\n\n\t\t请输入任意键进入……\n");

getch();

}

void inital() //建立作业控制块队列,先将其排成先来先服务的模式队列

{

int i;

printf("\n输入作业数:");

scanf("%d",&n);

for(i=0;i

{

p=getpch(JCB);

printf("\n输入作业名:");

scanf("%s",p->name);

getch();

p->reachtime=i;

printf("作业默认到达时间:%d",i);

printf("\n输入作业要运行的时间:");

scanf("%d",&p->needtime);

p->state='W';

p->next=NULL;

if(ready==NULL) ready=q=p;

else{

q->next=p;

q=p;

}

}

}

void disp(JCB* q,int m) //显示作业运行后的周转时间及带权周转时间等

{

if(m==3) //显示高响应比算法调度作业后的运行情况

{

printf("\n作业%s正在运行,估计其运行情况:

\n",q->name);

printf("开始运行时刻:%d\n",q->starttime);

printf("完成时刻:%d\n",q->finishtime);

printf("周转时间:%f\n",q->cycletime);

printf("带权周转时间:%f\n",q->cltime);

printf("相应比:%f\n",q->super);

getch();

}

else // 显示先来先服务,最短作业优先算法调度后作业的运行情况

{

printf("\n作业%s正在运行,估计其运行情况:

\n",q->name);

printf("开始运行时刻:%d\n",q->starttime);

printf("完成时刻:%d\n",q->finishtime);

printf("周转时间:%f\n",q->cycletime);

printf("带权周转时间:%f\n",q->cltime);

getch();

}

}

void running(JCB *p,int m) //运行作业

{

if(p==ready) //先将要运行的作业从队列中分离出来

{

ready=p->next;

p->next=NULL;

}

else

{

q=ready;

while(q->next!=p) q=q->next;

q->next=p->next;

}

p->starttime=times; //计算作业运行后的完成时间,周转时间等等

p->state='R';

p->finishtime=p->starttime+p->needtime;

p->cycletime=(float)(p->finishtime-p->reachtime);

p->cltime=(float)(p->cycletime/p->needtime);

T1+=p->cycletime;

T2+=p->cltime;

disp(p,m); //调用disp()函数,显示作业运行情况

times+=p->needtime;

p->state='F';

printf("\n%s has been finished!\npress any key to continue...\n",p->name);

free(p); //释放运行后的作业

getch();

}

void super() //计算队列中作业的高响应比

JCB *padv;

padv=ready;

do{

if(padv->state=='W'&&padv->reachtime<=times)

padv->super=(float)(times-padv->reachtime+padv->needtime)/ padv->needtime;

padv=padv->next;

}while(padv!=NULL);

}

void final() //最后打印作业的平均周转时间,平均带权周转时间

{

float s,t;

t=T1/n;

s=T2/n;

getch();

printf("\n\n作业已经全部完成!");

printf("\n%d个作业的平均周转时间是:%f",n,t);

printf("\n%d个作业的平均带权周转时间是%f:

\n\n\n",n,s);

}

void hrn(int m) //高响应比算法

JCB *min;

int i,iden;

system("cls");

inital();

for(i=0;i

{

p=min=ready;iden=1;

super();

do{

if(p->state=='W'&&p->reachtime<=times)

if(iden)

{

min=p;iden=0;

}

else if(p->super>min->super) min=p; p=p->next;

}while(p!=NULL);

if(iden)

{

i--;times++;

//printf("\ntime=%d:\tno JCB submib...wait...",time); if(times>1000)

{printf("\nruntime is too long...error...");getch();} }

else

{

running(min,m); //调用running()函数 }

} //for

final(); //调用running()函数

}

void sjf(int m) // 最短作业优先算法

{

JCB *min;

int i,iden;

system("cls");

inital();

for(i=0;i

{

p=min=ready;iden=1;

do{

if(p->state=='W'&&p->reachtime<=times)

if(iden){

min=p;iden=0;

}

else if(p->needtimeneedtime) min=p;

p=p->next;

}while(p!=NULL) ;

if(iden) {

i--; //printf("\ntime=%d:\tno JCB submib...wait...",time);

times++;

if(times>100){printf("\nruntime is too long...error");getch();}

}

else{

running(min,m); //调用running()函数 }

} //for

final(); //调用running()函数

}

void fcfs(int m) //先来先服务算法

{

int i,iden;

system("cls");

inital();

for(i=0;i

{

p=ready;iden=1;

do{

if(p->state=='W'&&p->reachtime<=times) iden=0;

if(iden)p=p->next;

}while(p!=NULL&&iden) ;

if(iden)

{

i--;

printf("\n没有满足要求的进程,需等待");

times++;

if(times>100){printf("\n时间过长

");getch();}

}

else{

running(p,m); //调用running()函数

}

}

final(); //调用running()函数

}

void mune()

{

int m;

system("cls");

printf("\n\n\t\t****************************************** ***\t\t\n");

printf("\t\t\t\t作业调度演示\n");

printf("\t\t*********************************************\ t\t\n");

printf("\n\n\n\t\t\t1.先来先服务算法.");

printf("\n\t\t\t2.最短作业优先算法.");

printf("\n\t\t\t3.响应比高者优先算法"); printf("\n\t\t\t0.退出程序.");

printf("\n\n\t\t\t\t选择所要操作:");

scanf("%d",&m);

switch(m)

{ case 1:

fcfs(m);

getch();

system("cls");

mune();

break;

case 2:

sjf(m);

getch();

system("cls");

mune();

break;

case 3:

hrn(m);

getch();

system("cls");

mune();

break;

case 0:

system("cls");

break;

default:

printf("选择错误,重新选择.");

getch();

system("cls");

mune();

}

}

main() //主函数

{

inize();

mune();

}

实验截图

2、编写并调度一个多道程序系统的作业调度模拟程序。

作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。

对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。

实验代码:

#include

#include

#define getjch(type) (type*)malloc(sizeof(type))

#define N 10

struct jcb { /* 定义作业控制块PCB */

char name[10];

float needtime; /*运行时间*/

float arrivetime;/*提交时刻*/

float storage[N];/*系统资源*/

struct jcb* link;

}*ready=NULL,*pb=NULL,*p;

typedef struct jcb JCB;

float Tc,Ti,Wi,T=0;/*完成时刻,周转时间,带权周转时间,时间量*/

float TiSum=0,WiSum=0;/*平均周转时间,带权a平均周转时间*/

float source[N];

int n;

void input(); /*输入作业信息*/

int space(); /* 返回就绪队列中作业的数目*/

void fcfs(); /*先来先服务算法*/

void disp(JCB *pr); /* 显示相应的作业*/

void running(); /*运行作业组*/

void destroy(); /* 撤销作业*/

void input() /* 建立作业控制块函数*/

int i,k,num;

printf("请输入所拥有的资源种类:"); scanf("%d",&n);

printf("输入系统所拥有资源数:\n"); for(i=0;i

{

printf("资源[%d]:",i);

scanf("%f",&source[i]);

}

printf("\n 输入作业数量:");

scanf("%d",&num);

for(i=0;i

{

printf("\n 作业号[%d]:\n",i);

WWW服务器配置实验报告

信息科学与技术学院实验报告 课程名称: 计算机网络应用技术教程实验项目: WWW服务器配置 实验地点:指导教师: 日期: 2013/10/29 实验类型:验证性实验(验证性实验综合性实验设计性实验)专业: 班级: 11级姓名: 学号: 一、实验目的及要求 1.实验目的: 1.正确理解WWW服务的运行机制,了解常用的wed服务器软件。 2.掌握IIS服务器的安装和管理,创建wed站点利用IIS在一台服务器上运行多个网站。 3.掌握虚拟机主机和虚拟目录的创建删除。 2.实验要求: 1.理解IIS服务的概念及其所具有的功能。 2.掌握IIS服务的安装方法。 3.掌握WWW服务的配置包括IP地址、端口号、默认文档、安全等设定,以及如何应用WWW服务的方法。 4.了解虚拟目录服务的作用。 二、实验仪器、设备或软件 1.实验仪器:电脑一台 三、实验内容及原理 1.实验内容: (1).学会安装IIS。 (2).掌握www服务器的配置和使用。 (3).创建虚拟目录。 2.实验原理: 万维网WWW(World Wide Web)服务,又称为Web服务,是目前TCP/IP互联网上最方便和最受欢迎的信息服务类型,是因特网上发展最快同时又使用最多的一项服务,目前已经进入广告、新闻、销售、电子商务与信息服务等诸多领域,它的出现是TCP/IP互联网发展中的一个里程碑。 WWW服务采用客户/服务器工作模式,客户机即浏览器(Browser),服务器即Web服务器,它以超文本标记语言(HTML)和超文本传输协议(HTTP)为基础,为用户提供界面一致的信息浏览系统。信息资源以页面(也称网页或Web页面)的形式存储在Web服务器上(通常称为Web站点),这些页面采用超文本方式对信息进行组织,页面之间通过超链接连接起来。这些通过超链接连接的页面信息既可以放

实验五-页面调度算法模拟实验报告

《计算机操作系统》实验报告 实验五:页面调度算法模拟 学校:╳╳╳ 院系:╳╳╳ 班级:╳╳╳ 姓名:╳╳╳ 学号:╳╳╳

指导教师:╳╳╳ 目录 一、实验题目 (3) 二、实验学时 (4) 三、指导老师 (4) 四、实验日期 (4) 五、实验目的 (4) 六、实验原理 (4) 6.1页面的含义 (4) 6.2 页面置换算法的含义 (4) 6.3 置换算法 (4) 6.3.1最佳置换算法(Optimal) (5) 6.3.2先进先出(FIFO)页面置换算法 (5) 6.3.3 LRU置换算法 (5) 七、实验步骤及结果 (5)

7.1 验证最佳置换算法 (5) 7.1.1 实验截图 (5) 7.1.2 实验分析 (6) 7.2 验证先进先出(FIFO)页面置换算法 (7) 7.2.1 实验截图 (7) 7.2.2 实验分析 (7) 7.3 验证LRU置换算法 (8) 7.3.1 实验截图 (8) 7.3.2 实验分析 (8) 八、报告书写人 (9) 附录一最佳置换算法(Optimal) (9) 附录二先进先出(FIFO)页面置换算法 (15) 附录三LRU置换算法 (20) 实验五:页面调度算法模拟 一、实验题目 页面调度算法模拟

二、实验学时 2学时 三、指导老师 ╳╳╳ 四、实验日期 2018年12月10日星期一 五、实验目的 (1)熟悉操作系统页面调度算法 (2)编写程序模拟先进先出、LRU等页面调度算法,体会页面调度算法原理 六、实验原理 6.1页面的含义 分页存储管理将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或页。 6.2 页面置换算法的含义 在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法(Page_Replacement Algorithms)。 6.3 置换算法 一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度算法

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度 算法

湖南农业大学科学技术师范学院 学生实验报告

(高优先权流程图) (按时间片轮转调度) 程序说明及实现: 1)先来先服务调度算法: 高响应比优先实现进程调度.(用C语言实现), 2)优先级调度程序: 该程序由主程序、构造队列子程序、打印子程序、运行子程序构成。 3)时间片轮转法程序: 于此程序中由于程序比较小,未进行分模块设计。直接采用单壹模块。 1先来先服务 #include floatt,d;/*定义俩个全局变量*/ struct/*定义壹个结构体数组,包括进程的信息*/ { intid; floatArriveTime; floatRequestTime; floatStartTime; floatEndTime; floatRunTime; floatDQRunTime; intStatus; }arrayT ask[4];/*定义初始化的结构体数组*/ GetTask()/*给结构体数组赋值,输入到达,服务时间*/ {inti; floata; for(i=0;i<4;i++) {arrayT ask[i].id=i+1; printf("inputthenumber"); printf("inputthetheArriveTimeofarrayT ask[%d]:",i);/*用户输入进程的时间,初始为零*/ scanf("%f",&a); arrayT ask[i].ArriveTime=a; printf("inputtheRequestTimeofarrayT ask[%d]:",i); scanf("%f",&a); arrayT ask[i].RequestTime=a; arrayT ask[i].StartTime=0; arrayT ask[i].EndTime=0; arrayT ask[i].RunTime=0;

作业调度_实验报告

实验名 称 作业调度 实验内容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) 周转时间短。通常把周转时间的长短作为评价批处理系统的性能、选择作业调度方式与算法的重要准则之一。所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称

FTP服务器配置实验报告

F T P服务器配置实验报告 Prepared on 22 November 2020

实验报告 课程:计算机网络实验 实验名称: FTP服务器配置与管理 系别 : 电子信息工程系 实验日期 : 专业班级 : 03通信师 组别 : 第10组 实验报告日期 : 姓名 : 学号 : (40) (41) 报告退发 : ( 订正、重做 ) 第1页共 12 页 FTP服务器配置与管理 一.题目: FTP服务器配置与管理 二.环境: Sever2000 三.试验目的 1.掌握FTP服务的基本概念与工作原理 2.懂得安装FTP服务器的过程 3.配置与管理FTP服务器 四.试验内容及步骤 1.的安装,具体步骤如下: (1)运行“控制面板”中的“添加或删除程序”,点击“添加/ 删除Windows组件”按钮。 第 2 页共 12页 (2)在出现组件安装向导中,选择“Internet信息服务 (IIS)”,单击“下一步”开始安装,单击“完成”结 束。 第 3 页共 12 页 系统自动安装组件,完成安装后,系统在“开始”/“程序”/“管理工具”程序组中会添加一项“Internet服务管理器”,此时服务器的WWW、FTP等服务会自动启动。 2.设置FTP站点 第 4 页共 12 页 (1)使用IIS默认站点

①将制作好的主页文件(html文件)复制到 \Inetpub\ftproot目录,该目录是安装程序为默认FTP站点 预设的发布目录。 ②将主页文件的名称改为。IIS默认要打开的主页文件是 或,而不是一般常用的。 完成这两个步骤后,打开本机或客户机浏览器,在地址栏 中输入FTP服务器的 IP地址()或主机的FQDN名字(前 提是DNS服务器中有该主机的记录),就会以匿名的方式 登录到FTP服务器,根据权限的设置就可以进行文件的上 传和下载了。 (2)添加新的FTP站点 ①打开“Internet信息服务窗口”,鼠标右键单击要创建 新站点的计算机,在弹出菜单中选择“新建”/“FTP站 点”,出现“FTP站点创建向导”,单击“下一步”继 续。 第 5 页共 12 页 ②输入FTP站点说明,单击下一步 第 6 页共 12 页 ③ 单击下一步 ④指定FTP输入主目录的路径(如选择新建文件夹),单击下一步 第 7 页共 12 页 ⑤设置访问权限为读取和写入,并单击下一步,完成FTP站点创建向导 第 8 页共 12 页 站点的管理 (1)本地管理 通过“开始”/“程序”/“管理工具”/“Internet服务管理 器”,打开如图9-1的“Internet信息服务”窗口,在要管 理的FTP站点上单击鼠标右键,选择“属性”命令,出现如下 图所示对话框。 第 9 页共 12 页 ①“FTP站点”属性页 IP地址:设置此站点的IP地址,即本服务器的IP地址。 如果服务器设置了两个以上的IP站点,可以任选一个。FTP 站点可以与Web站点共用IP地址以及DNS名称,但不能设置 使用相同的TCP端口。 TCP端口:FTP服务器默认使用TCP协议的21端口,(若端口号21以被配置,则需更改此端口,用户在连接到此站点时,

进程调度算法实验报告

操作系统实验报告(二) 实验题目:进程调度算法 实验环境:C++ 实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较 各种算法的性能优劣。 实验内容:编程实现如下算法: 1.先来先服务算法; 2.短进程优先算法; 3.时间片轮转调度算法。 设计分析: 程序流程图: 1.先来先服务算法 开始 初始化PCB,输入进程信息 各进程按先来先到的顺序进入就绪队列 结束 就绪队列? 运行 运行进程所需CPU时间 取消该进程 2.短进程优先算法

3.时间片轮转调度算法 实验代码: 1.先来先服务算法 #include #define n 20 typedef struct { int id; //进程名

int atime; //进程到达时间 int runtime; //进程运行时间 }fcs; void main() { int amount,i,j,diao,huan; fcs f[n]; cout<<"请输入进程个数:"<>amount; for(i=0;i>f[i].id; cin>>f[i].atime; cin>>f[i].runtime; } for(i=0;if[j+1].atime) {diao=f[j].atime; f[j].atime=f[j+1].atime; f[j+1].atime=diao; huan=f[j].id; f[j].id=f[j+1].id; f[j+1].id=huan; } } } for(i=0;i #define n 5 #define num 5 #define max 65535 typedef struct pro { int PRO_ID; int arrive_time;

Apache服务器配置实验报告

在Linux下配置Apache服务器 一、实验目的 完成本次实训,将能够: ●配置基本的Apache服务器 ●配置个人用户Web站点。 ●配置虚拟目录别名功能。 ●配置主机访问控制。 ●配置用户身份验证功能.。 ●配置基于IP地址的虚拟主机. 二、实验环境 1、RedHat Linux4AS. 2、Apache 2.0 三、实验内容 1.配置基本的Apache服务器 2.配置个人用户Web站点。 3.配置虚拟目录别名功能。 4.配置主机访问控制。 5.配置用户身份验证功能.。 6.配置基于IP地址的虚拟主机。 四、实验要求 在Linux操作系统下配置Apache服务器。 五、注意事项 1.在修配置文件下注意区分大小写、空格。 2.在每次重新开机后都必须启动Apachec服务器。 3.在每次修改完主配置文件后保存起来,必须重启Apachec服务器,如果不重启会 导致配置无效,最终导致实验失败。 六、实验步骤 1、检测是否安装了Apache软件包: A、首先为服务器网卡添加一个固定的IP地址。 B、在Web浏览器的地址栏中输入本机的IP地址,若出现Test Page测试页面(该 网页文件的默认路径为var/www/html/index.html)如下图1所示就说明Apache 已安装并已启动。

另一种方法是使用如下命令查看系统是否已经安装了Apache软件包: [root@rhe14~]# rpm –aq | grep httpd Httpd-suexec-2.0.52-9.ent Httpd-manual-2.0.52-9.ent System-config-httpd-1.3.1-1 Httpd-devel-2.0.52-9.ent 出现以上内容表明了系统已安装Apache软件包。 2、安装Apache软件包 超级用户(root)在图形界面下选择“应用程序”|“系统设置”|“添加/删除应用程序”命令,选择“万维网服务器”软件包组,在单击“更新”按钮就可以安装与Apache相关的软件包。 3、Apache的基本配置 (1)打开终端输入[root@rhe14~]# /etc/rc.d/init.d/httpd start //启动Apache 或者 [root@rhe14~]# apachectl start //启动Apache [root@rhe14~]# apachectl stop //停止Apache服务 [root@rhe14~]# apachectl restart //重启Apache服务 [root@rhe14~]# apachectl configtest //测试Apache服务器配置语法(2)在httpd.conf将Apache的基本配置参数修改、将一些注释的语句取消注释,或将某些不需要的参数注释掉。 (3)将包括index.html在内的相关网页文件复制到指定的Web站点根目下(var/www/html/index.html) (4)重启httpd进程 (5) 在Web浏览器下输入配置的ip地址出现如下图2,那表明基本配置成功了:

作业调度实验报告

作业调度实验报告 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) 代替 代替

web服务器的配置实验报告doc

web服务器的配置实验报告 篇一:计算机网络实验报告——Web服务器的配置 实验2 web服务器配置 一、实验目的: 掌握如何使用windows XX server的IIS5.0配置出web 服务器 二、实验内容: 1、创建一个web站点,并且可以实现在别人的计算机上访问该站点 2、使用不同的ip建立多个站点 3、在一个站点下建立多个子站点(使用虚拟目录实现) 4、在同一个套接字(即ip地址+端口)上建立多个站点(使用加主机头名方法实现) 5、对站点进行安全管理(如浏览权限、帐号的使用、ip地址的设定) 三、实验要求: 一定要保证让别人正常的访问你建立的站点,并使实验结果达到预期的目的! 四、实验步骤: 1. 使用当地IP地址建立web站点 (1)准备工作: ①关闭Windows 防火墙

实验中,为了我们所建的站点能够被成功访问,先将Windows 防火墙关闭。如图: ②IIS功能设置 控制面板\所有控制面板项\程序和功能---“打开或关闭windows所有功能”: 出现了安装Windows功能的选项菜单,在“Internet信息服务”中手动选择需要的功能,如下图: ③下载“花生壳软件”到本地,申请免费域名mqqfhg。 这样,完成了前期的所有准备工作,开始进行web服务器的建设。 (2)开始建立web站点 ①创建web站点“酒窝” 打开“控制面板”——“管理工具”—“ Internet 信息服务(IIS)管理(本文来自:小草范文网:web服务器的配置实验报告)器”——右击“网站——“添加网站——选择“IP地址”及“物理路径”: 篇二:实验六web服务器配置实验报告 XX-XX学年第一学期课程实验报告课程名称:计算机网络 实验名称: 篇三:Web服务器的配置实验报告 实验5 Web服务器的配置

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

作业调度 一、实验目的 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、编写并调试一个单道处理系统的作业等待模拟程序。 作业调度算法:分别采用先来先服务(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;

操作系统实验-先来先服务、短作业优先算法

实验报告 【实验名称】实验一进程调度【实验目的】 巩固和加深处理机调度的概念。 【实验内容】 设计调度算法,模拟实现处理机的调度。 1.设计先来先服务调度算法 数据结构和符号说明: typedef struct PCB { char name[10]; //进程名 char state; //进程状态 int arrivetime; //到达时间 int starttime; //开始时间 int finishtime; //完成时间 int servicetime;//服务时间 float turnaroundtime;//周转时间 float weightedturnaroundtime;//带权周转时间 struct PCB *next; //指向下个进程的指针 }pcb; int time;//全局变量,计时器 int n;//全局变量,进程个数 pcb *head = NULL,*p,*q;//进程链表指针 流程图:

开始 输入进程名、到达时间、服务时间存入链表 进程是否全部处理完毕? 当前进程状态是否为F ?N 处理进程,计算完成时间,周转时间等,并更新当前时间Y 处理下一进程 N 结束Y 程序源代码 /* 操作系统实验一 先来先服务调度算法 */ #include #include typedef struct PCB//进程控制 { char name[10];//进程名 char state;//进程状态 int arrivetime;//到达时间 int starttime;//开始时间 int finishtime;//结束时间 int servicetime;//服务时间 float turnaroundtime;//周转时间 float weightedturnaroundtime;//带权周转时间 struct PCB *next;//指向下个进程 }pcb; int time;//当前时间 int n;//进程个数 pcb *head = NULL,*p,*q; //处理未完成的进程 void run_fcfs(pcb *p1) { time = p1->arrivetime > time ? p1->arrivetime : time; //如果进程到达时间大于当前时间,则当前时间=到达时间 p1->starttime = time;//当前时间即为进程开始时间

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

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

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

(完整版)《ftp服务器的配置》实验报告

实验报告 课程名称计算机网络基础实验项目 FTP服务器的配置 专业班级 0906603 姓名学号 27 指导教师陈伟宏老师成绩日期2011.11.12 一、实验目的 掌握如何在局域网内配置FTP服务器。 二、实验设备和环境 局域网内多台个人计算机、Windows 2003操作系统。 三、实验内容 1、安装IIS或Serv-U; 2、配置及管理FTP服务器; 3、使用FTP服务。 四、实验过程 1、安装IIS V5.1 for 2003 截图如下: 点“详细信息”

选择Internet 信息服务(IIS),点详细信息.再选择“文件传输协议(FTP)服务” 2、FTP服务器的配置 启动IIS信息管理:控制面板——管理工具——IIS信息管理,选择FTP站点。右键新建FTP站点。

3.右击FTP站点的默认FTP站点的属性设置主目录F:\学习资料 4、设置安全账户为只允许匿名连接

5、测试本地ftp站点:在浏览器中输入ftp://192.168.137.3访问结果如下:

五、实验心得 这次试验为FTP服务器的配置。总的来说,由于上次已经做过web服务器的配置,而ftp的配置跟它大致相同,所以过程相对来说还是比较顺利,出现的问题也不多。 不过在实验过程中,自己只是按照老师的《FTP服务器的配置示例》一步步去做,实验虽然很成功地完成了,但在实验过程中我感觉自己并没有完全的、真正的“消化”理解好其中的含义,于是又反复地理解了一下各个步骤的原理。 通过这次实验理解了FTP服务器的工作基本原理,以及匿名访问和非匿名访问的一些相关设置,文件具有长传和下载的权限,对文件安全性的控制等等。 同时,也让我又学会了一种传送文件的新方法:只需要通过构建局域网,然后通过FTP就可以实现资源共享啦。感觉非常有用。 能把知识用到实处才是真正的学好了知识,这也是我们做实验的真正目的。以后我会继续努力提高自己的动手操作能力,把知识付诸于实践,同时在实践中更加深刻地理解知识。

时间片轮转调度算法实验报告

xx大学操作系统实验报告 姓名:学号:班级: 实验日期: 实验名称:时间片轮转RR进程调度算法 实验二时间片轮转RR进程调度算法 1.实验目的:通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步 掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 2.需求分析 (1) 输入的形式和输入值的范围; 输入:进程个数n 范围:0

(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。正确输入: 错误输入:

2、概要设计 所有抽象数据类型的定义: static int MaxNum=100 int ArrivalTime //到达时间 int ServiceTime //服务时间 int FinishedTime //结束时间 int WholeTime //周转时间 double WeightWholeTime //带权周转时间double AverageWT //平均周转时间double AverageWWT //平均带权周转时间主程序的流程: 变量初始化

FTP服务器配置实验报告

F T P服务器配置实验报 告 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

实验报告 课程:计算机网络实验 实验名称: FTP服务器配置与管理 系别 : 电子信息工程系 实验日期 : 专业班级 : 03通信师 组别 : 第10组 实验报告日期 : 姓名 : 学号 : (40) (41) 报告退发 : ( 订正、重做 ) 第1页共 12 页 FTP服务器配置与管理 一.题目: FTP服务器配置与管理 二.环境: Sever2000 三.试验目的 1.掌握FTP服务的基本概念与工作原理 2.懂得安装FTP服务器的过程 3.配置与管理FTP服务器 四.试验内容及步骤 1.的安装,具体步骤如下: (1)运行“控制面板”中的“添加或删除程序”,点击“添加/ 删除Windows组件”按钮。 第 2 页共 12页 (2)在出现组件安装向导中,选择“Internet信息服务 (IIS)”,单击“下一步”开始安装,单击“完成”结 束。 第 3 页共 12 页 系统自动安装组件,完成安装后,系统在“开始”/“程序”/“管理工具”程序组中会添加一项“Internet服务管理器”,此时服务器的WWW、FTP等服务会自动启动。 2.设置FTP站点 第 4 页共 12 页 (1)使用IIS默认站点

①将制作好的主页文件(html文件)复制到 \Inetpub\ftproot目录,该目录是安装程序为默认FTP站点 预设的发布目录。 ②将主页文件的名称改为。IIS默认要打开的主页文件是 或,而不是一般常用的。 完成这两个步骤后,打开本机或客户机浏览器,在地址栏 中输入FTP服务器的 IP地址()或主机的FQDN名字(前 提是DNS服务器中有该主机的记录),就会以匿名的方式 登录到FTP服务器,根据权限的设置就可以进行文件的上 传和下载了。 (2)添加新的FTP站点 ①打开“Internet信息服务窗口”,鼠标右键单击要创建 新站点的计算机,在弹出菜单中选择“新建”/“FTP站 点”,出现“FTP站点创建向导”,单击“下一步”继 续。 第 5 页共 12 页 ②输入FTP站点说明,单击下一步 第 6 页共 12 页 ③ 单击下一步 ④指定FTP输入主目录的路径(如选择新建文件夹),单击下一步 第 7 页共 12 页 ⑤设置访问权限为读取和写入,并单击下一步,完成FTP站点创建向导 第 8 页共 12 页 站点的管理 (1)本地管理 通过“开始”/“程序”/“管理工具”/“Internet服务管理 器”,打开如图9-1的“Internet信息服务”窗口,在要管 理的FTP站点上单击鼠标右键,选择“属性”命令,出现如下 图所示对话框。 第 9 页共 12 页 ①“FTP站点”属性页 IP地址:设置此站点的IP地址,即本服务器的IP地址。 如果服务器设置了两个以上的IP站点,可以任选一个。FTP 站点可以与Web站点共用IP地址以及DNS名称,但不能设置 使用相同的TCP端口。 TCP端口:FTP服务器默认使用TCP协议的21端口,(若端口号21以被配置,则需更改此端口,用户在连接到此站点时,

实验一、进程调度实验报告

实验一、进程调度实验报告

广东技术师范学院实验报告 学院:计算机科学学 院 专业: 计算机科学与 技术(师范) 班级:成绩: 姓名:学号:组别:组员: 实验地点:实验日期:指导教师签名: 实验名称:实验一、进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解 二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方面的知识 三、实验内容和步骤 1.编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 “最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。 静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等 该题根据老师给的代码用Visual C++运行,结果以及分析如下: 预习情况操作情况考勤情况数据处理情况

结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程cc 最先调度进程cc的状态为运行态,需要执行的时间为10当前就绪队列状态为:进程aa先级比较高,处于就绪队列前面,而进程bb先级是三者中最低的,所以处于就绪队列的最后。而此时这两个进程的状态都为就绪态。

结果分析:当进程cc了一个时间片之后而它已占用CPU时间已达到所需要的运行时间,则将它的优先级减1之后,再将三个进程按优先级的大小排列,从中选择优先级大的进程进入运行状态,则该次进入运行态的是进程aa 按照这种方式一直运行下去: 直到:

操作系统实验-先来先服务FCFS和短作业优先SJF进程调度算法

操作系统实验报告 实验一 先来先服务FCFS和短作业优先SJF进程调度算法 学号: 班级: 姓名:

【实验题目】:先来先服务FCFS和短作业优先SJF进程调度算法 【实验目的】 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 【实验内容】 问题描述: 设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1, …,T n时刻到达系统,它们需要的服务时间分别为S1, …,S n。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 程序要求如下: 1)进程个数n;每个进程的到达时间T1, … ,T n和服务时间S1, … ,S n;选择算法1-FCFS,2-SJF。 2)要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间; 3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等; 4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有

进程的平均周转时间,带权平均周转时间。 实现提示: 用C++语言实现提示: 1)程序中进程调度时间变量描述如下: static int MaxNum=100; int ArrivalTime[MaxNum]; int ServiceTime[MaxNum]; int FinishTime[MaxNum]; int WholeTime[MaxNum]; double WeightWholeTime[MaxNum]; double AverageWT_FCFS,AverageWT_SJF; double AverageWWT_FCFS,AverageWWT_SJF; 2)进程调度的实现过程如下: 变量初始化; 接收用户输入n,T1, … ,T n,S1, … ,S n;算法选择1-FCFS,2-SJF; 按照选择算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间; 计算所有进程的平均周转时间和平均带权周转时间; 按格式输出调度结果。 实验要求: 1)上机前认真复习FCFS和SJF进程调度调度算法,熟悉进程调度的执行过

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