C++实现操作系统进程调度(时间片轮转法)
来源:互联网 发布:网络剧怎么赚钱 编辑:程序博客网 时间:2024/04/30 04:27
要求:
实现操作系统中的进程调度功能。采用时间片轮转法。
代码:
#include<iostream>#include<string>using namespace std;//设置进程的数目static int const MAXNUM=5;//设计进程类class process{public: char processName;//进程的名称 int totalTime;//进程需要的总时间 int remainTime;//进程当下还需要的时间 char status;//进程现在的状态 //进程的构造函数 process(char ProcessName,int TotalTime,int remainTime,char status); //进程的析构函数 ~process();};//进程构造函数的实现process::process(char ProcessName,int TotalTime,int RemainTime,char Status){ processName=ProcessName; totalTime=TotalTime; remainTime=RemainTime; status=Status;}//进程析构函数的实现process::~process(){}//输出函数,它只是简单的遍历进程数组,而不做任何修改void Out(process(&processList)[MAXNUM]){ cout<<"Name\t"<<"TotalTime\t"<<"RequireTime\t"<<"Status"<<endl; for(int i=0;i<MAXNUM;i++){ cout<<processList[i].processName<<"\t"<<processList[i].totalTime<<"\t\t"<<processList[i].remainTime<<"\t\t"<<processList[i].status<<endl; }}//程序的关键//改变进程的当下需要时间并做判断void change(process(&processList)[MAXNUM]){ for(int i=0;i<MAXNUM;i++){ //如果进程现在的状态是完成,那么就不应该再将其还需要时间减1 if(processList[i].status!='F'){ --processList[i].remainTime; }else{ //当其状态为完成状态,跳过这一次修改 continue; } //判断修改以后的进程需要时间是不是小于等于0 if(processList[i].remainTime<=0){ //是的话,将其状态改为完成 processList[i].status='F'; }else { //否则它现在就在执行态 processList[i].status='E'; } //打印修改后的进程数组 Out(processList); //对于那些获取一个时间片以后,仍旧没有完成的进程,应该讲其状态重新换为就绪 if(processList[i].status!='F'){ processList[i].status='W'; } } }int main(){ //sum 记录需要使用多少次change() int sum=0; //初始化进程数组 process processList[]={process('A',3,3,'W'),process('B',4,4,'W'),process('C',2,2,'W'),process('D',1,1,'W'),process('E',5,5,'W')}; cout<<"时间片大小为1,状态位中:W代表就绪(wait),E代表正在执行(execute),F代表已经完成(finish)"<<endl; //打印最初的进程状态 Out(processList); //计算总共需要调用函数的次数 for(int i=0;i<MAXNUM;i++){ sum+=processList[i].totalTime; } //调用函数 for(int i=0;i<sum;i++){ change(processList); } return 0;}
运行结果:
反思:
在写代码之前一定要想清楚问题是什么,这样可以走很少的弯路。本次的代码没有考虑到心性能因素,毕竟是小代码。大家要好好写代码呀!
0 0
- C++实现操作系统进程调度(时间片轮转法)
- 进程调度-时间片轮转法(Java简单实现)
- 操作系统 进程调度 基于时间片轮转(C实现 Visual Stdio 2005)
- 操作系统时间片轮转法进程CPU调度
- 操作系统课程设计(一)时间片轮转实现多线程调度
- 【操作系统 - 2】时间片轮转RR进程调度算法
- 【计算机操作系统】操作系统--时间片轮转(RR)进程调度算法
- 进程调度:时间片轮转调度算法
- c++模拟操作系统进程调度算法(优先数,时间片轮转)
- 【操作系统】学习笔记(三)基于时间片轮转的进程调度算法
- 用C语言实现对N个进程的简单时间片轮转法Round Robin的调度模拟
- 操作系统 时间片轮转调度算法
- 操作系统进程调度模拟程序 基于优先级调度和时间片轮转调度算法
- 时间片轮转调度算法的C语言模拟实现
- 进程调度(二)——时间片轮转算法
- 时间片轮转进程调度算法
- 进程调度-时间片轮转算法
- 进程调度—时间片轮转
- 计算机网络:传输层和网络层
- 常用逻辑芯片
- spring mvc 的Controller类是单例(singleton)的吗?
- 拖欠的Java笔记
- OpenCV 3 - 编译更强大的OpenCV(三) - BUG与崩溃齐飞
- C++实现操作系统进程调度(时间片轮转法)
- [十一]java作业
- 51Nod 1278 相离的圆
- poj 3259 Wormholes
- python file
- Spring MVC 静态概念
- (笔记)Spring MVC学习指南_数据绑定和表单标签库
- python 正则表达式
- Windows内核中的内存管理