资源简介
用C语言实现的多级反馈队列调度算法,操作系统课程作业。用VC6.0调试通过。
代码片段和文件信息
#include
#include
#include
typedef struct node /*进程节点信息*/
{
char name[20]; /*进程的名字*/
int prio; /*进程的优先级*/
int round; /*分配CPU的时间片*/
int cputime; /*CPU执行时间*/
int needtime; /*进程执行所需要的时间*/
char state; /*进程的状态,W——就绪态,R——执行态,F——完成态*/
int count; /*记录执行的次数*/
struct node *next; /*链表指针*/
}PCB;
typedef struct Queue /*多级就绪队列节点信息*/
{
PCB *linkPCB; /*就绪队列中的进程队列指针*/
int prio; /*本就绪队列的优先级*/
int round; /*本就绪队列所分配的时间片*/
struct Queue *next; /*指向下一个就绪队列的链表指针*/
}ReadyQueue;
PCB *run=NULL*finish=NULL; /*定义三个队列,就绪队列,执行队列和完成队列*/
ReadyQueue *Head = NULL; /*定义第一个就绪队列*/
int num; /*进程个数*/
int ReadyNum; /*就绪队列个数*/
void Output(); /*进程信息输出函数*/
void InsertFinish(PCB *in); /*将进程插入到完成队列尾部*/
void InsertPrio(ReadyQueue *in); /*创建就绪队列,规定优先数越小,优先级越低*/
void PrioCreate(); /*创建就绪队列输入函数*/
void GetFirst(ReadyQueue *queue); /*取得某一个就绪队列中的队头进程*/
void InsertLast(PCB *inReadyQueue *queue); /*将进程插入到就绪队列尾部*/
void ProcessCreate(); /*进程创建函数*/
void RoundRun(ReadyQueue *timechip); /*时间片轮转调度算法*/
void MultiDispatch(); /*多级调度算法,每次执行一个时间片*/
int main(void)
{
PrioCreate(); /*创建就绪队列*/
ProcessCreate(); /*创建就绪进程队列*/
MultiDispatch(); /*算法开始*/
Output(); /*输出最终的调度序列*/
return 0;
}
void Output() /*进程信息输出函数*/
{
ReadyQueue *print = Head;
PCB *p;
printf(“进程名\t轮数\tcpu时间\t需要时间\t进程状态\n“);
while(print)
{
if(print ->linkPCB != NULL)
{
p=print ->linkPCB;
while(p)
{
printf(“%s\t%d\t%d\t%d\t\t%c\n“p->namep->round-1p->cputimep->needtimep->state);
p = p->next;
}
}
print = print->next;
}
p = finish;
while(p!=NULL)
{
printf(“%s\t%d\t%d\t%d\t\t%c\n“p->namep->round-1p->cputimep->needtimep->state);
p = p->next;
}
p = run;
while(p!=NULL)
{
printf(“%s\t%d\t%d\t%d\t\t%c\n“p->namep->round-1p->cputimep->needtimep->statep->count);
p = p->next;
}
}
void InsertFinish(PCB *in) /*将进程插入到完成队列尾部*/
{
PCB *fst;
fst = finish;
if(finish == NULL)
{
in->next = finish;
finish = in;
}
else
{
while(fst->next != NULL)
{
fst = fst->next;
}
in ->next = fst ->next;
fst ->next = i
- 上一篇:g711音频编解码(C/C++)实现
- 下一篇:清华大学C++课件
相关资源
- 操作系统课程设计报告模拟文件系统
- 操作系统仿真之内存替换算法
- C++制作加密解密系统
- 操作系统多级反馈队列模拟程序
- Linux操作系统C语言编程入门pd
- 操作系统 虚拟存储器地址转换
- 操作系统的模拟实现 C++编写
- 操作系统课程设计(最佳适应算法的
- MFC实现的操作系统页面置换FIFO、LRU、
- 进程调度的设计与实现图形界面实现
- myshell:操作系统编程-自己用C语言写
- 操作系统 内存分配与回收 C语言模拟
- 操作系统实验——spooling技术
- 操作系统使用C语言链表实现进程管理
- 哲学家进餐实验报告
- 《基于Linux的设备分配及磁盘调度》
- 操作系统生产者与消费者综合性实验
- C语言实现调度算法源代码-山东大学操
- 操作系统文件管理系统c++
- 基于FCFS和SPF的进程管理系统可用资源
- 操作系统课程设计 linux文件系统
- c++写的操作系统课程设计:模拟文件
- 操作系统文件管理系统模拟实现
- 处理机调度的模拟实现_C语言
- 操作系统课程设计,设备分配与磁盘
- 多道批处理系统两级调度的模拟
- 空闲分区链源代码
- 操作系统 4种经典同步互斥问题
- 广工操作系统课设:多道批处理系统
- 操作系统抢占式动态优先级调度算法
评论
共有 条评论