自己写的小程序,实验作业,有什么不对的地方还请高手指导啊啊啊啊-------------
#include<stdio.h>
#include<stdlib.h>
typedef struct process {
int symbol;//进程号
struct process *conn;//指向下一个进程的指针,但是饿哦写的程序中没有用到,只是赋了值
int ordernum;//优先数,通过优先数排序决定进程占用cpu顺序,后面的程序中党两个进程优先数相等时,也要交换位置
int cpunum;//占用cpu的时间,初值为0
int neednum;//进程所需要执行的时间
int state;//进程状态,1表示ready,2表示running,3表示over,初始化时为1
}pro;
#include<stdlib.h>
typedef struct process {
int symbol;//进程号
struct process *conn;//指向下一个进程的指针,但是饿哦写的程序中没有用到,只是赋了值
int ordernum;//优先数,通过优先数排序决定进程占用cpu顺序,后面的程序中党两个进程优先数相等时,也要交换位置
int cpunum;//占用cpu的时间,初值为0
int neednum;//进程所需要执行的时间
int state;//进程状态,1表示ready,2表示running,3表示over,初始化时为1
}pro;
void createpro(pro *p) {//此函数通过输入创建进程
int sy, co, ord, cpu, nee, stat;//刚开始的时候输入写的比较复杂。。。
printf("Symbol");
scanf("%d",&sy);
printf("ordernum");
scanf("%d",&ord);
printf("cpunum");
scanf("%d",&cpu);
printf("neednum");
scanf("%d",&nee);
printf("state");
scanf("%d",&stat);
p->symbol = sy;
p->ordernum = ord;
p->cpunum = cpu;
p->neednum = nee;
p->state = stat;
}
//另外下面注释掉的三个函数都是一开始不知道怎么给结构体排序写的。。。
/*
测试数据
1
12
0
3
1
2
9
0
4
1
3
6
0
2
1
4
3
0
3
1
12
0
3
1
2
9
0
4
1
3
6
0
2
1
4
3
0
3
1
*/
/*int reordernum(pro* p) {
return p->ordernum;
/*int reordernum(pro* p) {
return p->ordernum;
}*/
void inorder(pro *p[], int n) {//进程根据ordernum进行冒泡排序
int i = 0, j;
pro *t;
for (i = 0; i<n - 1; i++) {
for (j = i + 1; j<n; j++) {
if (p[i]->ordernum<=p[j]->ordernum) {
t = p[i];
p[i] = p[j];
p[j] = t;
}
}
}
int i = 0, j;
pro *t;
for (i = 0; i<n - 1; i++) {
for (j = i + 1; j<n; j++) {
if (p[i]->ordernum<=p[j]->ordernum) {
t = p[i];
p[i] = p[j];
p[j] = t;
}
}
}
}
/*void ordernow(pro *pp[], int n, int p[]) {
int i = 0;
for (i = 0; i<n; i++) {
p[i] = pp[i]->ordernum;
}
将ordernum保存到p数组中,然后给p数组排序,然
int i = 0;
for (i = 0; i<n; i++) {
p[i] = pp[i]->ordernum;
}
将ordernum保存到p数组中,然后给p数组排序,然

本文探讨了进程调度中的优先数算法,重点讲解了在系统中如何处理优先级高的进程,尤其是当进程进入over状态但未从调度队列中删除的情况。内容包括如何将这些进程转移到gameover数组,确保调度的公平性和效率。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



