设计要求

编程实现进程调度算法的基本过程,设计要求:
(1)能够选择进程调度算法(先来先服务、短进程优先算法和高响应比优先算法)。
(2)可以输入进程数目(至少3个进程),以及各进程的提交时间和运行时间。
(3)能够显示调度过程及相应时间。

设计思路

*定义一个结构体代表进程包括进程的名称,提交时间,运行时间,开始时间,结束时间,周转时间,带权周转时间。
* 分别创建3个函数来完成各个调用进程的算法。
其中各个算法包括进程的接收,排序,计算,输出结果
先来先服务算法最基础,短进程优先算法相比前者需要进一步确定第一个进程,而高相应比算法更进一步,需要同时排序和计算。
*最后主函数完成程序的引导。
如果这篇文章帮助到了你,请点一下赞,让我知道有人因此受益。

源代码

#define PCBNUM 4
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct PCB
{int ID;double tijiao;double yunxing;double kaishi;double jieshu;double zhouzhuan;double daiqvanzhouzhaun;
};void xianlai(){      //先来先服务PCB s[PCBNUM];PCB Q;cout<<"一共4个进程"<<endl;cout<<"请输入每个进程的进程名,提交时间,运行时长(中间用空格分开)"<<endl;//接受值for(int i=0;i<PCBNUM;i++){cin>>s[i].ID >>s[i].tijiao >>s[i].yunxing ;}cout<<"名称    提交    运行    开始    结束    周转    带权周转"<<endl;for(int i=0;i<PCBNUM-1;i++){                       //p排序for(int j=0;j<PCBNUM-1;j++){if(s[j].tijiao >s[j+1].tijiao ){Q=s[j];s[j]=s[j+1];s[j+1]=Q;}}}for(int i=0;i<PCBNUM;i++){     //计算if(i==0)s[i].kaishi=s[i].tijiao;else{s[i].kaishi =s[i-1].jieshu;}s[i].jieshu =s[i].kaishi +s[i].yunxing;s[i].zhouzhuan=s[i].jieshu -s[i].tijiao;s[i].daiqvanzhouzhaun =s[i].zhouzhuan/s[i].yunxing ;}for(int i=0;i<PCBNUM;i++){        //输出cout<<s[i].ID<<"\t"<<s[i].tijiao<<"\t"<<s[i].yunxing<<"\t"<<s[i].kaishi<<"\t"<<s[i].jieshu<<"\t"<<s[i].zhouzhuan<<"\t"<<s[i].daiqvanzhouzhaun<<endl;}}void duanjincheng(){      //短进程优先PCB s[PCBNUM];PCB Q;cout<<"一共4个进程"<<endl;cout<<"请输入每个进程的进程名,提交时间,运行时长(中间用空格分开)"<<endl;//输入值for(int i=0;i<PCBNUM;i++){cin>>s[i].ID >>s[i].tijiao >>s[i].yunxing ;}cout<<"名称    提交    运行    开始    结束    周转    带权周转"<<endl;for(int r=PCBNUM-1;r>0;r--){            //选出第一行if(s[r-1].tijiao  >s[r].tijiao){Q=s[r];s[r]=s[r-1];s[r-1]=Q;}}for(int i=1;i<PCBNUM-1;i++){        //排序for(int j=1;j<PCBNUM-1;j++){{if(s[j].yunxing >s[j+1].yunxing ){Q=s[j];s[j]=s[j+1];s[j+1]=Q;}}}}for(int i=0;i<PCBNUM;i++){     //计算if(i==0)s[i].kaishi=s[i].tijiao;elses[i].kaishi =s[i-1].jieshu;s[i].jieshu =s[i].kaishi +s[i].yunxing;s[i].zhouzhuan=s[i].jieshu -s[i].tijiao;s[i].daiqvanzhouzhaun =s[i].zhouzhuan/s[i].yunxing ;}for(int i=0;i<PCBNUM;i++){        //输出cout<<s[i].ID<<"\t"<<s[i].tijiao<<"\t"<<s[i].yunxing<<"\t"<<s[i].kaishi<<"\t"<<s[i].jieshu<<"\t"<<s[i].zhouzhuan<<"\t"<<s[i].daiqvanzhouzhaun<<endl;}}void gaoxiangying(){          //高相应比PCB s[PCBNUM];PCB Q;int i;double R[PCBNUM];cout<<"一共4个进程"<<endl;cout<<"请输入每个进程的进程名,提交时间,运行时长(中间用空格分开)"<<endl;//输入值for(int i=0;i<PCBNUM;i++){cin>>s[i].ID >>s[i].tijiao >>s[i].yunxing ;}cout<<"名称    提交    运行    开始    结束    周转    带权周转"<<endl;for(int r=PCBNUM-1;r>0;r--){            //选出第一行if(s[r-1].tijiao  >s[r].tijiao){Q=s[r];s[r]=s[r-1];s[r-1]=Q;}}for( i=0;i<PCBNUM-1;i++){               //排序for(int j=1;j<PCBNUM-1;j++){for(int o=1;o<PCBNUM;o++){      //计算相应比R[i]=(s[i-1].jieshu-s[i].tijiao)/s[i].yunxing+1;}if(R[i]<R[i+1] ){Q=s[j];s[j]=s[j+1];s[j+1]=Q;}}for( i=0;i<PCBNUM;i++){     //计算if(i==0)s[i].kaishi=s[i].tijiao;elses[i].kaishi =s[i-1].jieshu;s[i].jieshu =s[i].kaishi +s[i].yunxing;s[i].zhouzhuan=s[i].jieshu -s[i].tijiao;s[i].daiqvanzhouzhaun =s[i].zhouzhuan/s[i].yunxing ;}}for( i=0;i<PCBNUM;i++){        //输出cout<<s[i].ID<<"\t"<<s[i].tijiao<<"\t"<<s[i].yunxing<<"\t"<<s[i].kaishi<<"\t"<<s[i].jieshu<<"\t"<<s[i].zhouzhuan<<"\t"<<s[i].daiqvanzhouzhaun<<endl;}}void main(){cout<<"*****************************************欢迎使用程序调度模拟程序******************************************************"<<endl;cout<<"请输入你要调用的算法:"<<endl;cout<<"输入1调用先来先服务算法     ";cout<<"输入2调用短进程优先算法     ";cout<<"输入3调用高相应比算法      "<<endl;int q;cin>>q;cout<<q;if(q==1){xianlai();}else if(q==2){ duanjincheng();}else { gaoxiangying();}
}

