资源简介
进程调度时间片轮转+优先级进程调度(操作系统课程设计),用队列数据结构,C++实现。
代码片段和文件信息
#include
#include
#include
using namespace std;
struct PCBNode
{
string name;
float priority; //优先级
float runTime; //总的需要运行时间
float remainTime; //剩下需要运行时间
float arriveTime; //进入就绪队列时间
float startTime; //开始运行时间
float finishTime; //结束运行时间
float totalTime; //周转时间
float weightTotalTime; //带权周转时间
PCBNode * next;
};
struct linkQueue //队列定义
{
PCBNode * front; //队头指针
PCBNode * rear; //队尾指针
};
//队列初始化
void InitialQueue(linkQueue& q);
//输入PCBNode
void Input(PCBNode& p);
//队列构造
void CreateQueue(linkQueue& q int n);
//按时间排序
void SortByTime(linkQueue& q int n);
//时间片轮转算法
void RoundRobin(linkQueue& q int n);
//按优先级排序
void SortByPri(linkQueue& q int n);
//优先级算法
void Priority(linkQueue& q int n);
//打印队列
void PrintQueue(linkQueue& q);
int main()
{
int i = 1;
while (i)
{
char sign;
cout << “算法选择:时间片轮转/T,优先级/P“ < cin >> sign;
if (sign == ‘t‘ || sign == ‘T‘)
{
linkQueue queue;
InitialQueue(queue);
int num = 0;
cout << “输入进程个数“ << endl;
cin >>num;
CreateQueue(queue num);
SortByTime(queue num);
RoundRobin(queue num);
PrintQueue(queue);
}
else if (sign == ‘p‘ || sign == ‘P‘)
{
linkQueue queue;
InitialQueue(queue);
int num = 0;
cout << “输入进程个数“ << endl;
cin >>num;
CreateQueue(queue num);
SortByPri(queue num);
Priority(queue num);
PrintQueue(queue);
}
cout << endl;
cout << “继续请输入1退出请输入0“ < cin >>i;
}
return 0;
}
void InitialQueue(linkQueue& q)
{
q.front = NULL;
q.rear = NULL;
}
void Input(PCBNode& p)
{
//需要用户输入的信息
cout << “输入进程名称“ < cin >> p.name;
cout << “输入到达时间“ << endl;
cin >> p.arriveTime;
cout << “输入运行时间“ << endl;
cin >> p.runTime;
cout << “输入优先级“ << endl;
cin >> p.priority;
//自动初始化的信息
p.startTime = 0; //开始时间
p.finishTime = 0; //完成时间
p.remainTime = p.runTime; //还需要时间
p.totalTime = 0; //周转时间
p.weightTotalTime = 0; //带权周转时间
p.next = NULL;
}
void CreateQueue(linkQueue& q int n)
{
for (int i=0; i {
PCBNode pcb;
Input(pcb);
if (q.front == NULL)
{
PCBNode * temp = new PCBNode;
* temp = pcb;
q.front = q.rear = temp;
q.rear->next = NULL;
}
else
{
//此处必须新建一个PCBNode,否则连不上队列
PCBNode * temp = new PCBNode;
* temp = pcb;
q.rear->next = temp;
q.rear = q.rear->next;
q.rear->next = NULL;
}
}
}
void SortByTime(linkQueue& q int n)
{
//冒泡排序
for (int i=0; i {
PCBNode * before = q.front;
PCBNode * current = before->next;
PCBNode * after = current->next;
while (current != NULL)
{
//对开头三个节点的比较,因为后续节点使用current和after比较
//三个指针向后移一位之后,第二和第三的比较被忽略了,所以将其加在这里。
if (before == q.front)
{
//比较前两个节点
if (before->arriveTime > current->arriveTime)
{
q.front = current;
before->next = curr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10251 2010-01-25 16:00 操作系统(时间片轮转+优先级进程调度)\main.cpp
目录 0 2010-05-08 23:38 操作系统(时间片轮转+优先级进程调度)
----------- --------- ---------- ----- ----
10251 2
- 上一篇:数据压缩LZW算法源代码
- 下一篇:funcode太空战机
相关资源
- 数据压缩LZW算法源代码
- 基于pic单片机的数字pfc源码
- mpu9250驱动C语言源码 磁力计校准算法
- 基于单片机的json编解码源码.zip
- 德国电调源码
- 基于C/C++的局域网聊天室源码
- BezierCurve 贝塞尔曲线计算 c++源码
- C++程序设计语言特别版源码
- AES128 C语言实现源码及应用例程
- 快速傅立叶变换(FFT) C,C#源码
- VTK源码,读取obj、stl点云,生成重建
- astrology32占星源码
- C++ builder 网络传输程序含服务器和客
- 基于单片机花样流水灯原理图及源码
- 利用VC++实现Sutherland-Hodgman算法多边形
- FTP客户端程序设计(基于visual c++)
- C++MFC物资管理系统源码.zip
- 课程设计报告+源码--计算器(C++)
- 用C++实现的CURE算法的源码
- 《c语言代码大全》源代码
- C++写的餐厅管理系统(含源代码和运
- 读取SysListView32.rar源码
- 六种排序算法C语言实现源代码
- C语言100个经典算法题目+源码
- Ftp服务器与客户端VC++完整版源码
- 模仿系统画图的程序源码
- 图像连续拼接算法源码
- 自动寻路贪吃蛇C++源码
- 红外避障小车程序C语言源码.rar
- C语言的小型通用数据库.rar
评论
共有 条评论