#include <iostream.h>#include <stdio.h>
#include <string.h>
#include<stdlib.h>
void FCFS();     //先来先服务
void SJF();      //短作业优先
void input();  //输入函数
void operation();     //运算输出函数int n; //全局变量 作业输入量double avturn;       //平均周转时间double avdqzz;          //平均带权周转时间 double t=0.0,k=0.0;          //全局变量用来表示总的周转时间和总的带权周转时间struct HomeWork {  int num;                 //作业号  char name;               //进程名 double arrivetime;          //到达时间 double servetime;          //服务时间  double begintime;         //开始时间  double endtime;          //完成时间 double turntime;         //周转时间   double dqzztime;          //带权周转时间 double zgxy;               //最高响应比 }HW[10];   void input() { cout<<"请输入要执行作业的数量:"<<endl; cin>>n;   for(int i=1;i<=n;i++) {  cout<<"请输入第"<<i<<"个作业的数据:"<<endl;  HW[i].num=i;  cout<<"进程名:";    cin>>HW[i].name; cout<<"到达时间:";   cin>>HW[i].arrivetime;  cout<<"服务时间:";   cin>>HW[i].servetime;     } }  void operation(){  for(int i=1;i<=n;i++)  {    if(i==1)    HW[i].begintime=HW[i].arrivetime; //如果是第一个作业开始时间就是到达时间 else     HW[i].begintime=HW[i-1].endtime;//如果不是,则作业的开始时间是前一个的结束时间   HW[i].endtime=HW[i].begintime+HW[i].servetime;  HW[i].turntime=HW[i].endtime-HW[i].arrivetime;  HW[i].dqzztime=HW[i].turntime/HW[i].servetime;       }  for(i=1;i<=n;i++) {   t=t+HW[i].turntime; k=k+HW[i].dqzztime;}  avturn=t/n; avdqzz=k/n;    cout<<"作业序号 进程名 到达时间 服务时间 开始时间 完成时间 周转时间 带权周转时间 "<<endl; for(i=1;i<=n;i++)    cout<<"   "<<HW[i].num<<"     "<<HW[i].name<<"\t\t"<<HW[i].arrivetime<<"  \t"<<HW[i].servetime<<"    \t"<<HW[i].begintime<<"   \t"<<HW[i].endtime<<"    \t"<<HW[i].turntime<<"    \t"<<HW[i].dqzztime<<endl;cout<<"平均周转时间:"<<avturn<<endl; cout<<"平均带权周转时间:"<<avdqzz<<endl; }  void FCFS() {  input();operation(); t=0.0; k=0.0;}   void SJF(){  input();int no;                    //作业号 double tjtime;             //提交时间 double zxtime;             //执行时间 for(int i=2;i<=n;i++)   for(int j=i+1;j<=n;j++)   {    if(HW[i].servetime>HW[j].servetime){     no=HW[i].num;    HW[i].num=HW[j].num;  HW[j].num=no;                //作业号互换   tjtime=HW[i].arrivetime;     HW[i].arrivetime=HW[j].arrivetime;    HW[j].arrivetime=tjtime;                 //作业到达时间互换 zxtime=HW[i].servetime;          HW[i].servetime=HW[j].servetime;    HW[j].servetime=zxtime;                    //作业服务时间互换    }   }   operation(); t=0.0; k=0.0; }
void show()
{cout<<"\n*********************1.先来先服务(FCFS)算法*********************\n";cout<<"\n*********************2.短作业优先(SJF)算法*********************\n";cout<<"\n*********************0.    exit             *********************\n";
}void main(){  show();int  num=0;char ch;char y;cout<<"请选择:"<<endl;cin>>num;switch(num){case 1:  FCFS(); break;case 2:    SJF();break;default:return;}}

转载于:https://blog.51cto.com/10738432/1728545

