77范文网 - 专业文章范例文档资料分享平台

进程调度算法模拟-(2)

来源:网络收集 时间:2018-11-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

四.编码实现

1.先进先出算法(源程序) #include #include #include

using namespace std;

struct fcfs{

char name[10]; float arrivetime; float servicetime; float starttime; float finishtime; float zztime; float dqzztime; };

fcfs a[100];

void input(fcfs *p,int N) {

int i;

cout<

printf(\ 请您输入进程的 名字 到达时间 服务时间: (例如: a 0 100)\\n\\n\ for(i=0;i<=N-1;i++) { printf(\ 请您输入进程%d的信息:\\t\ scanf(\ } }

void Print(fcfs *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float dqzztime,int N) {

int k;

printf(\调用先来先服务算法以后进程运行的顺序是: \ printf(\ for(k=1;k

}

cout<

printf(\ 具体进程调度信息:\\n\

printf(\进程名 到达时间 服务时间 开始时间 结束时间 周转时间 带权周转时间\\n\

for(k=0;k<=N-1;k++) {

printf(\ %-.2f\\t %-.2f\\t %-.2f\\t %-.2f\\t %-.2f\\n\p[k].arrivetime,

p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime); }

getchar(); //此处必须要有这个函数,否则就看不到显示器上面的输出,可以看到的结果只是一闪而过的一个框剪 }

void sort(fcfs *p,int N) //排序 {

for(int i=0;i<=N-1;i++) for(int j=0;j<=i;j++)

if(p[i].arrivetime

fcfs temp; temp=p[i]; p[i]=p[j]; p[j]=temp; } }

void deal(fcfs *p, float arrivetime,float servicetime,float starttime,float finishtime,float &zztime,float &dqzztime,int N) //运行阶段 {

int k;

for(k=0;k<=N-1;k++) {

if(k==0) { p[k].starttime=p[k].arrivetime; p[k].finishtime=p[k].arrivetime+p[k].servicetime;}

else {

p[k].starttime=p[k-1].finishtime;

p[k].finishtime=p[k-1].finishtime+p[k].servicetime;} }

for(k=0;k<=N-1;k++) { p[k].zztime=p[k].finishtime-p[k].arrivetime; p[k].dqzztime=p[k].zztime/p[k].servicetime; } }

void FCFS(fcfs *p,int N) { float

arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0; sort(p,N);

deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); getchar(); }

char menu() {

char cse1; while(1) {

system(\ fflush(stdin); cout<

cout<<\*********欢<<<<<<<<<<< >>>>>>>>>>>>迎********* ||\

cout<<\ ||\

cout<<\ 进程调度算法模拟\

cout<<\ ||\

cout<<\ 先来先服务调度算法 \

cout<<\ ||\

cout<<\<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>> ||\ cout<

int N;

cout<

printf(\先来先服务调度算法@@@!!!--->>\\n\

cout<

printf(\输入进程数目:\ scanf(\ input(a,N); FCFS(a,N); cse1=getchar(); system(\

return EXIT_SUCCESS; return cse1; } }

int main(){ menu(); }

2时间片轮转算法(源程序) #include #include #include #include

static int id = 0;

int process_num; int current_process;

struct pcb {

char name[20]; int id;

char state; int need_time; int run_time; struct pcb *next;

}*p, *q, *first_pcb = NULL; typedef struct pcb PCB;

/* 排序输出各个进程PCB */ void printSort() {

int i;

q = first_pcb;

for(i = 0; i < process_num;) { if(i == q -> id) {

printf(\need_time, q -> run_time); i++;

q = first_pcb; } else {

q = q -> next; if(q == NULL) { q = first_pcb; i++; } } } }

/* 调度一次PCB并显示 */ void showPCB() { int i;

first_pcb -> run_time++; first_pcb -> state = 'r';

/* 进程执行完毕,将其清除出链表 */

if((first_pcb -> run_time) == (first_pcb -> need_time)) { current_process--;

printf(\进程%s已经运行完毕\system(\

first_pcb = first_pcb -> next; if(first_pcb == NULL) {

printf(\所有进程都已经运行完毕\system(\return; }

first_pcb -> state = 'r'; }

system(\

/* 显示运行的进程和就绪的进程 */ q = first_pcb -> next;

printf(\当前运行的进程是:进程%s/n/n\

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库进程调度算法模拟-(2)在线全文阅读。

进程调度算法模拟-(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/310912.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: