进程调度算法模拟程序设计C++
来源:互联网 发布:nodejs 引入js文件 编辑:程序博客网 时间:2024/06/05 16:24
#include <iostream>#include <windows.h>using namespace std;//#define N 3typedef struct{int ID;int PRIORITY;int CPUTIME;int ALLTIME;int STARTBLOCK;int BLOCKTIME;int STATE;int REACH;int TIME;}PROCESS;void textColor(int color){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);}int main(){int i, max, time, l, ll, time1, flag = 0, total = 0, N, server[10], sum = 0;PROCESS pro[10];textColor(13);cout << "注意:本程序状态代表如下" << endl << "0-运行 1-阻塞 2-就绪 3-结束 4-未到达" << endl << endl;textColor(15);cout << "输入进程数:";cin >> N;cout << "输入时间片长度。";cin >> time;cout << "请输入各进程初始状态:" << endl;cout << "ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME" << endl;for (i = 0; i < N; i++){pro[i].CPUTIME = 0;pro[i].TIME = 0;cin >> pro[i].ID >> pro[i].PRIORITY >> pro[i].REACH;cin >> pro[i].ALLTIME >> pro[i].STARTBLOCK >> pro[i].BLOCKTIME;server[i] = pro[i].ALLTIME;if (pro[i].REACH == 0)pro[i].STATE = 0;else pro[i].STATE = 4;}do{cout << endl << "当前时间为" << total;textColor(12);cout << endl << "========================各进程状态为======================" << endl;textColor(15);cout << "ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE" << endl;for (i = 0; i < N; i++){cout << pro[i].ID << " " << pro[i].PRIORITY << " " << pro[i].CPUTIME << " ";cout << pro[i].ALLTIME << " " << pro[i].STARTBLOCK << " " << pro[i].STATE << " ";total += time;}for (i = 0; i < N; i++){if (pro[i].STATE == 4 && pro[i].REACH < total){pro[i].STATE = 1;}}for (i = 0; i < N; i++){time1 = pro[i].ALLTIME;if (pro[i].STATE == 0){if (pro[i].ALLTIME <= time){//pro[i].CPUTIME+=time1;pro[i].ALLTIME = 0;pro[i].STATE = 3;pro[i].TIME = total - time + time1;}else{//pro[i].CPUTIME+=time;pro[i].ALLTIME = time;pro[i].STARTBLOCK--;if (pro[i].STARTBLOCK == 0){pro[i].STATE = 1;pro[i].BLOCKTIME = time1;pro[i].STARTBLOCK = time1;}pro[i].PRIORITY = 3;pro[i].TIME = total;}}if (pro[i].STATE == 1){pro[i].BLOCKTIME--;if (pro[i].BLOCKTIME == 0)pro[i].STATE = 2;pro[i].TIME = total;}if(pro[i].STATE == 2){//pro[i].CPUTIME+=time;pro[i].PRIORITY++;pro[i].TIME = total;}}max = -100;ll = -1;l = -1;for (i = 0; i < N; i++){if (pro[i].PRIORITY > max && (pro[i].STATE = 0 || pro[i].STATE == 2)){l = i;max = pro[i].PRIORITY;}if (pro[i].STATE == 0)ll = i;}if (l != -1 && l != ll)pro[l].STATE = 1;if (ll != -1)pro[ll].STATE = 2;flag = 0;if (flag ==0){break;}}while (1);cout << endl << "当前时间为" << total;textColor(12);cout << endl << "========================各进程状态为======================" << endl;textColor(15);cout << "ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE" << endl;for (i = 0; i < N; i++){cout << pro[i].ID << " " << pro[i].PRIORITY << " " << pro[i].CPUTIME << " ";cout << pro[i].ALLTIME << " " << pro[i].STARTBLOCK << " " << pro[i].STATE << " ";total += time;}cout << "各个进程运行结束!" << endl;cout << "进程号 到达时间 结束时间 周转时间 带权周转时间" << endl;textColor(10);for (i = 0; i < N;i++){ cout << pro[i].ID << " " << pro[i].REACH << " " << pro[i].TIME << " " << pro[i].TIME - pro[i].REACH << " " << (float)(pro[i].TIME - pro[i].REACH) / server[i] << " ";sum += pro[i].TIME - pro[i].REACH;}cout << "平均周转时间为:" << (float)sum / N << endl;textColor(15);return 0;}
0 0
- 进程调度算法模拟程序设计C++
- 进程调度模拟程序设计-----FCFS算法简单实现
- 进程调度模拟算法
- 模拟进程调度算法
- 进程调度模拟算法
- C 模拟进程调度
- 基于优先级抢占和周期调度的进程调度算法的模拟程序设计
- C语言模拟最高优先数优先进程调度算法
- 模拟操作系统进程调度算法
- 模拟进程调度管理[C#]
- Linux编程:模拟进程调度算法
- 单处理器进程调度算法的模拟
- 进程调度---c模拟程序实现
- 进程调度模拟(C语言)
- 用c语言模拟进程调度
- 模拟先来先服务调度算法(C++)
- 操作系统—C语言进程调度模拟.c
- 进程调度模拟程序
- linux下面下载整个网站
- Sybase 分页查询语句
- SSH中 struts hibernate spring 各起什么作用?
- 皮肤简介
- Unity3D NGUI 自适应屏幕
- 进程调度算法模拟程序设计C++
- C/C++中常用的字符串处理函数和内存字符串函数
- linux 查看服务器配置
- 第一个Object-C类
- org.apache.commons.fileupload实现文件上传
- UINavigationController学习记录
- PostgreSQL 字符串操作函数[转]
- 折纸游戏
- JSP九大内置对象及四个作用域