• 大小: 934KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: 其他
  • 标签: 实验一        +  

资源简介

这是操作系统的全部实验 内容丰富 外加源代码 报告 欢迎下载

资源截图

代码片段和文件信息

//进程调度 时间片轮转调度算法源代码
#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个文件信息

评论

共有 条评论