处理机调度模拟程序:选择一个调度算法,实现处理机调度。

来源:百度知道 编辑:UC知道 时间:2024/06/05 23:44:56
设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。
设计要求:
1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。
2)可选择进程数量
3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。
下面这个不行啊,能不能再长点的,加注释和流程图的.

七、源程序:

#include <stdio.h>

int m1; //共享变量
int m2; //共享变量
struct{
int id; //进程标号
int waiter1; //指针,用于标识等待队列的下一个进程
int priority; //进程优先级
char status; //进程状态
}pcb[4];
struct{
int value; //信号量的值
int waiter2; //指针,用于标识等待此信号量队列的第一个进程
}sem[3];
char stack[11][4]; //现场保护堆栈
int i; //cpu中的通用寄存器
int ep; //当前运行进程指针
char addr; //程序运行时的地址
void init(); //初始化
int find(); //找出就绪进程
int w2(); //
int process1(); //进程1
int process2(); //进程2
int process3(); //进程3
int p(int,int ,char); //P原语
int v(int,int ,char); //V原语

main()
{

init();
printf("系统程序开始执行\n");
for(;;){
if(find()!=0) //找出就绪进程
w2(); //进程调度
else break;//退出程序
}
printf("系统程序结束\n");
}

void init() //初始化进程
{
int j,k;
pcb[0].status=&