多道程序的实验报告.docx

上传人:b****0 文档编号:18289973 上传时间:2023-08-15 格式:DOCX 页数:9 大小:19.04KB
下载 相关 举报
多道程序的实验报告.docx_第1页
第1页 / 共9页
多道程序的实验报告.docx_第2页
第2页 / 共9页
多道程序的实验报告.docx_第3页
第3页 / 共9页
多道程序的实验报告.docx_第4页
第4页 / 共9页
多道程序的实验报告.docx_第5页
第5页 / 共9页
多道程序的实验报告.docx_第6页
第6页 / 共9页
多道程序的实验报告.docx_第7页
第7页 / 共9页
多道程序的实验报告.docx_第8页
第8页 / 共9页
多道程序的实验报告.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

多道程序的实验报告.docx

《多道程序的实验报告.docx》由会员分享,可在线阅读,更多相关《多道程序的实验报告.docx(9页珍藏版)》请在冰点文库上搜索。

多道程序的实验报告.docx

多道程序的实验报告

多道程序的实验报告

  篇一:

实验一多道程序设计技术

  实验一多道程序设计技术

  一.实验内容步骤

  1.首先观看DOS单道运行方式

  MS-DOS是个单用户、单任务的操作系统。

主机任何时候只能接纳和运行一个程序。

在Windows中保留了MS-DOS。

从桌面的“开始”→“程序”→“附件”→“命令提示符”,便进入了MS-DOS。

该系统以命令提示符为交互界面。

显示命令提示符C:

\>,读者可以逐条地写出程序名字,要求系统为之执行。

比如发CD,要求系统报告用户的当前目录。

发DIR,要求报告当前目录所包含的文件(包括子目录)名。

发DATE,要求系统报告当天日期,等等。

  系统将会以一问一答的方式跟用户交互。

用户以命令提示符作为发命令的依据;系统则以用户发作为命令结束符的“回车符”开始执行程序。

当前程序没有执行完就不会给提示符,因而不能输入另一条命令。

程序单道地、串行地执行。

  最后,在命令提示符下发命令exit,退出MS-DOS,回到Windows桌面。

  2.观看多道程序同时执行

  在Windows环境下可以有多种方式同时启动多个程序执行。

比如,我现在用word在写文档,同时又启动了“媒体播放器”在播放音乐,word和“媒体播放器”都在工作。

也可以先后启动word执行两次,一次帮我编辑第1章文稿,另一次让word调出初版时的第1章,以便对照修改。

可以让两个word的窗口平铺在显示屏幕上,由此可以确信一个word程序同时对应两个任务。

不过两个窗口都要交互输入,所谓“输入焦点”只有一个。

只要用鼠标点击当前需要输入的窗口,就可以激活它,从而取得输入焦点。

  许多同学都有陆续启动3个以上程序同时执行的体验,一面看新闻,一面听音乐,一面还要与朋友QQ。

  3.观看多道程序并发执行模拟演示

  同时执行的程序在只有一个CPU的情况下,瞬时只能执行其中的一个程序,由此它们的执行有并发性、宏观性。

每一个程序都是走走停停的,操作系统利用外设与CPU可以同时执行这个事实,进行调度,实现程序的并发。

  4.多道程序设计调度初步

  在上述此基础上,试做以下调度计算:

  假定有两个程序A与B,它们的行为是:

  程序I/OCPUI/OCPU

  A101010

  B101010单位:

ms。

  它们同在有一个I/O接口和一个CPU的计算机上。

  

(1)试编写C/C++程序,完成多道程序的调度,

  

(2)画出调度时序图,计算它们各自的和总的周转时间,并与按照单道串行方式运行时总的周转时间比较,对所得到的结果加以讨论。

  二.实验报告要求

  记录实验环境,记录观察结果,与教学内容对应的知识点,收获体会。

  篇二:

操作系统作业调度实验报告-多道批处理

  班

  姓名学号教师评定_________________

  实验题目作业调度

  一、实验目的

  本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。

  二、实验内容和要求

  1、为单道批处理系统设计一个作业调度程序

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

、作业调度算法:

分别采用先来先服务(FCFS),最短作业优先(SJF)的调度算法。

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

  、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:

作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。

作业的状态可以是等待W、运行R和完成F三种状态之一。

每个作业的最初状态总是等待W。

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

  2、模拟批处理多道操作系统的作业调度

(1)写并调试一个作业调度模拟程序。

  

(2)作业调度算法:

分别采用先来服务(FCFS)调度算法。

  (3)在批处理系统中,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求,所需要的资源是否得到满足。

  作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理机运行。

作业调度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。

但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业要求,那么,作业调度必须按一定的算法在这些作业中作出选择。

当作业正常运行完毕或因发生错误非正常终止时,作业进入完成状态,此时,系统将收回该作业所占用的全部资源,并清除有关的JCB。

并输出显示作业运行情况及作业输出结果。

  三、实验设计方案及原理

  假设在单道批处理环境下有四个作业JOB1、JOB2、JOB3、JOB4,已知它们进入系统的时间、估计运行时间。

分别采用先来先服务(FCFS),最短作业优先(SJF)调度算法,

  计算出作业的平均周转时间和带权的平均周转时间。

  作业p的周转时间:

