操作系统--进程调度实验报告
设计要求
编程实现进程调度算法的基本过程,设计要求:
(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.实现四种不同及进程调度算法: 先来先服务.时间片轮转调.优先级调度以及短作业优先调度算法. 2.通过实验理解有关进程控制块,进程队列等的概念. 1.运行素材中的代码,观察其执行结果是否正确?各个调 ...
- 《操作系统》实验报告——熟悉Linux基础命令及进程管理
理论知识 Linux--进程管理 Linux--Linux C语言编程基础知识 手把手教你安装Linux虚拟机 一.实验目的 (1)加深对进程概念的理解,明确进程和程序的区别. (2)进一步认识并发执 ...
- 进程同步算法实现实验报告Linux,操作系统进程同步实验报告.doc
操作系统进程同步实验报告 实验三:进程同步实验 一.实验任务: (1)掌握操作系统的进程同步原理: (2)熟悉linux的进程同步原语: (3)设计程序,实现经典进程同步问题. 二.实验原理: (1) ...
- 东北大学软件学院操作系统v实验报告
课程编号:B080000070 <操作系统>实验报告 姓名 学号 班级 指导教师 实验名称 <操作系统>实验 开设学期 2016 ...
- 课程linux实验报告,Linux操作系统课程实验报告.doc
Linux操作系统课程实验报告.doc Linux操作系统课程实验报告班级姓名学号指导老师田丽华完成时间2014年7月目录一.实验目的1二.实验要求1三.实验内容1[第一题]1[第二题]2[第三题]4 ...
- linux课程实验报告,Linux操作系统课程实验报告
Linux操作系统课程实验报告 Linux操作系统 课程实验报告 班级: 姓名: 学号: 指导老师:田丽华 完成时间:2014年7月 目录 一.实验目的1 二.实验要求1 三.实验内容1 [第一题]1 ...
- 操作系统 作业调度实验报告
题目要求 一. 实验目的 用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解. 二. 例题 为单道批处理系统设计一个作业调度程序. 由于在单道批处理系统中,作业一投入运行,它 ...
- 《操作系统》实验报告——主存空间的分配与回收
理论知识 Linux--Linux C语言编程基础知识 一.实验目的 采用可变式分区管理,使用最佳适应算法实现主存的分配与回收. 通过本次实验,帮助学生理解在可变式分区管理方式下,如何实现主存空间的分 ...
- 计算机系统结构实验报告Linux,计算机操作系统体系结构实验报告.doc
操作系统实验报告 实验目的: 随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构.层次结构. ...
最新文章
- python输入若干个整数试找出其中的最大数和最小数_Python编程的若干个经典小技巧...
- 时玉:微生物地理分布的分析方法与技术
- 人工智能要多久才能理解动物?
- mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程
- 北京排查利用数据中心挖矿,IDC矿场受影响较大
- list筛选数据_Power Query如何对于各类混合格式的数据展开?
- 全量复制 增量复制 异步复制
- SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
- Java 类的特性2
- Microsoft Edge 浏览器开始支持webkit私有样式
- Python中出现:AttributeError: module 'numpy' has no attribute 'dtype'问题解决
- ECS开放批量创建实例接口RunInstances
- Excel VBA 编程技巧系列(一)替换字符串、加解密字符串和等待外部程序完成
- fastai学习:06_multicat Questionnarie
- 【http】记一次http无法连通总是超时的问题
- 苹果笔记本单独安装win10
- Unity3D基础23:TrailRenderer特效
- 主流数据持久层框架特性与实践
- 居民小区变配电电力监控系统-安科瑞苏月婷
- html网页图片下方空隙太大,网页制作中图片上下间为什么会有空隙?解决办法...