资源简介
这是操作系统的全部实验 内容丰富 外加源代码 报告
欢迎下载
代码片段和文件信息
//进程调度 时间片轮转调度算法源代码
#include
#include
#define MAX 4 //进程数量
#define RR 3 //时间片大小
/*时间片轮转算法*/
struct pro
{
int num;
int arriveTime;
int burst;
int rt; //记录进程被运行的次数
struct pro *next;
};
int TOTALTIME; //记录所有进程的总时间
//函数声明
struct pro* creatList();
void insert(struct pro *headstruct pro *s);
struct pro* searchByAT(struct pro *headint AT);
void del(struct pro* p);
int getCount(struct pro *headint time);
struct pro* searchEnd(struct pro *head);
void move(struct pro *headFstruct pro *headTint n);
struct pro* creatList() //创建链表,按照进程的到达时间排列记录所有进程的信息
{
struct pro* head=(struct pro*)malloc(sizeof(struct pro));
head->next=NULL;
struct pro* s;
int i;
TOTALTIME=0;
for(i=0;i {
s=(struct pro*)malloc(sizeof(struct pro));
printf(“请输入进程名(用整数表示):\n“);
scanf(“%d“&(s->num));
printf(“请输入到达时间:\n“);
scanf(“%d“&(s->arriveTime));
printf(“请输入运行时间:\n“);
scanf(“%d“&(s->burst));
TOTALTIME+=s->burst; //计算总时间
s->rt=1; //rt的初始值为1
s->next=NULL;
insert(heads);
}
return head; //到达队列中的进程按照其到达时间的先后顺序排列
}
void insert(struct pro *headstruct pro *s) //插入节点
{
struct pro *p=searchByAT(heads->arriveTime);
s->next=p->next;
p->next=s;
return;
}
struct pro* searchByAT(struct pro *headint AT) //查找第一个到达时间大于等于AT的节点,返回其前一个指针
{
struct pro *p*q;
p=head;
q=head->next;
while(q!=NULL&&q->arriveTime<=AT)
{
p=q;
q=q->next;
}
return p;
}
void del(struct pro* p) //删除p的下一个节点
{
struct pro *tmp;
tmp=p->next;
p->next=tmp->next;
free(tmp);
return;
}
int getCount(struct pro *headint time) //察看在time之前到达但未移动到运行队列的进程数量
{
int count=0;
struct pro *s*t;
s=head;
t=s->next;
while(t!=NULL&&t->arriveTime<=time)
{
s=t;
t=t->next;
count++; //count记录当前时刻到达的进程数
}
return count;
}
struct pro* searchEnd(struct pro *head) //查找并返回循坏队列的尾节点的前一个节点
{
struct pro *p*q;
p=head;
q=head->next;
while(q->next!=head)
{
p=q;
q=q->next;
}
return p;
}
void move(struct pro *headFstruct pro *headTint n) //将headF后的n个节点移动到循环队列headT中
{
struct pro *r*s*t;
s=headF;
t=s->next;
r=t; //r记录要移动的第一个节点
while(n>1)
{
t=t->next;
n--;
}
s->next=t->next; //以上完成从原队列中摘除相关节点rt分别为第一个和最后一个节点
s=searchEnd(headT);
t->next=s->next;
s->next=r;
}
void run(struct pro *head)
{
int time=0; //记录当前时间
int newarrive;//新到达进程数
struct pro *runhead=(struct pro*)malloc(sizeof(struct pro));
runhead->next=runhead; //创建新的循环链表,存放当前就绪队列中的进程
struct pro *p*q;
p=runhead;
q=p->next; //q记录当前应当运行的进程
while(time<=TOTALTIME)
{
newarrive=getCount(headtime);
if(newarrive>0)
move(headrunheadnewarrive); //将head后的newarrive个节点移动到runhead队列中
if(runhead->next==runhead) //就绪队列中没有进程
time++;
else if(q==runhead)
{
p=q;
q=q->next;
}
else
{
printf(“进程名:%d\n“q->num);
printf(“到达时间:%d\n“q->arriveTime);
if(q->rt==1)
printf(“响应时间:%d\n“tim
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 31232 2010-03-10 15:56 操作系统实验\操作系统实验\反馈表.doc
文件 833536 2010-03-10 15:56 操作系统实验\操作系统实验\报告.doc
文件 311808 2009-12-22 13:33 操作系统实验\操作系统实验\实验4\实验4.exe
文件 11595 2009-12-22 13:33 操作系统实验\操作系统实验\实验4\实验4源码.cpp
目录 0 2010-05-19 16:13 操作系统实验\操作系统实验\实验4
文件 12288 2009-12-22 13:19 操作系统实验\操作系统实验\实验3\实验3.exe
文件 6941 2009-12-22 13:19 操作系统实验\操作系统实验\实验3\实验3源码.cpp
目录 0 2010-05-19 16:13 操作系统实验\操作系统实验\实验3
文件 72192 2009-12-22 13:17 操作系统实验\操作系统实验\实验2\实验2.exe
文件 5657 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\实验2源码.cpp
文件 3439 2010-05-07 16:39 操作系统实验\操作系统实验\实验2\实验2源码.dsp
文件 543 2010-05-07 16:43 操作系统实验\操作系统实验\实验2\实验2源码.dsw
文件 41984 2010-05-07 16:43 操作系统实验\操作系统实验\实验2\实验2源码.ncb
文件 48640 2010-05-07 16:43 操作系统实验\操作系统实验\实验2\实验2源码.opt
文件 765 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\实验2源码.plg
文件 33792 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\Debug\vc60.idb
文件 53248 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\Debug\vc60.pdb
文件 184391 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\Debug\实验2源码.exe
文件 191704 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\Debug\实验2源码.ilk
文件 16469 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\Debug\实验2源码.obj
文件 222240 2010-05-07 16:30 操作系统实验\操作系统实验\实验2\Debug\实验2源码.pch
文件 361472 2010-05-07 16:40 操作系统实验\操作系统实验\实验2\Debug\实验2源码.pdb
目录 0 2010-05-19 16:13 操作系统实验\操作系统实验\实验2\Debug
目录 0 2010-05-19 16:13 操作系统实验\操作系统实验\实验2
文件 71168 2009-12-22 13:59 操作系统实验\操作系统实验\实验1\实验1.exe
文件 4099 2009-12-22 13:59 操作系统实验\操作系统实验\实验1\实验1源码.cpp
目录 0 2010-05-19 16:13 操作系统实验\操作系统实验\实验1
目录 0 2010-05-19 16:13 操作系统实验\操作系统实验
目录 0 2010-05-19 16:13 操作系统实验
----------- --------- ---------- ----- ----
............此处省略2个文件信息
相关资源
- 操作系统nachos第二次实验
- 等保2.0三级清单配置.xlsx
- 最小二乘法FORTRAN
- 知名的斯坦福兔子的三维点云数据,
- Qt 之 实现简单截图功能二
- 双振镜二维扫描系统的误差
- MX OPC Server 6.10 安装包链接网盘
- 数据结构 建立二叉树二叉链表存储结
- 变频恒压供水一拖二PLC程序解析
- PANO2VR 的皮肤,带地图导航,三种热点
- 从零开始:AE二次开发中获取A点到B点
- 有限元三维网格自动划分源程序
- 中铁二局测量处理软件
- 上海证券交易所交易规则2020年第二次
- 陈火旺,编译原理第三版答案
- QRGenerator.zip
- USB-SC09-FX三菱编线与8针圆口接线方法
- AutoCAD的.Net插件可添加右键菜单、Ri
- 微机原理 发光二极管按一定规律轮流
- 三菱PLC温度控制
- 输入字符串自动转换二维码,并打印
- 组合数学习题答案
- bluepoint蓝牙上网0.89汉化版
- 双三次Bezier曲面算法
- 单片机基础第三版课后答案_李广弟
- STM32单片机实现二维码显示
- 编译原理 第二版 阿霍 课后答案[1-8章
- 51与adc0832++++信号发生器+可产生正弦波
- 网络工程实践 华为ensp
- 二胎政策对中国人口的影响.pdf
评论
共有 条评论