操作系统实验之作业调度算法相关推荐

  1. 操作系统实验七 磁盘调度算法的模拟与实现(C语言)

    实验七 磁盘调度算法的模拟与实现 1 .实验目的 (1) 了解磁盘结构以及磁盘上数据的组织方式. (2) 掌握磁盘访问时间的计算方式. (3) 掌握常用磁盘调度算法及其相关特性. 2 .实验基本知识及 ...

  2. 操作系统实验二(调度算法模拟-先进先出-时间片轮转法-优先服务调度算法)

    实验二 进程调度 一.     实验目的 1.       理解进程运行的并发性. 2.       理解处理器的三级调度. 3.       掌握先来先服务的进程调度算法. 4.       掌握短 ...

  3. 操作系统实验二——时间片轮转调度算法(RR算法)(新进程放队首和队尾两种C++实现)

    情况介绍 基本原理 系统将所有就绪进程按照FCFS的原则,排成一个队列依次调度. 把CPU分配给队首进程,执行一个时间片(10-100ms). 时间片用完后,系统计时器发出时钟中断,该进程将被剥夺CP ...

  4. 操作系统实验二——进程调度算法(FCFS、RR)

    目录 进程调度算法 FCFS算法代码 RR算法代码 进程调度算法 FCFS算法代码 #include <stdio.h> #include <string.h> #includ ...

  5. 操作系统实验六:作业调度算法模拟

    一.实验目的 (1)掌握周转时间.等待时间.平均周转时间等概念及其计算方法. (2)理解五种常用的进程调度算法(FCFS.SJF.HRRF.HPF.RR),区分算法之间的差异性,并用C语言模拟实现各算 ...

  6. 操作系统实验 作业调度算法 先来先服务FCFS调度算法

    作业调度算法 先来先服务FCFS调度算法 作业调度的原理: 非抢占调度 把作业从外存调入内存 作业调度算法: 先来先服务FCFS 短作业优先SJF 静态优先级调度 高响应比优先调度 实验原理 作业调度 ...

  7. 操作系统第一次实验-短作业优先调度算法

    一.实验目的: 目的:了解并掌握作业调度的功能,熟悉并掌握各种作业调度算法. 任务:模拟实现先来先服务或者短作业优先调度算法. 二.实验内容: 模拟实现SJF调度. 设置作业体:作业名,作业的到达时间 ...

  8. 作业调度算法--高响应比优先 操作系统_处理器管理_编程题

    操作系统_处理器管理_编程题 作业调度算法–高响应比优先 输入N个作业,输入每个的作业名字,到达的时间,服务的时间,根据高响应比优先算法,计算出每个作业的完成的时间,周转的时间,带权周转的时间(其中保 ...

  9. 作业调度算法--短作业优先 操作系统_处理器管理_编程题

    操作系统_处理器管理_编程题 作业调度算法–短作业优先 输入N个作业,输入每个的作业名字,到达的时间,服务的时间,根据短作业优先算法,计算出每个作业的完成的时间,周转的时间,带权周转的时间(其中保留2 ...

最新文章

  1. 下载python步骤_下载及安装Python详细步骤
  2. ASIHTTPRequest详解 [经典3]
  3. 找到bug的根源,问五次为什么
  4. 关于mybatis的association和collection主键映射问题
  5. 一篇综述带你全面了解课程学习(Curriculum Learning)
  6. 高通、腾讯游戏牵手 运用5G等技术升级游戏体验
  7. 如何测试W5300的内部TX/RX存储器?
  8. XILINX FPGA数字信号处理——3、数字的表示和运算的实现
  9. Live 2D所有模型展示图
  10. Java代码解压rar文件
  11. python—scrapy框架爬虫—链家二手房数据
  12. 神仙项目,轻松上手了解前后端分离!
  13. 关于1-n中缺失的1个数字算法的优化
  14. [C语言]扫雷游戏(Mine Sweeper)
  15. input 测试工具 --evtest
  16. springboot网吧管理系统
  17. 【Box3引擎摄像机扩展】Box3CameraLag Box3CameraBessel
  18. solidworks模型如何进行1/4剖面
  19. 光电耦合器型号(FOD3120,TLP350,TLP250)介绍应用实例精讲
  20. MSP430单片机各种寄存器总结(2)——UCS

热门文章

  1. 鱼油账号记录程序 - 零基础入门学习Delphi38
  2. vue使用px2rem
  3. 关于学习Mongodb的几篇文章
  4. Streaming源码解读之接收流数据的全生命周期
  5. Console.ReadLine(); 获取用户输入内容
  6. 高性能 Windows C++ 通用组件 VC-Logger v2.0.3 正式发布
  7. 【转载】wpf学习笔记1
  8. 用tabbar mode为Emacs建立ta
  9. mysqld启动报错
  10. 11月百度面试题(社招)