p->ttime=p->ftime-p->atime

  作业的平均周转时间:

total=全部进程的周转时间/进程个数作业p的带权周转时间:

p->wtime=p->ttime/p->ntime

  作业的平均带权周转时间:

W=全部进程的带权周转时间/进程个数

  1、先来先服务调度算法(FCFS):

每次调度都是从后备作业队列中,选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。

在进程调度中采用FCFS算法时,这每次调度是从就绪队列中,选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。

该进程一直运行到完成或发生某事件阻赛后,才放弃处理机。

  2、最短作业优先(SJF):

每次从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。

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

  3、多道作业调度算法:

将作业按FCFS原则排好队,在输入井中按作业到达的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业,把不能满足要求的放回输入井尾部等待,当作业执行结束进入完成状态时,做好释放资源等善后工作。

  四、流程图

  1、FCFS算法和SJF算法:

  2.多道作业调度算法

  五、给出程序中源程序名和执行程序名:

  源程序名:

FCFSandSJF,执行程序名:

fcfsand源程序名:

DUODAO执行程序名:

  六、程序清单

  和SJF算法

  #include““

  #include#include

  #definegetpchmalloc)

  structjcb{charname[10];

  charstate;

  intatime;//作业到达时间intbtime;//作业开始运行时间intftime;//作业完成时间intntime;//作业估计运行时间intrtime;//作业执行时间intttime;//周转时间

  floatwtime;//带权周转时间/*建立对作业进行到达时间排列函数*/{

  JCB*first,*second;intinsert=0;

  if||link=ready;

  ready=p;

  T=p->atime;//更改时间量

  }

  else/*作业比较到达时间,插入适当的位置中*/{

  first=ready;second=first->link;

  while{

  iflink=second;first->link=p;second=NULL;

  篇三:

作业调度实验报告

  实验二作业调度

  一.实验题目

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

作业调度算法:

分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先

  (HRN)的调度算法。

  

(1)先来先服务算法:

按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。

(2)最短作业优先算法:

是以进入系统的作业所提出的“执行时间”为标准,总是优先选

  取执行时间最短的作业。

  (3)响应比高者优先算法:

是在每次调度前都要计算所有被选作业(在后备队列中)的

  响应比,然后选择响应比最高的作业执行。

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

  作业调度算法:

采用基于先来先服务的调度算法。

可以参考课本中的方法进行设计。

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

  二.实验目的:

  本实验要求用高级语言(C语言实验环境)编写和调试一个或多个作业调度的模拟程

  序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解

  三.实验过程

  单道处理系统作业调度

  1)单道处理程序作业调度实验的源程序:

执行程序:

  2)实验分析:

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

  2、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:

作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。

作业的状态可以是等待W、运行R和完成F三种状态之一。

每个作业的最初状态总是等待W。

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

  3)流程图:

  二.

  最短作业优先算法

  三.高响应比算法

  图一.先来先服务流程图

  4)源程序:

  #include#include#include

  #definegetpchmalloc)#defineNULL0intn;

  floatT1=0,T2=0;inttimes=0;

  structjcb//作业控制块{

  charname[10];//作业名

  intreachtime;//作业到达时间

  intstarttime;//作业开始时间

  intneedtime;//作业需要运行的时间floatsuper;//作业的响应比intfinishtime;//作业完成时间floatcycletime;//作业周转时间

  floatcltime;//作业带权周转时间charstate;//作业状态structjcb*next;//结构体指针}*ready=NULL,*p,*q;

  typedefstructjcbJCB;

  voidinize//初始化界面{

  printf;printf;

  printf;printf;printf;printf;

  printf;printf;getch;}

  voidinital//建立作业控制块队列,先将其排成先来先服务的模式队列{

  inti;

  printf;scanf;

  for{

  p=getpch;

  printf;scanf;getch;

  p->reachtime=i;

  printf;printf;scanf;p->state=‘W’;p->next=NULL;

  ifready=q=p;else{

  q->next=p;

  q=p;}}}

  voiddisp//显示作业运行后的周转时间及带权周转时间等{

  if//显示高响应比算法调度作业后的运行情况{

  printf;printf;printf;printf;printf;printf;getch;}

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

  printf;printf;printf;printf;printf;getch;}}

  voidrunning//运行作业{

  if//先将要运行的作业从队列中分离出来{

  ready=p->next;p->next=NULL;}else{

  q=ready;

  whileq=q->next;q->next=p->next;}

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

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

  p->cycletime=;p->cltime=;T1+=p->cycletime;T2+=p->cltime;

  disp;//调用disp函数,显示作业运行情况times+=p->needtime;p->state=‘F’;

  printf;

  free;//释放运行后的作业getch;}

  voidsuper//计算队列中作业的高响应比{

  JCB*padv;padv=ready;do{

  if

  padv->super=/padv->needtimepadv=padv->next;}while;}

  voidfinal//最后打印作业的平均周转时间,平均带权周转时间{

  floats,t;t=T1/n;s=T2/n;getch;

  printf;

  printf;

  printf;}

  voidhrn//高响应比算法{

  JCB*min;inti,iden;system;inital;

  for{

  p=min=ready;iden=1;

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2