运行检验

调用高相应比算法。
结果正确

操作系统--进程调度实验报告相关推荐

  1. 操作系统-进程调度实验报告

    1.实现四种不同及进程调度算法: 先来先服务.时间片轮转调.优先级调度以及短作业优先调度算法. 2.通过实验理解有关进程控制块,进程队列等的概念. 1.运行素材中的代码,观察其执行结果是否正确?各个调 ...

  2. 《操作系统》实验报告——熟悉Linux基础命令及进程管理

    理论知识 Linux--进程管理 Linux--Linux C语言编程基础知识 手把手教你安装Linux虚拟机 一.实验目的 (1)加深对进程概念的理解,明确进程和程序的区别. (2)进一步认识并发执 ...

  3. 进程同步算法实现实验报告Linux,操作系统进程同步实验报告.doc

    操作系统进程同步实验报告 实验三:进程同步实验 一.实验任务: (1)掌握操作系统的进程同步原理: (2)熟悉linux的进程同步原语: (3)设计程序,实现经典进程同步问题. 二.实验原理: (1) ...

  4. 东北大学软件学院操作系统v实验报告

    课程编号:B080000070     <操作系统>实验报告             姓名   学号   班级   指导教师   实验名称 <操作系统>实验 开设学期 2016 ...

  5. 课程linux实验报告,Linux操作系统课程实验报告.doc

    Linux操作系统课程实验报告.doc Linux操作系统课程实验报告班级姓名学号指导老师田丽华完成时间2014年7月目录一.实验目的1二.实验要求1三.实验内容1[第一题]1[第二题]2[第三题]4 ...

  6. linux课程实验报告,Linux操作系统课程实验报告

    Linux操作系统课程实验报告 Linux操作系统 课程实验报告 班级: 姓名: 学号: 指导老师:田丽华 完成时间:2014年7月 目录 一.实验目的1 二.实验要求1 三.实验内容1 [第一题]1 ...

  7. 操作系统 作业调度实验报告

    题目要求 一. 实验目的 用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解. 二. 例题 为单道批处理系统设计一个作业调度程序. 由于在单道批处理系统中,作业一投入运行,它 ...

  8. 《操作系统》实验报告——主存空间的分配与回收

    理论知识 Linux--Linux C语言编程基础知识 一.实验目的 采用可变式分区管理,使用最佳适应算法实现主存的分配与回收. 通过本次实验,帮助学生理解在可变式分区管理方式下,如何实现主存空间的分 ...

  9. 计算机系统结构实验报告Linux,计算机操作系统体系结构实验报告.doc

    操作系统实验报告 实验目的: 随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构.层次结构. ...

最新文章

  1. python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...
  2. 时玉:微生物地理分布的分析方法与技术
  3. 人工智能要多久才能理解动物?
  4. mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程
  5. 北京排查利用数据中心挖矿,IDC矿场受影响较大
  6. list筛选数据_Power Query如何对于各类混合格式的数据展开?
  7. 全量复制 增量复制 异步复制
  8. SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
  9. Java 类的特性2
  10. Microsoft Edge 浏览器开始支持webkit私有样式
  11. Python中出现:AttributeError: module 'numpy' has no attribute 'dtype'问题解决
  12. ECS开放批量创建实例接口RunInstances
  13. Excel VBA 编程技巧系列(一)替换字符串、加解密字符串和等待外部程序完成
  14. fastai学习:06_multicat Questionnarie
  15. 【http】记一次http无法连通总是超时的问题
  16. 苹果笔记本单独安装win10
  17. Unity3D基础23:TrailRenderer特效
  18. 主流数据持久层框架特性与实践
  19. 居民小区变配电电力监控系统-安科瑞苏月婷
  20. html网页图片下方空隙太大,网页制作中图片上下间为什么会有空隙?解决办法...

热门文章

  1. OTFS白皮书-翻译
  2. java ctr_分组密码_计数器(CTR)模式_原理及java实现
  3. 选中一次格式刷,即可多次使用WPS格式刷的办法
  4. Invalidate()详解
  5. Android开发中WIFI和GPRS网络的切换
  6. SSH登录的两种方式
  7. Android实现snmp协议(一)
  8. 正则表达式匹配非某字符串的情况
  9. Composite(组合模式)
  10. js html页面原生js横向打印